2013-11-01 78 views
0

我正在尋找一種有效的方法來將一個Hadoop filesytem中的目錄列表同步到另一個具有相同目錄結構的目錄中。如何使Hadoop Distcp複製文件夾的自定義列表?

例如可以說HDFS1就是數據被創建的官方消息和每週一次,我們需要新創建的數據下的所有數據-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個目錄同步:

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 

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

這可以這樣做

這將運行2個Hadoop作業,如果目錄數很大,假設在hdfs:// namenode1:port /下有500個不同的非重疊目錄,這將創建500個明顯過度殺毒的Hadoop作業。

有沒有辦法將自定義目錄列表注入distcp? 如何使distcp創建一個作業複製自定義目錄列表中的所有路徑?

回答

0

不知道這是否回答了問題,但我注意到你沒有使用「更新」操作符。 「-update」操作符只會複製兩個文件系統之間的區塊差異...

+0

感謝貢獻,但是如何避免調用許多hadoop作業? – Bohdan

相關問題