HDFS並行複製Distcp

2022-09-05 10:06:12 字數 1405 閱讀 5564

1)distcp(分布式拷貝)是用於大規模集群內部和集群之間拷貝的工具。

2)distcp命令是以mr作業(沒有r任務)的形式實現的,把檔案和目錄的列表作為m任務的輸入。每乙個檔案是由乙個m任務來拷貝的,distcp盡量把大小之和相同的各個檔案匯入到同乙個m任務中。這樣可以每個m任務拷貝的資料量大致相同。

3)集群之間的拷貝(hdfs版本相同):

bash$ hadoop distcp hdfs://

nn1:8020/foo/bar hdfs:

//nn2:8020 /bar/foo

這個命令會把nn1集群的 /foo/bar 目錄下的所有檔案或目錄名展開並儲存到乙個臨時檔案中,這些檔案內容的拷貝工作被分配給多個m任務,然後每個tt分別執行從nn1到nn2的拷貝操作。【distcp使用絕對路徑進行操作】

4) 多個源目錄拷貝

bash$ hadoop distcp hdfs://

nn1:8020/foo/a hdfs:

//nn1:8020/foo/b hdfs:

//nn2:8020/bar/foo

5) 更新-update和覆蓋-overwrite

預設情況下,如果在拷貝的目的地同名檔案已經存在,則會預設跳過這些檔案。可以通過-overwrite選項指定覆蓋掉同名檔案,或者通過-update選項來更新同名檔案。 關於distcp的更多用法,可以不加引數執行「hadoop distcp」命令來檢視其用法。

6) 不同版本hdfs之間拷貝

如果兩集群hadoop版本不一致就不能使用hdfs識別符號來拷貝檔案了,因為兩者的rpc系統是不相容的。

% hadoop distcp hftp://

namenode1:50070/foo hdfs:

//namenode2/bar

% hadoop distcp webhdfs://

namenode1:50070/foo webhdfs:

//namenode2:50070/bar

m任務的個數是按如下方式決定的:

1)     考慮到建立m任務的開銷,每個m任務至少處理256mb的資料(如果總輸入檔案小於256mb,則把這些輸入資料全部交給乙個m任務執行)。例如,乙個1gb大小的輸入資料會被分配四個m任務來拷貝。

2)  如果待拷貝的資料實在很大,這時候就不能只按每個m任務256mb輸入資料的標準來劃分了,因為這樣可能需要建立很多m任務。這時可以按每個dn有20個m任務來劃分,例如,如果有1000gb的輸入資料和100個節點,這是就會啟動100*20=2000個m任務來拷貝資料,每個m任務拷貝512mb資料。同時我們也可通過-m選項指定要使用的m數,例如,-m 1000就會啟動1000個m任務,每個m任務拷貝1gb資料。

hadoop 通過distcp進行並行複製

通過distcp進行並行複製 前面的hdfs訪問模型都集中於單執行緒的訪問。例如通過指定檔案通配,我們可以對一部分檔案進行處理,但是為了高效,對這些檔案的並行處理需要新寫乙個程式。hadoop有乙個叫distcp 分布式複製 的有用程式,能從hadoop的檔案系統並行複製大量資料。distcp一般用...

Hadoop之 通過distcp並行複製

distcp是乙個分布式複製程式,改程式可以從hadoop檔案系統間複製大量資料,也可以將大量的資料複製到hadoop中 distcp的典型應用是在兩個hdfs集群間傳輸資料 hadoop distcp hdfs binghe101 foo hdfs binghe102 bar預設情況下,distc...

hadoop3 DistCp 並行檔案複製

distcp 是hadoop的乙個分布式複製程式,它能從檔案系統同將大量的檔案複製到hadoop中也能是從hadoop中複製檔案到分布式檔案系統中 例如 hadoop distcp hdfs namenode1 foo hdfs namenode2 bar 將foo檔案複製到第二個bar目錄下 注意...