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!

22
demandé sur Matthew Murdoch 2013-08-28 14:07:05

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.

22
répondu Alfonso Nishikawa 2017-05-23 12:32:31

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

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

les Avantages:

  1. Vous n'avez pas besoin sudo.
  2. vous n'avez pas besoin du tout d'un utilisateur local 'HDFS'.
  3. vous n'avez pas besoin de copier quoi que ce soit ou de modifier les permissions à cause des points précédents.
16
répondu Roman Nikitchenko 2013-11-15 13:23:57

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

5
répondu elkoo 2014-02-26 08:48:48