2017-02-20 127 views
1

羣集之間/羣集之間的DistCP是Map-Reduce作業。我的假設是,它在輸入分割級別上覆制文件,幫助複製性能,因爲文件將由多個並行處理多個「塊」的映射器複製。 但是,當我閱讀Hadoop Distcp的文檔時,似乎Distcp只能在文件級別上工作。 請參考這裏:hadoop.apache.org/docs/current/hadoop-distcp/DistCp.htmlHadoop Distcp是否在塊級複製?

按照DistCp使用文檔時,DistCp使用只會把文件的列表,而不是文件本身,並將列表的分區分配給映射器。

誰能告訴到底如何,這將工作?

  • 附加問題:如果一個文件只分配給一個映射器,那麼映射器如何在一個正在運行的節點上找到所有輸入拆分?

回答

2

~50G大小的單個文件,1級地圖的任務將被觸發來複制數據,因爲文件是粒度在Distcp最好的水平。

documentation報價:

爲什麼DistCp使用不運行指定多個地圖時更快?

在 目前,DistCp的最小工作單元是一個文件。即,僅由一個地圖處理文件 。將地圖數量增加到超過文件數量的值 將不會帶來性能優勢。 啓動的地圖數量將等於文件數量。

UPDATE
的文件的塊的位置,從名稱節點映射縮減過程中獲得的。在Distcp上,如果可能的話,每個映射器將在文件的第一個塊出現的節點上啓動。在文件由多個拆分組成的情況下,如果在同一個節點上不可用,它們將從鄰域獲取。

+0

謝謝!你是否說單個文件的分割將被多個mapper並行複製?但根據distcp文檔,distcp只會分割文件列表,而不是文件本身,並將列表的分區分配給映射器。我不太瞭解這部分。請參考:https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html –

+0

@TianqiTong,你是對的,直到日期我與DistCp使用採用了典型的MapReduce過程中的誤解。我糾正了我的答案。 – franklinsijo

+0

感謝您的糾正!我已經更新了我的問題,所以其他人會開始喜歡它(希望)。但我不明白的另一件事是,該映射器如何在單個節點上找到單個文件的所有片段。 (我已經說明了這一點) –