команда 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
Я уверен, что этот файл существует.
Пожалуйста, помогите мне,Спасибо!
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 /Преимущества:
- вам не нужно
sudo.- вам вообще не нужны соответствующие локальные пользовательские "hdfs".
- вам не нужно ничего копировать или изменять разрешения из-за предыдущих пунктов.
Попробуйте создать dir в HDFS с помощью usig:
$ hadoop fs -mkdir your_dirа затем положить его в него$ hadoop fs -put -put /root/MyHadoop/file1.txt your_dir
Comments