команда hadoop fs-put



Я построил одноузловую среду Hadoop на CentOS, используя хранилище CDH Cloudera. Когда я хочу скопировать локальный файл в HDFS, я использую команду:



sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /


Но результат меня угнетал:



put: '/root/MyHadoop/file1.txt': No such file or directory


Я уверен, что этот файл существует.



Пожалуйста, помогите мне,Спасибо!

685   3  

3 ответов:

Как пользователь hdfs, имеете ли вы права доступа к /root/ (на вашем локальном жестком диске)?. Обычно ты этого не делаешь. Вы должны скопировать file1.txt в то место, где hdfs пользователь имеет права на чтение.

Попробуйте:

cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
sudo -u hdfs hadoop fs -put /tmp/file1.txt /

--- edit:

Взгляните на ответ уборщика романа-Никитченко ниже.

У меня была такая же ситуация, и вот мое решение:

 HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /

Преимущества:

  1. вам не нужно sudo.
  2. вам вообще не нужны соответствующие локальные пользовательские "hdfs".
  3. вам не нужно ничего копировать или изменять разрешения из-за предыдущих пунктов.

Попробуйте создать dir в HDFS с помощью usig: $ hadoop fs -mkdir your_dir а затем положить его в него $ hadoop fs -put -put /root/MyHadoop/file1.txt your_dir

Comments

    Ничего не найдено.