溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop集群有哪些作業(yè)調(diào)度算法

發(fā)布時間:2021-12-10 10:47:22 來源:億速云 閱讀:164 作者:iii 欄目:云計算

這篇文章主要講解了“Hadoop集群有哪些作業(yè)調(diào)度算法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Hadoop集群有哪些作業(yè)調(diào)度算法”吧!

Hadoop集群中有三種作業(yè)調(diào)度算法,分別為FIFO,公平調(diào)度算法和計算能力調(diào)度算法
先來先服務(wù)(FIFO)
Hadoop中默認的調(diào)度器FIFO,它先按照作業(yè)的優(yōu)先級高低,再按照到達時間的先后選擇被執(zhí)行的作業(yè)。
FIFO比較簡單,hadoop中只有一個作業(yè)隊列,被提交的作業(yè)按照先后順序在作業(yè)隊列中排隊,新來的作業(yè)插入到隊尾。一個作業(yè)運行完后,總是從隊首取 下一個作業(yè)運行。這種調(diào)度策略的優(yōu)點是簡單、易于實現(xiàn),同時也減輕了jobtracker的負擔(dān)。但是它的缺點也是顯然的,它對所有的作業(yè)都一視同仁,沒 有考慮到作業(yè)的緊迫程度,另外對小作業(yè)的運行不利。
公平調(diào)度策略
這種策略在系統(tǒng)中配置了任務(wù)槽,一個任務(wù)槽可以運行一個task任務(wù),這些任務(wù)就是一個大的作業(yè)被切分后的小作業(yè)。當(dāng)一個用戶提交多個作業(yè)時,每個作業(yè)可 以分配到一定的任務(wù)槽以執(zhí)行task任務(wù)(這里的任務(wù)槽可以理解為可以運行一個map任務(wù)或reduce任務(wù))。如果把整個hadoop集群作業(yè)調(diào)度跟操 作系統(tǒng)的作業(yè)調(diào)度相比,第一種FIFO就相當(dāng)于操作系統(tǒng)中早期的單道批處理系統(tǒng),系統(tǒng)中每個時刻只有一道作業(yè)在運行,而公平調(diào)度相當(dāng)于多道批處理系統(tǒng),它 實現(xiàn)了同一個時刻多道作業(yè)同時運行。由于linux是多用戶的,若有多個用戶同時提交多個作業(yè)會怎樣?在這種策略中給每個用戶分配一個作業(yè)池,然后給每個 作業(yè)池設(shè)置一個最小共享槽個數(shù),什么是最小共享槽個數(shù)呢?先要理解一個最小什么意思,最小是指只要這個作業(yè)池需要,調(diào)度器應(yīng)該確保能夠滿足這個作業(yè)池的最 小任務(wù)槽數(shù)的需求,但是如何才能確保在它需要的時候就有空的任務(wù)槽,一種方法是固定分配一定數(shù)量的槽給作業(yè)池不動,這個數(shù)量至少是最小任務(wù)槽值,這樣只要 在作業(yè)池需要的時候就分配給它就行了,但是這樣在這個作業(yè)池沒有用到這么多任務(wù)槽的時候會造成浪費,這種策略實際上是這樣做的,當(dāng)作業(yè)池的需求沒有達到最 小任務(wù)槽數(shù)時,名義上是自己的剩余的任務(wù)槽會被分給其他有需要的作業(yè)池,當(dāng)一個作業(yè)池需要申請任務(wù)槽的時候若系統(tǒng)中沒有了,這時候不會去搶占別人的(也不 知道搶誰的?。?,只要當(dāng)前一個空的任務(wù)槽釋放會被立即分配給這個作業(yè)池。
在一個用戶的作業(yè)池內(nèi),多個作業(yè)如何分配槽這個可以自行選擇了如FIFO。所以這種調(diào)度策略分為兩級:
第一級,在池間分配槽,在多用戶的情況下,每個用戶分配一個作業(yè)池。
第二級,在作業(yè)池內(nèi),每個用戶可以使用不同的調(diào)度策略。
計算能力調(diào)度
計算能力調(diào)度和公平調(diào)度有點類似,公平調(diào)度策略是以作業(yè)池為單位分配任務(wù)槽,而計算能力調(diào)度是以隊列為單位分配tasktracker(集群中一個節(jié) 點),這種調(diào)度策略配置了多個隊列,每個隊列配置了最小額度的tasktracker數(shù)量,同公平調(diào)度策略類似,當(dāng)一個隊列有空閑的 tasktracker時,調(diào)度器會將空閑的分配給其他的隊列,當(dāng)有空閑的tasktracker時,由于這時候可能有多個隊列沒有得到最小額度的 tasktracker而又在申請新的,空閑的tasktracker會被優(yōu)先分配到最饑餓的隊列中去,如何衡量饑餓程度呢?可以通過計算隊列中正在運行 的任務(wù)數(shù)與其分得的計算資源之間的比值是否最低來判斷的,越低說明饑餓程度越高。
計算能力調(diào)度策略是以隊列的方式組織作業(yè)的,所以一個用戶的作業(yè)可能在多個隊列中,如果不對用戶做一定的限制,很可能出現(xiàn)在多個用戶之間出現(xiàn)嚴重不公平的現(xiàn)象。所以在選中新作業(yè)運行時候,還需要考慮作業(yè)所屬的用戶是否超過了資源的限制,如果超過,作業(yè)不會被選中。
對于在同一個隊列中,這種策略使用的是基于優(yōu)先級的FIFO策略,但是不會搶占。

感謝各位的閱讀,以上就是“Hadoop集群有哪些作業(yè)調(diào)度算法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Hadoop集群有哪些作業(yè)調(diào)度算法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI