1. 程式人生 > >hadoop中slot簡介(map slot 和 reduce slot)

hadoop中slot簡介(map slot 和 reduce slot)

Slots是Hadoop的一個重要概念。然而在Hadoop相關論文,slots的闡述難以理解。網上關於slots的概念介紹也很少,而對於一個有經驗的Hadoop開發者來說,他們可能腦子裡已經理解了slots的真正含義,但卻難以清楚地表達出來,Hadoop初學者聽了還是雲裡霧裡。我來嘗試講解一下,以期拋磚引玉。

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

Hadoop利用slots來管理分配節點的資源。每個Job申請資源以slots為單位

,每個節點會確定自己的計算能力以及memory確自己包含的slots總量。當某個Job要開始執行時,先向JobTracker申請slots,JobTracker分配空閒的slots,Job再佔用slots,Job束後,歸還slots。每個TaskTracker定期(例如淘寶Hadoop心跳週期是5s)通過心跳(hearbeat)與Jobtracker通訊,一方面彙報自己當前工作狀態,JobTracker得夠某個TaskTracker是否Alive;同時彙報自身空閒slots數量。JobTracker利用某個排程規則,如Hadoop預設調器FIFO或者Capacity Scheduler、
FairScheduler等。(注:淘寶Hadoop使用雲梯排程器YuntiScheuler,它是基於Fair Scheduler行修改的)。

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的任務組成。

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