Команда hadoop fs -put
Я построил единую среду 6 > Hadoop на CentOS, используя репозиторий Cloudera CDH. Когда я хочу скопировать локальный файл в HDFS, я использовал команду:
sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /
Но результат меня подавил:
put: '/root/MyHadoop/file1.txt': No such file or directory
Я уверен, что этот файл существует.
Пожалуйста, помогите мне, спасибо!
Ответы
Ответ 1
Как пользователь hdfs
, у вас есть права доступа к /root/
(на вашем локальном hdd)?. Обычно вы этого не делаете.
Вы должны скопировать file1.txt
в место, где пользователь hdfs
имеет права на чтение.
Try:
cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
sudo -u hdfs hadoop fs -put /tmp/file1.txt /
--- изменить:
Взгляните на более чистый roman-nikitchenko, ответьте ниже.
Ответ 2
У меня была такая же ситуация, и вот мое решение:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
Преимущества:
- Вам не нужно
sudo
.
- Вам вообще не нужны собственно hdf файлы локального пользователя.
- Вам не нужно ничего копировать или изменять разрешения из-за предыдущих пунктов.
Ответ 3
попробуйте создать каталог в HDFS с помощью команды usig: $ hadoop fs -mkdir your_dir
и затем поместите его в него $ hadoop fs -put/root/MyHadoop/file1.txt your_dir