Hadoop1.x MapReduce的Slot的理解

hackeruncle發表於2016-07-13

1.首先,slot不是CPU的Core,也不是memory chip,它是一個邏輯概念,一個節點的slot的數量用來表示某個節點的資源的容量或者說是能力的大小,因而slot是 Hadoop的資源單位。

2.Hadoop利用slots來管理分配節點的資源。每個Job申請資源以slots為單位,每個節點會確定自己的計算能力以及memory確定自己包含的slots總量。當某個Job要開始執行時,先向JobTracker申請slots,JobTracker分配空閒的slots,Job再佔用slots,Job結束後,歸還slots。

3.每個TaskTracker定期(例如淘寶Hadoop心跳週期是5s)透過心跳(hearbeat)與Jobtracker通訊,一方面彙報自己當前工作狀態,JobTracker得夠某個TaskTracker是否Alive;同時彙報自身空閒slots數量。JobTracker利用某個排程規則,如Hadoop預設排程器FIFO或者Capacity Scheduler、FairScheduler等。

4.Hadoop裡有兩種slots, map slots和reduce slots,map task使用map slots,一一對應,reduce task使用reduce slots。
注:現在越來越多的觀點認為應該打破map slots與 reduce slots的界限,應該被視為統一的資源池,they are all resource,從而提高資源的利用率。
區分map slots和reduce slots,容易導致某一種資源緊張,而另一個資源卻有空閒。
在Hadoop的下一代框架MapR中,已經取消了map slots與reduce slots的概念,並將Jobtracker的功能一分為二,用ResourceManager來管理節點資源,用ApplicationMaster來監控與排程作業。ApplicationMaster是每個Application都有一個單獨的例項,application是使用者提交的一組任務,它可以是一個或多個job的任務組成。

5.Hadoop中通常每個tasktracker會包含多個slots,Job的一個task均對應於tasktracker中的一個slot。系統中map
slots總數與reducer slots總數的計算公式如下:

  • Map slots總數=叢集節點數×mapred.tasktracker.map.tasks.maximum
  • Reducer slots總數=叢集節點數×mapred.tasktracker.reduce.tasks.maximum

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2121982/,如需轉載,請註明出處,否則將追究法律責任。

相關文章