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