2012-05-21 56 views
0

我是新來映射/減少。一個地圖任務的輸入可能在不同的服務上嗎?假設我想使用map/reduce來模擬「字數」,並且我逐行分割數據(每行一行)。是否每個地圖任務都會引用一段數據並計算每段單詞的出現次數?地圖任務輸入數據

回答

1

輸入文件將根據hdfs塊的大小進行拆分,並且每個分割都會產生一個地圖任務。

例如,默認情況下,hdfs塊大小爲64mb。可以說你的輸入文件大小爲50mb。當你將這個文件加載到hdfs中時,它將被拆分爲每個25mb的2個分割。因此,2個地圖任務將生成在每個輸入分割上工作。假設一個輸入分割有100行,那麼映射器類(任務)將調用映射方法100次,每行對應一個。

1

使用InputSplit類拆分數據。您可以定義自己的輸入拆分類。輸入拆分的數量等於映射器的數量。所以理論上,如果你有許多mappers作爲你的輸入行,然後你用這種方式寫你的inputsplit,那麼每一行都可以作爲map任務的輸入。一般來說,地圖任務的輸入位於同一臺機器上。只能以這種方式減少框架計劃地圖任務。我建議你閱讀一些減少地圖的基礎知識。在cloudera網站上有很好的視頻教程。

相關問題