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!
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 .
Ich hatte die gleiche Situation und hier ist meine Lösung:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
Vorteile:
Sudo
nicht.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