您好,登錄后才能下訂單哦!
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。