18

HDFS から、Hadoop クラスターではなくネットワーク内にある別のサーバーのローカル ファイルシステムにファイルを転送したいと考えています。

私はできたかもしれません:

hadoop fs -copyToLocal <src> <dest>
and then scp/ftp <toMyFileServer>.

データは巨大で、Hadoop ゲートウェイ マシンのローカル ファイルシステムのスペースが限られているため、これを避けたいと思い、ファイル サーバーに直接データを送信しました。

この問題を処理する方法について、いくつかの指針を教えてください。

4

5 に答える 5

13

これが最も簡単な方法です。

ssh <YOUR_HADOOP_GATEWAY> "hdfs dfs -cat <src_in_HDFS> " > <local_dst>

バイナリファイルでも機能します。

于 2013-06-05T14:25:45.980 に答える
4

したがって、hadoop プログラムからの出力として、多数のパーツを含むファイルがあると思われます。

part-r-00000
part-r-00001
part-r-00002
part-r-00003
part-r-00004

では、一度に 1 つのパートを実行しましょうか。

for i in `seq 0 4`;
do
hadoop fs -copyToLocal output/part-r-0000$i ./
scp ./part-r-0000$i you@somewhere:/home/you/
rm ./part-r-0000$i
done

scp のパスワード修飾子を検索する必要がある場合があります

于 2012-08-29T20:17:54.340 に答える
2

最も簡単な解決策は、ローカルファイルサーバーディレクトリをローカルでシミュレートするためのネットワークマウントまたはSSHFSだと思います。
FTP をローカル ディレクトリとしてマウントすることもできます: http://www.linuxnix.com/2011/03/mount-ftp-server-linux.html

于 2012-08-29T08:44:29.570 に答える