web-dev-qa-db-fra.com

commande hadoop fs -put

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!

24
skfeng

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 .

25
Alfonso Nishikawa

J'ai eu la même situation et voici ma solution:

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

Avantages:

  1. Vous n'avez pas besoin de Sudo.
  2. Vous n'avez pas du tout besoin de l'utilisateur local approprié "hdfs".
  3. Vous n'avez pas besoin de copier quoi que ce soit ou de modifier les autorisations en raison des points précédents.
17
Roman Nikitchenko

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

6
elkoo