天天看點

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

繼續閱讀