HDFS(6)-distcpパラレルレプリケーション
1573 ワード
Java Apiでファイルやディレクトリをコピーしたり、
コマンド#コマンド#
ファイルのコピー
ディレクトリのコピー
HDFSクラスタ間でのデータ転送
以上のコマンドは、2番目のクラスタ上で1番目のクラスタの
2つのクラスタで実行されるHDFSバージョンが互換性がない場合は、
げんり
hadoop fs -cp
でコピーしたりすることができますが、この2つの効率は高くなく、ファイルやディレクトリをコピーしてコードを書くのも面倒です.distcp
並列処理を用いることが好ましい手段である.コマンド#コマンド#
ファイルのコピー
hadoop distcp file1 file2
ディレクトリのコピー
hadoop distcp dir1 dir2
dir2
が存在しない場合、新しいdir 2、ディレクトリdir1
の内容はすべてdir2
にコピーされる.複数のソースパスを指定できます.すべてのソースパスの下の内容がターゲットパスの下にコピーされます.dir2
が既に存在する場合、ディレクトリdir1
はdir2
の下にコピーされ、ディレクトリ構造dir2/dir1
を形成する.また、-overwrite
オプションを追加して、ディレクトリ構造を維持しながら元のファイルを強制的に上書きすることもできます. hadoop distcp -overwrite dir1 dir2
-update
オプションを使用して、変更されたファイルのみを更新することもできます. hadoop distcp -update dir1 dir2
HDFSクラスタ間でのデータ転送
hadoop distcp -update -delete -p hdfs://namenode1/foo hdfs://namenode2/foo
以上のコマンドは、2番目のクラスタ上で1番目のクラスタの
/foo
ディレクトリのバックアップを作成します.-delete
オプションを使用すると、ソースパスに表示されないファイルまたはディレクトリをターゲットパスから削除できます.-p
オプション設定ファイルのステータス属性は、権限、ブロックサイズ、コピー数などの保持されます.2つのクラスタで実行されるHDFSバージョンが互換性がない場合は、
webhdfs
を使用してdistcp
を実行できます. hadoop distcp webhdfs://namenode1:50070/foo webhdfs://namenode2:50070/foo
げんり
distcp
は、MapReduce
段階ではなく、クラスタ内で並列に動作するmap
によって達成されるreduce
ジョブとして実現される.デフォルトでは、20個のmap
タスクが開始されますが、distcp
で-m
パラメータを指定することで、map
の数を変更できます.