我有一個MapReduce作業,它由包含多行記錄的單個輸入文件組成。每個記錄需要時間的相當數量的時間進行處理。因此,我的輸入文件(儘管其大小可能是遠小於HDFS塊大小)在單個節點上執行時需要大量時間。在節點之間均勻分配重量級任務
如何告訴Hadoop在節點之間均勻有效地分割輸入文件?這樣即使輸入文件很小,它仍然被分成幾個並行執行的任務。
另外,我們可以告訴hadoop將文件拆分成N個任務,其中N是可用節點的數量?
謝謝!
編輯: 爲了更加清晰,我想要做的是類似於以下內容。我有很多大文件。我有一個外部程序將處理每個文件。每個文件都需要大量時間來處理。
因此,我將文件的文件名存儲在輸入文件中,然後我希望Hadoop均勻地分割它。然後在映射器中,我將與ID對應的文件複製到本地計算機並調用程序。
對不起,我的意思是「每個記錄**需要**相當長的時間才能處理」。所以基本上每個記錄都是存儲在其他地方的「某些東西」的ID,處理這個「東西」需要很長時間。我想要有效地並行處理所有「事物」,因此是問題。 – fushar
所以你可以用它的ID來聚合這些「東西」並將它們存儲在HDFS上,這會給你一個更大的文件,Hadoop知道如何處理大文件 – darkjh
我同意@darkjh。但是,爲了讓自己清楚,爲什麼當你的實際目標是處理與該記錄(ID)相關的「某事」時,你擔心「記錄(ID)」? – Tariq