在MapReduce的計算模型中,任務分解(Task Decomposition)是由JobTracker負責的。
在整個MapReduce任務處理的過程中,任務分解是第壹步,主要負責將輸入數據集分成固定數目的小數據塊,並將這些小數據塊分配給多個 Map 任務來並行處理。任務分解的目的是為了提高整個任務的並行度和處理效率。
具體來說,JobTracker負責任務分解的主要流程如下:
1、首先,JobTracker會根據用戶指定的Map數量來計算如何將數據集分塊。每個數據塊的大小通常為HDFS中數據塊的大小(默認為128MB),如果最後壹個塊小於標準塊大小,就會被當做單獨壹個塊來處理。
2、然後,JobTracker會選擇可用的TaskTracker節點,並根據節點的可用處理器數和內存大小等資源信息來分配並發執行的Map和Reduce任務數。
3、最後,JobTracker將任務分發給TaskTracker執行節點,並對任務執行情況進行監視和控制,確保任務按照預期完成並匯總結果返回給用戶。
總之,在MapReduce的計算模型中,任務分解是實現高性能、高並發處理大數據集的關鍵環節,需要JobTracker負責分配和協調任務的執行過程。
MapReduce簡介:
MapReduce是壹種編程模型,用於大規模數據集的並行運算。它極大地方便了編程人員在不會分布式並行編程的情況下,將自己的程序運行在分布式系統上。
當前的軟件實現是指定壹個Map(映射)函數,用來把壹組鍵值對映射成壹組新的鍵值對,指定並發的Reducep(歸約)函數,用來保證所有映射的鍵值對中的每壹個***享相同的鍵組。
MapReduce通過對數據集的大規模操作分發給網絡上的每個節點實現可靠性;每個節點會周期性的返回它所完成的工作和最新的狀態。
如果壹個節點保持沈默超過壹個預設的時間間隔,主節點(類同Google File System中的主服務器)記錄下這個節點狀態為死亡,並把分配給這個節點的數據發到別的節點。