3 回答

TA貢獻1821條經驗 獲得超5個贊
舉例說明:
假設您的hadoop輸入文件大小為2 GB,并且將塊大小設置為64 MB,因此將設置運行32個Mappers任務,而每個映射器將處理64 MB塊以完成Hadoop作業的Mapper作業。
==>設置要運行的映射器的數量完全取決于1)文件大小和2)塊大小
假設您在4個集群大小上運行hadoop:假設您將conf文件中的mapred.map.tasks和mapred.reduce.tasks參數設置為節點,如下所示:
Node 1: mapred.map.tasks = 4 and mapred.reduce.tasks = 4
Node 2: mapred.map.tasks = 2 and mapred.reduce.tasks = 2
Node 3: mapred.map.tasks = 4 and mapred.reduce.tasks = 4
Node 4: mapred.map.tasks = 1 and mapred.reduce.tasks = 1
假設您為該集群中的4個節點設置了上述參數。如果您注意到節點2分別只設置了2和2,因為節點2的處理資源可能較少,例如(2個處理器,2個內核),而節點4甚至分別設置為分別低到1和1,可能是由于處理資源該節點上有1個處理器,2個內核,因此不能運行超過1個mapper和1個reducer任務。
因此,當您運行作業時,將節點1,節點2,節點3,節點4配置為運行最大作業。在作業需要完成的42個映射器任務中,總共(4 + 2 + 4 + 1)11個映射器任務同時進行。每個節點完成其映射任務后,它將處理42個映射器任務中剩余的其余映射器任務。
現在開始使用reducers,因為將mapred.reduce.tasks設置為0,所以我們僅將mapper輸出輸出到42個文件中(每個mapper任務1個文件),而沒有reducer輸出。
添加回答
舉報