web-dev-qa-db-ja.com

hadoop fs -putコマンド

Cloudera CDHリポジトリを使用して、CentOS上に単一ノードのHadoop環境を構築しました。ローカルファイルをHDFSにコピーする場合、次のコマンドを使用しました。

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

しかし、結果は私を落ち込ませました:

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

このファイルが存在すると確信しています。

助けてください、ありがとう!

24
skfeng

ユーザーhdfsとして、/root/(ローカルhdd内)へのアクセス権がありますか?通常はそうしません。 file1.txthdfsユーザーが読み取り権を持つ場所にコピーする必要があります。

試してください:

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

---編集:

クリーナーのroman-nikitchenkoの答えを見てみましょう

25

私は同じ状況でしたが、ここに私の解決策があります:

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

利点:

  1. Sudoは必要ありません。
  2. 実際には、適切なローカルユーザー「hdfs」はまったく必要ありません。
  3. 以前のポイントのため、何かをコピーしたり権限を変更したりする必要はありません。
17

usig:$ hadoop fs -mkdir your_dirでHDFSにディレクトリを作成し、それを$ hadoop fs -put /root/MyHadoop/file1.txt your_dirに入れてみてください

6
elkoo