HDFSからローカルファイルシステムにファイルをコピーする方法


135

HDFSからローカルファイルシステムにファイルをコピーする方法。ファイルの下にファイルの物理的な場所はなく、ディレクトリもありません。さらに検証するために、それらをローカルに移動するにはどうすればよいですか。winscpを試してみました。

回答:


242
  1. bin/hadoop fs -get /hdfs/source/path /localfs/destination/path
  2. bin/hadoop fs -copyToLocal /hdfs/source/path /localfs/destination/path
  3. WebブラウザーでHDFS WEBUInamenode_machine:50070)をポイントし、コピーするファイルを参照し、ページを下にスクロールして、[ ファイルのダウンロード ]をクリックします

完璧なtariq、私はそれを得ました、ファイルでさえディレクトリの下でさえ、ファイルの物理的な場所はありません。bin / hadoop dfs -ls / use / hadoop / myfolder私はファイルを表示できますから情報を取得しましたファイルを検査するには、HDFSからローカルファイルシステムコピーできるため、winscpからファイルを移動できます
スーリヤ2013

2
もう一度私はtariqについて言及する必要があります。時間と知識を提供してくださってありがとうございます。どうもありがとう 。uはたくさんサポートしてくれました。これは私のような新しい赤ちゃんに大きな自信を与えてくれます。
スーリヤ2013

1
そうですか。ファイルの内容を確認したり、WebUIでファイルを開いたりする場合は、実際にhdfs catコマンドを使用できます。これにより、ファイルをローカルファイルにダウンロードする必要がなくなります。どういたしまして。そして、もしあなたがあなたの質問に対する答えに100%満足しているなら、他の人がそれから利益を得ることができるようにそれらをマークすることができます。これだけでなく、一般的に。
Tariq 2013

2
私の緯度のコメントに追加するだけで、バイナリファイルの場合、猫は実際のコンテンツを表示しません。bin / hadoop fs -text / path / to / file
Tariq

1
バグのようです(修正)。答えを見てください。
Tariq 2013

27

Hadoop 2.0では、

hdfs dfs -copyToLocal <hdfs_input_file_path> <output_path>

どこ、

  • hdfs_input_file_path たぶん http://<<name_node_ip>>:50070/explorer.html

  • output_path ファイルのコピー先となるファイルのローカルパスです。

  • get代わりに使用することもできますcopyToLocal


15

HDFSからローカルファイルシステムにファイルをコピーするには、次のコマンドを実行します。

hadoop dfs -copyToLocal <input> <output>

  • <input>:コピーするHDFSディレクトリパス(例:/ mydata)
  • <output>:宛先ディレクトリのパス(例:〜/ Documents)

1
これは私にはうまくいかないようです。<input>ファイルが見つからないというメッセージが常に表示されます。私はos 6.4セントのClouderaのVMインスタンスを使用しています
SutharMonil

@SutharMonilファイルが実際に存在しますか?そこから閲覧できますhadoop fs -lsか?
Dennis Jaheruddin

6

これらの両方の方法で達成できます。

1.hadoop fs -get <HDFS file path> <Local system directory path>
2.hadoop fs -copyToLocal <HDFS file path> <Local system directory path>

例:

私のファイルは/sourcedata/mydata.txt にありますファイルをローカルファイルシステムのこのパス/ user / ravi / mydataにコピーします

hadoop fs -get /sourcedata/mydata.txt /user/ravi/mydata/

3

ソース「ファイル」が同じディレクトリツリーにある複数のファイル(map-reduceの結果など)に分割されている場合は、次のコマンドを使用してローカルファイルにコピーできます。

hadoop fs -getmerge /hdfs/source/dir_root/ local/destination

これは受け入れられるべきです。これはほとんどの人が探しているものであり、分割ファイルではありません。
James O'Brien

2

これは、UbuntuのVMインスタンスで機能しました。

hdfs dfs -copyToLocal [hadoopディレクトリ] [ローカルディレクトリ]


0

dockerを使用している場合は、次の手順を実行する必要があります。

  1. hdfsからnamenodeにファイルをコピーします(hadoop fs -get output / part-r-00000 / out_text)。「/ out_text」はnamenodeに保存されます。

  2. (docker cp namenode:/ out_text output.txt)により、namenodeからローカルディスクにファイルをコピーします。

  3. output.txtは現在の作業ディレクトリにあります


-3
bin/hadoop fs -put /localfs/destination/path /hdfs/source/path 

1
hdfs dfs -putは、ファイルをローカルFSからHDFSにプッシュするコマンドです。hdfs dfs -getが適切なオプション
b_rousseau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.