hadoop fs -mettre la commande
j'ai construit un environnement Hadoop à un seul noeud sur CentOS en utilisant le dépôt CDH de Cloudera. Quand je veux copier un fichier local vers 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.
Merci de m'aider,Merci!
3 réponses
en tant Qu'utilisateur hdfs
, avez-vous des droits d'accès à /root/
(dans votre hdd local)?. Habituellement, vous n'avez pas.
Vous devez copier file1.txt
à un endroit où hdfs
l'utilisateur a les droits de lecture.
Essaie:
cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
sudo -u hdfs hadoop fs -put /tmp/file1.txt /
--- modifier:
regardez le nettoyeur romain-nikitchenko réponse du soufflet.
j'ai eu la même situation et voici ma solution:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
les Avantages:
- Vous n'avez pas besoin
sudo
. - vous n'avez pas besoin du tout d'un utilisateur local 'HDFS'.
- vous n'avez pas besoin de copier quoi que ce soit ou de modifier les permissions à cause des points précédents.
essayez de créer un dir dans le HDFS par usig: $ hadoop fs -mkdir your_dir
et puis le mettre dans $ hadoop fs -put -put /root/MyHadoop/file1.txt your_dir