J'ai construit un environnement Hadoop à nœud unique sur CentOS en utilisant le référentiel Cloudera CDH. Lorsque je veux copier un fichier local sur HDFS, j'ai utilisé la commande:
Sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /
Mais le résultat m'a déprimé:
put: '/root/MyHadoop/file1.txt': No such file or directory
Je suis sûr que ce fichier existe.
S'il vous plaît, aidez-moi, merci!
En tant qu'utilisateur hdfs
, avez-vous des droits d'accès à /root/
(sur votre disque dur local)?. Habituellement non. Vous devez copier file1.txt
à un endroit où hdfs
l'utilisateur a des droits de lecture.
Essayer:
cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
Sudo -u hdfs hadoop fs -put /tmp/file1.txt /
--- modifier:
Jetez un oeil à la réponse du nettoyeur roman-nikitchenko ci-dessous .
J'ai eu la même situation et voici ma solution:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
Avantages:
Sudo
.essayez de créer un répertoire dans le HDFS en utilisant: $ hadoop fs -mkdir your_dir
, puis mettez-le dedans $ hadoop fs -put /root/MyHadoop/file1.txt your_dir