2013-02-12 73 views
0

我有一個關於使用hadoop處理小文件的問題。我的文件只有大約1000條左右的記錄,但我希望記錄大致均勻地分佈在節點之間。有沒有辦法做到這一點?我是hadoop的新手,到目前爲止,似乎所有的執行都在一個節點上發生,而不是同時發生。讓我知道我的問題是否合理,或者是否需要澄清任何事情。就像我說的,我對Hadoop非常陌生,但希望得到一些澄清。謝謝。用hadoop處理非常小的文件

回答

1

使用NLineInputFormat並指定每個映射器要處理的記錄數。這樣一個塊中的記錄將被多個映射器處理。

+0

感謝Praveen,那麼將使用NLineInputFormat覆蓋爲mapred.max.split.size和dfs.block.size設置的值嗎? – user399540 2013-02-12 13:55:50

+0

我不認爲它考慮到mapred.max.split.size和dfs.block.size。請檢查[NLineInputFormat.java](http://goo.gl/mAFbK)代碼以獲取更多詳細信息。 – 2013-02-12 14:03:15

0

另一種選擇是將您的一個輸入文件分成多個輸入文件(在一個輸入路徑目錄中)。 然後,這些輸入文件中的每一個都可以分佈在hdfs中,並且在擁有這些輸入拆分的工作機器上執行映射操作。