Конференция Arenadata
ArenaTech 2026 – для всех, кому интересны технологии Big Data
Приглашаем вас принять участие в технической онлайн-конференции, посвященной работе с большими данными. Участие бесплатно для всех желающих.

В программе 3 блока докладов:

  • СУБД: архитектура и эксплуатация. Обсудим новые возможности Greengage DB и Arenadata DB на его основе, включая hot standby, обзор утилиты изменения кластерной топологии ggrebalance, вопросы безопасности и устранения CVE.
  • Платформа данных: безопасность и Kubernetes в ADH, аналитика в ADQM. Расскажем об управлении секретами и доступом в Arenadata Hyperwave с использованием OpenBao, особенности переноса сервисов в Kubernetes, а также про аналитические методы в инструментах ADQM.
  • Инструменты: кластерный менеджер, документация, ИИ-поиск. Поделимся опытом разработки технической документации (включая интеллектуальный поиск и ИИ-ассистент) и поговорим про развитие нашего кластерного менеджера ADCM.
Онлайн-конференция состоится 29 октября 2026 года, время трансляции: с 12:00 до 19:00 по московскому времени.
Осталось до события

Копирование данных из локальной файловой системы в HDFS

Ниже представлен процесс копирования любых данных из локальной файловой системы в файловую систему Hadoop. Для этого сервис HDFS предоставляет специальную команду hdfs dfs -put согласно следующему синтаксису:

$ hdfs dfs -put <source_path> <destination_path>
ПРИМЕЧАНИЕ

Путь назначения должен указывать на каталог.

Для получения всех аргументов этой команды введите в терминале hdfs dfs -put.

Для копирования файлов с данными из локальной файловой системы в HDFS следуйте дальнейшим шагам:

  1. Убедитесь, что файл с данными, например file1.txt, доступен в локальной файловой системе, например в вашем домашнем каталоге:

    $ ls -a ~

    Вывод на консоль приведен ниже:

    .  ..  .ansible  .bash_history  .bash_logout  .bash_profile  .bashrc  file1.txt  .ssh  test
  2. Проверьте содержимое корневого каталога HDFS:

    $ hdfs dfs -ls /

    Вывод на консоль приведен ниже:

    Found 6 items
    -rw-r--r--   3 hdfs hadoop         20 2021-10-07 13:34 /hadoop
    drwxrwxrwt   - yarn hadoop          0 2021-09-15 16:58 /logs
    drwxr-xr-x   - hdfs hadoop          0 2021-10-12 13:17 /staging
    drwxr-xr-x   - hdfs hadoop          0 2021-09-15 16:57 /system
    drwxrwxrwx   - hdfs hadoop          0 2021-10-20 09:00 /tmp
    drwxr-xr-x   - hdfs hadoop          0 2021-09-27 12:24 /user
  3. Создайте отдельный каталог в HDFS для копирования в него файлов, например:

    $ hdfs dfs -mkdir /how_to_example

    Обычно, если вы работаете как ординарный пользователь, HDFS возвращает сообщение об ошибке следующего содержания:

    mkdir: Permission denied: user=user_name, access=WRITE, inode="/user user_name":centos:centos:drwxr-xr-x

    Обычный пользователь не имеет права на запись в корневой каталог HDFS.

  4. Для преодоления этого ограничения выполните требуемые команды, используя последовательно привилегии пользователей root и hdfs. Для этого прежде всего получите эти привилегии:

    $ sudo -s
    $ su - hdfs
    ВНИМАНИЕ

    Пользоваться привилегиями root небезопасно. Используйте их только при необходимости.

  5. Используя привилегии пользователя hdfs, повторите попытку создания нового каталога с названием hdfsDirectory и убедитесь, что эта операция завершилась успешно:

    $ hdfs dfs -mkdir /hdfsDirectory
    $ hdfs dfs -ls /

    Вывод на консоль приведен ниже:

    Found 7 items
    -rw-r--r--   3 hdfs hadoop         20 2021-10-07 13:34 /hadoop
    drwxr-xr-x   - hdfs hadoop          0 2021-11-18 13:35 /hdfsDirectory
    drwxrwxrwt   - yarn hadoop          0 2021-09-15 16:58 /logs
    drwxr-xr-x   - hdfs hadoop          0 2021-10-12 13:17 /staging
    drwxr-xr-x   - hdfs hadoop          0 2021-09-15 16:57 /system
    drwxrwxrwx   - hdfs hadoop          0 2021-10-20 09:00 /tmp
    drwxr-xr-x   - hdfs hadoop          0 2021-09-27 12:24 /user
  6. Назначьте вашего обычного пользователя, например admin, владельцем нового каталога:

    $ hdfs dfs -chown admin /hdfsDirectory
    $ hdfs dfs -ls /

    Вывод на консоль приведен ниже:

    Found 7 items
    -rw-r--r--   3 hdfs hadoop         20 2021-10-07 13:34 /hadoop
    drwxr-xr-x   - admin hadoop          0 2021-11-18 13:35 /hdfsDirectory
    drwxrwxrwt   - yarn hadoop          0 2021-09-15 16:58 /logs
    drwxr-xr-x   - hdfs hadoop          0 2021-10-12 13:17 /staging
    drwxr-xr-x   - hdfs hadoop          0 2021-09-15 16:57 /system
    drwxrwxrwx   - hdfs hadoop          0 2021-10-20 09:00 /tmp
    drwxr-xr-x   - hdfs hadoop          0 2021-09-27 12:24 /user

    Теперь ваш обычный пользователь является владельцем каталога для приема файлов. Вернитесь в контекст этого пользователя:

    $ exit
    $ exit
  7. Скопируйте файл file1.txt из локальной файловой системы в каталог HDFS и проверьте, что этот файл появился в каталоге назначения. Используйте команду put или copyFromLocal:

    $ hdfs dfs -copyFromLocal ~/file1.txt /hdfsDirectory
    $ hdfs dfs -ls /hdfsDirectory/file1.txt

    Вывод на консоль приведен ниже:

    -rw-r--r--   3 admin hadoop         29 2021-11-18 14:01 /hdfsDirectory/file1.txt
  8. Назначьте право записи в каталог /hdfsDirectory для всех пользователей, если вам необходимо, чтобы все они могли копировать данные в этот каталог:

    $ hdfs dfs -chmod 777 /hdfsDirectory

    Любой пользователь, имеющий доступ к HDFS, теперь может копировать свои файлы и каталоги с файлами в этот каталог.

Выполнив представленные выше шаги, вы успешно скопировали файл file1.txt в HDFS а также обеспечили обычным пользователям право копировать их файлы в определенный каталог HDFS.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней