wake-up-neo.com

hadoop fs -put Befehl

Ich habe eine Single-Node-Hadoop-Umgebung unter CentOS mit dem Cloudera CDH-Repository erstellt. Wenn ich eine lokale Datei nach HDFS kopieren möchte, habe ich den folgenden Befehl verwendet:

Sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /

Aber das Ergebnis bedrückte mich:

put: '/root/MyHadoop/file1.txt': No such file or directory

Ich bin sicher, dass diese Datei existiert.

Bitte hilf mir, danke!

24
skfeng

Haben Sie als Benutzer hdfs Zugriffsrechte auf /root/ (In Ihrer lokalen Festplatte) ?. Normalerweise nicht. Sie müssen file1.txt An eine Stelle kopieren, an der der Benutzer hdfs Leserechte hat.

Versuchen:

cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
Sudo -u hdfs hadoop fs -put /tmp/file1.txt /

--- edit:

Werfen Sie einen Blick auf die Antwort des Reinigers Roman-Nikitchenko unten .

25

Ich hatte die gleiche Situation und hier ist meine Lösung:

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

Vorteile:

  1. Sie brauchen Sudo nicht.
  2. Sie brauchen überhaupt keinen passenden lokalen Benutzer 'hdfs'.
  3. Sie müssen aufgrund vorheriger Punkte nichts kopieren oder Berechtigungen ändern.
17

versuchen Sie, ein Verzeichnis im HDFS zu erstellen, indem Sie Folgendes verwenden: $ hadoop fs -mkdir your_dir und es dann hineinlegen $ hadoop fs -put /root/MyHadoop/file1.txt your_dir

6
elkoo