Hadoop的调度器总结
(注:本文介紹的Hadoop調度器不夠系統化,如果想了解更系統化的Hadoop調度器,可閱讀我的最新書籍《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》(購買說明)第10章 “Hadoop多用戶作業調度器分析”,分析了當前比較流行的FIFO、Capacity個Fair三種調度器的配置方法、實現機制和優缺點對比,當然,也介紹了其他類型的幾種調度器。)
(1)默認的調度器FIFO
Hadoop中默認的調度器,它先按照作業的優先級高低,再按照到達時間的先后選擇被執行的作業。
(2) 計算能力調度器Capacity Scheduler
支持多個隊列,每個隊列可配置一定的資源量,每個隊列采用FIFO調度策略,為了防止同一個用戶的作業獨占隊列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定。調度時,首先按以下策略選擇一個合適隊列:計算每個隊列中正在運行的任務數與其應該分得的計算資源之間的比值,選擇一個該比值最小的隊列;然后按以下策略選擇該隊列中一個作業:按照作業優先級和提交時間順序選擇,同時考慮用戶資源量限制和內存限制。
(3)公平調度器Fair Scheduler
同計算能力調度器類似,支持多隊列多用戶,每個隊列中的資源量可以配置,同一隊列中的作業公平共享隊列中所有資源,具體算法參見我的博文《Hadoop公平調度器算法解析》
實際上,Hadoop的調度器遠不止以上三種,最近,出現了很多針對新型應用的Hadoop調度器。
(4)適用于異構集群的調度器LATE
現有的Hadoop調度器都是建立在同構集群的假設前提下,具體假設如下:
1)集群中各個節點的性能完全一樣
2)對于reduce task,它的三個階段:copy、sort和reduce,用時各占1/3
3)同一job的同類型的task是一批一批完成的,他們用時基本一樣。
現有的Hadoop調度器存在較大缺陷,主要體現在探測落后任務的算法上:如果一個task的進度落后于同類型task進度的20%,則把該task當做落后任務(這種任務決定了job的完成時間,需盡量縮短它的執行時間),從而為它啟動一個備份任務(speculative task)。如果集群異構的,對于同一個task,即使是在相同節點上的執行時間也會有較大差別,因而在異構集群中很容易產生大量的備份任務。
LATE(Longest Approximate Time to End,參考資料[4])調度器從某種程度上解決了現有調度器的問題,它定義三個閾值:SpeculativeCap,系統中最大同時執行的speculative task數目(作者推薦值為總slot數的10%); SlowNodeThreshold(作者推薦值為25%):得分(分數計算方法見論文)低于該閾值的node(快節點)上不會啟動speculative task;SlowTaskThreshold(作者推薦值為25%):當task進度低于同批同類task的平均進度的SlowTaskThreshold時,會為該task啟動speculative task。它的調度策略是:當一個節點出現空閑資源且系統中總的備份任務數小于SpeculativeCap時,(1)如果該節點是慢節點(節點得分高于SlowNodeThreshold),則忽略這個請求。 (2)對當前正在運行的task按估算的剩余完成時間排序 (3)選擇剩余完成時間最大且進度低于SlowTaskThreshold的task,為該task啟動備份任務。
(5)適用于實時作業的調度器Deadline Scheduler和Constraint-based Scheduler
這種調度器主要用于有時間限制的作業(Deadline Job),即給作業一個deadline時間,讓它在該時間內完成。實際上,這類調度器分為兩種,軟實時(允許作業有一定的超時)作業調度器和硬實時(作業必須嚴格按時完成)作業調度器。
Deadline Scheduler(參考資料[5])主要針對的是軟實時作業,該調度器根據作業的運行進度和剩余時間動態調整作業獲得的資源量,以便作業盡可能的在deadline時間內完成。
Constraint-based Scheduler(參考資料[6])主要針對的是硬實時作業,該調度器根據作業的deadline和當前系統中的實時作業運行情況,預測新提交的實時作業能不能在deadline時間內完成,如果不能,則將作業反饋給用戶,讓他重調整作業的deadline。
————————————————————————————————————————–
參考資料:
【1】??? Capacity Scheduler 介紹:http://hadoop.apache.org/common/docs/r0.19.2/capacity_scheduler.html
下載:http://hadoop.apache.org/common/docs/r0.20.0/capacity_scheduler.pdf
【2】??? Fair Scheduler 介紹:http://hadoop.apache.org/common/docs/r0.20.2/fair_scheduler.html
下載:http://svn.apache.org/repos/asf/hadoop/mapreduce/trunk/src/contrib/fairscheduler/designdoc/fair_scheduler_design_doc.pdf
【3】??? Fair Scheduler 論文:M. Zaharia, D. Borthakur, J. S. Sarma, K. Elmeleegy, S. Shenker, and I. Stoica, “Job scheduling for multi-user mapreduce clusters,” EECS Department, University of California, Berkeley, Tech. Rep., Apr 2009.
【4】???Matei Zaharia, Andy Konwinski, Anthony D. Joseph, Randy Katz, Ion Stoica “Improving MapReduce Performance in Heterogeneous Environments,”
【5】??? Deadline Scheduler 論文:J. Polo, D. Carrera, Y. Becerra, J. Torres, E. Ayguade and, M. Steinder, and I. Whalley, “Performance-driven task co-scheduling for mapreduce environments,” in?Network Operations and Management Symposium?(NOMS), 2010 IEEE, 2010, pp. 373 –380.
【6】??? Constraint-based Scheduler 論文K. Kc and K. Anyanwu, “Scheduling hadoop jobs to meet deadlines,” in?2nd IEEE International Conference on Cloud Computing Technology?and Science (CloudCom), 2010, pp. 388 –392.
原創文章,轉載請注明:?轉載自董的博客
本文鏈接地址:?http://dongxicheng.org/mapreduce/hadoop-schedulers/
總結
以上是生活随笔為你收集整理的Hadoop的调度器总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传统MapReduce框架
- 下一篇: Hadoop 数据类型与文件结构剖析 S