HDFS(6)-distcpパラレルレプリケーション

1573 ワード

Java Apiでファイルやディレクトリをコピーしたり、hadoop fs -cpでコピーしたりすることができますが、この2つの効率は高くなく、ファイルやディレクトリをコピーしてコードを書くのも面倒です.distcp並列処理を用いることが好ましい手段である.
コマンド#コマンド#
ファイルのコピー
  hadoop distcp file1 file2

ディレクトリのコピー
  hadoop distcp dir1 dir2
dir2が存在しない場合、新しいdir 2、ディレクトリdir1の内容はすべてdir2にコピーされる.複数のソースパスを指定できます.すべてのソースパスの下の内容がターゲットパスの下にコピーされます.dir2が既に存在する場合、ディレクトリdir1dir2の下にコピーされ、ディレクトリ構造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の数を変更できます.