2

ディレクトリのリストをあるHadoopファイルシステムから同じディレクトリ構造を持つ別のファイルシステムに同期する効率的な方法を探しています。

たとえば、HDFS1 がデータが作成される公式ソースであり、週に 1 回、新しく作成されたデータをすべてのdata-2ディレクトリの下に HDFS2にコピーする必要があるとします。

**HDFS1**
hdfs://namenode1:port/repo/area-1/data-1
hdfs://namenode1:port/repo/area-1/data-2
hdfs://namenode1:port/repo/area-1/data-3
hdfs://namenode1:port/repo/area-2/data-1
hdfs://namenode1:port/repo/area-2/data-2
hdfs://namenode1:port/repo/area-3/data-1

**HDFS2** (subset of HDFS1 - only data-2)
hdfs://namenode2:port/repo/area-1/dir2
hdfs://namenode2:port/repo/area-2/dir2

この場合、同期する 2 つのディレクトリがあります。

/repo/area-1/data-2
/repo/area-1/data-2

これは次の方法で実行できます。

hadoop distcp hdfs://namenode1:port/repo/area-1/data-2 hdfs://namenode2:port/repo/area-1
hadoop distcp hdfs://namenode1:port/repo/area-2/data-2 hdfs://namenode2:port/repo/area-2

これにより、2 つの Hadoop ジョブが実行されます。ディレクトリの数が多い場合は、hdfs://namenode1:port/ の下に 500 の重複しないディレクトリがあるとします。これにより、500 の Hadoop ジョブが作成されますが、これは明らかに過剰です。

カスタム ディレクトリ リストを distcp に挿入する方法はありますか? ディレクトリのカスタムリストのすべてのパスをコピーする1つのジョブをdistcpに作成させる方法は?

4

1 に答える 1

0

これで問題が解決するかどうかはわかりませんが、「更新」演算子を使用していないことに気付きました。「-update」演算子は、2 つのファイル システム間のブロックの違いのみをコピーします...

于 2014-05-13T16:44:09.480 に答える