董的博客 ? 統(tǒng)一資源管理與調(diào)度平臺(tái)(系統(tǒng))介紹
http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/
- 背景
隨著互聯(lián)網(wǎng)的高速發(fā)展,基于數(shù)據(jù)密集型應(yīng)用的計(jì)算框架不斷出現(xiàn),從支持離線處理的MapReduce酪耳,到支持在線處理的Storm,從迭代式計(jì)算框架Spark到流式處理框架S4橱夭,…荆隘,各種框架誕生于不同的公司或者實(shí)驗(yàn)室无埃,它們各有所長门粪,各自解決了某一類應(yīng)用問題喊积。而在大部分互聯(lián)網(wǎng)公司中,這幾種框架可能都會(huì)采用玄妈,比如對于搜索引擎公司乾吻,可能的技術(shù)方案如下:網(wǎng)頁建索引采用MapReduce框架髓梅,自然語言處理/數(shù)據(jù)挖掘采用Spark(網(wǎng)頁P(yáng)ageRank計(jì)算,聚類分類算法等绎签,【注】Spark現(xiàn)在不太成熟枯饿,很少有公司嘗試使用),對性能要求很高的數(shù)據(jù)挖掘算法用MPI等诡必⊙寄悖考慮到資源利用率,運(yùn)維成本擒权,數(shù)據(jù)共享等因素,公司一般希望將所有這些框架部署到一個(gè)公共的集群中阁谆,讓它們共享集群的資源碳抄,并對資源進(jìn)行統(tǒng)一使用,這樣场绿,便誕生了資源統(tǒng)一管理與調(diào)度平臺(tái)剖效,典型代表是Mesos和YARN。
本文總結(jié)了資源統(tǒng)一管理與調(diào)度平臺(tái)產(chǎn)生背景以及它們所應(yīng)具有的特點(diǎn)焰盗,并對比了當(dāng)前比較有名的資源統(tǒng)一管理與調(diào)度平臺(tái)Mesos和YARN璧尸。 - 資源統(tǒng)一管理和調(diào)度平臺(tái)具有的特點(diǎn)
(1)支持多種計(jì)算框架
資源統(tǒng)一管理和調(diào)度平臺(tái)應(yīng)該提供一個(gè)全局的資源管理器。所有接入的框架要先向該全局資源管理器申請資源熬拒,申請成功之后爷光,再由框架自身的調(diào)度器決定資源交由哪個(gè)任務(wù)使用,也就是說澎粟,整個(gè)大的系統(tǒng)是個(gè)雙層調(diào)度器蛀序,第一層是統(tǒng)一管理和調(diào)度平臺(tái)提供的,另外一層是框架自身的調(diào)度器活烙。
資源統(tǒng)一管理和調(diào)度平臺(tái)應(yīng)該提供資源隔離徐裸。不同的框架中的不同任務(wù)往往需要的資源(內(nèi)存,CPU啸盏,網(wǎng)絡(luò)IO等)不同重贺,它們運(yùn)行在同一個(gè)集群中,會(huì)相互干擾回懦,為此气笙,應(yīng)該提供一種資源隔離機(jī)制避免任務(wù)之間由資源爭用導(dǎo)致效率下降。
(2)擴(kuò)展性
現(xiàn)有的分布式計(jì)算框架都會(huì)將系統(tǒng)擴(kuò)展性作為一個(gè)非常重要的設(shè)計(jì)目標(biāo)粉怕,比如Hadoop健民,好的擴(kuò)展性意味著系統(tǒng)能夠隨著業(yè)務(wù)的擴(kuò)展線性擴(kuò)展。資源統(tǒng)一管理和調(diào)度平臺(tái)融入多種計(jì)算框架后贫贝,不應(yīng)該破壞這種特性秉犹,也就是說蛉谜,統(tǒng)一管理和調(diào)度平臺(tái)不應(yīng)該成為制約框架進(jìn)行水平擴(kuò)展。
(3)容錯(cuò)性
同擴(kuò)展性類似崇堵,容錯(cuò)性也是當(dāng)前分布式計(jì)算框架的一個(gè)重要設(shè)計(jì)目標(biāo)型诚,統(tǒng)一管理和調(diào)度平臺(tái)在保持原有框架的容錯(cuò)特性基礎(chǔ)上,自己本身也應(yīng)具有良好的容錯(cuò)性鸳劳。
(4) 高資源利用率
如果采用靜態(tài)資源分配狰贯,也就是每個(gè)計(jì)算框架分配一個(gè)集群,往往由于作業(yè)自身的特點(diǎn)或者作業(yè)提交頻率等原因赏廓,集群利用率很低涵紊。當(dāng)將各種框架部署到同一個(gè)大的集群中,進(jìn)行統(tǒng)一管理和調(diào)度后幔摸,由于各種作業(yè)交錯(cuò)且作業(yè)提交頻率大幅度升高摸柄,則為資源利用率的提升增加了機(jī)會(huì)。
(5)細(xì)粒度的資源分配
細(xì)粒度的資源分配是指直接按照任務(wù)實(shí)際需求分配資源既忆,而不是像MapReduce那樣將槽位作為資源分配單位驱负。這種分配機(jī)制可大大提高資源利用率。
-
當(dāng)前比較有名的開源資源統(tǒng)一管理和調(diào)度平臺(tái)
當(dāng)前比較有名的開源資源統(tǒng)一管理和調(diào)度平臺(tái)有兩個(gè)患雇,一個(gè)是Mesos跃脊,另外一個(gè)是YARN,下面依次對這兩個(gè)系統(tǒng)進(jìn)行介紹苛吱。
3.1 Mesos
Mesos誕生于UC Berkeley的一個(gè)研究項(xiàng)目酪术,現(xiàn)已成為Apache Incubator中的項(xiàng)目,當(dāng)前有一些公司使用Mesos管理集群資源翠储,比如Twitter拼缝。
總體上看,Mesos是一個(gè)master/slave結(jié)構(gòu)彰亥,其中咧七,master是非常輕量級的,僅保存了framework(各種計(jì)算框架稱為framework)和mesos slave的一些狀態(tài)任斋,而這些狀態(tài)很容易通過framework和slave重新注冊而重構(gòu)继阻,因而很容易使用了zookeeper解決mesos master的單點(diǎn)故障問題。
Mesos master實(shí)際上是一個(gè)全局資源調(diào)度器废酷,采用某種策略將某個(gè)slave上的空閑資源分配給某一個(gè)framework瘟檩,各種framework通過自己的調(diào)度器向Mesos master注冊,以接入到Mesos中澈蟆;而Mesos slave主要功能是匯報(bào)任務(wù)的狀態(tài)和啟動(dòng)各個(gè)framework的executor(比如Hadoop的excutor就是TaskTracker)墨辛。
3.2 YARN
YARN是下一代MapReduce,即MRv2趴俘,是在第一代MapReduce基礎(chǔ)上演變而來的睹簇,主要是為了解決原始Hadoop擴(kuò)展性較差奏赘,不支持多計(jì)算框架而提出的。它完全不同于Hadoop MapReduce太惠,所有代碼全部重寫而成磨淌。整個(gè)平臺(tái)由Resource Manager(master,功能是資源分配)和Node Manager組成(slave凿渊,功能是節(jié)點(diǎn)管理)梁只。較于HadoopMapReduce,其最大特點(diǎn)是將JobTracker拆分成Resource Manager和Application Master埃脏,其中Resource Manager是全局的資源管理器搪锣,僅負(fù)責(zé)資源分配(由于Resource Manager功能簡單,所以不會(huì)嚴(yán)重制約系統(tǒng)的擴(kuò)展性)彩掐,而Application Master對應(yīng)一個(gè)具體的application(如Hadoop job淤翔, Spark Job等),主要負(fù)責(zé)application的資源申請佩谷,啟動(dòng)各個(gè)任務(wù)和運(yùn)行狀態(tài)監(jiān)控(沒有調(diào)度功能)。
- Mesos與YARN比較
Mesos與YARN主要在以下幾方面有明顯不同:
(1)框架擔(dān)任的角色
在Mesos中监嗜,各種計(jì)算框架是完全融入Mesos中的谐檀,也就是說,如果你想在Mesos中添加一個(gè)新的計(jì)算框架裁奇,首先需要在Mesos中部署一套該框架桐猬;而在YARN中,各種框架作為client端的library使用刽肠,僅僅是你編寫的程序的一個(gè)庫溃肪,不需要事先部署一套該框架。從這點(diǎn)上說音五,YARN運(yùn)行和使用起來更加方便惫撰。
(2)調(diào)度機(jī)制
兩種系統(tǒng)都采用了雙層調(diào)度機(jī)制,即躺涝,第一層是源管理系統(tǒng)(mesos/YARN)將資源分配給應(yīng)用程序(或框架)厨钻,第二層,應(yīng)用程序?qū)⑹盏降馁Y源進(jìn)一步分配給內(nèi)部的任務(wù)坚嗜。但是資源分配器智能化程度不同夯膀,mesos是基于resource offer的調(diào)度機(jī)制,包含非常少的調(diào)度語義苍蔬,他只是簡單的將資源推給各個(gè)應(yīng)用程序诱建,由應(yīng)用程序選擇是否接受資源,而mesos本身并不知道各個(gè)應(yīng)用程序資源需求碟绑;YARN則不同俺猿,應(yīng)用程序的ApplicationMaster會(huì)把各個(gè)任務(wù)的資源要求匯報(bào)給YARN茎匠,YARN則根據(jù)需要為應(yīng)用程序分配資源。
其他各個(gè)特性對比如下表:
- Mesos與YARN發(fā)展情況
個(gè)人認(rèn)為Mesos和YARN均不成熟辜荠,很多承諾的功能還未實(shí)現(xiàn)或者實(shí)現(xiàn)得不全汽抚,但總體看,它們發(fā)展很快伯病,尤其是YARN造烁,在去年年末推出Hadoop-0.23.0后,近期又推出Hadoop-0.23.1午笛。隨著各種計(jì)算框架(如Spark惭蟋,S4,Storm等)的日趨成熟药磺,一個(gè)統(tǒng)一的資源管理和調(diào)度平臺(tái)將不可或缺告组。
另一個(gè)與Mesos和YARN類似的系統(tǒng)是Facebook開源的Hadoop Coroca,具體可參考:“Hadoop Corona介紹”癌佩。 - 參考資料
(1)Mesos論文:Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center. B. Hindman, A. Konwinski, M. Zaharia, A. Ghodsi, A.D. Joseph, R. Katz, S. Shenker and I. Stoica, NSDI 2011, March 2011.
(2) Mesos官網(wǎng):http://incubator.apache.org/mesos/index.html
(3)YARN官網(wǎng):http://hadoop.apache.org/common/docs/r0.23.0/index.html
(4)下一代Apache Hadoop MapReduce框架的架構(gòu):
http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/
原創(chuàng)文章木缝,轉(zhuǎn)載請注明: 轉(zhuǎn)載自董的博客
本文鏈接地址: http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/
作者:Dong,作者介紹:http://dongxicheng.org/about/
本博客的文章集合:http://dongxicheng.org/recommend/
Hadoop, MapReduce NextGen, Mesos, MRv2, yarn, 下一代MapReduce
評論 (9)
引用通告 (0)
1樓ye
回復(fù)
Post: 2012-06-08 07:21
我瘋了围辙,老大分布式計(jì)算的新技術(shù)層出不窮我碟,剛看完mapreduce源碼又看到spark 現(xiàn)在又是這些 神啊
[回復(fù)]
回復(fù):六月 8th, 2012 at 下午 11:55
Hadoop,Spark姚建,Storm矫俺,S4,……
[回復(fù)]
ye
回復(fù):六月 21st, 2012 at 上午 8:24
經(jīng)车г看你的博客厘托,以后請多多指教啊
[回復(fù)]
2樓yexiaojiang
回復(fù)
Post: 2012-06-29 08:20
能寫篇介紹下各種分布式計(jì)算框架安裝于同一組機(jī)器的文章嗎?我想把各種框架都自己手動(dòng)安裝一下稿湿!
[回復(fù)]
3樓wangfeng
回復(fù)
Post: 2012-09-27 03:36
每個(gè)架構(gòu)師為了解決一種業(yè)務(wù)問題铅匹,還是大同小異,解決問題的根本思路是一致的饺藤,只是宏觀表現(xiàn)上不同伊群,因?yàn)殛P(guān)注點(diǎn)不同
[回復(fù)]
4樓pinopino
回復(fù)
Post: 2012-10-22 03:15
我是一名.net下的普通程序員, 看過很多你博客上關(guān)于分布式技術(shù)的文章. 讓我很奇怪, 也讓我很納悶的一點(diǎn)就是為嘛.net就沒有這些生機(jī)勃勃的東西呢? 為嘛全都是java的全都是linux的? .net程序員干嘛去了呢?(額…好吧,我在寫該死的CRUD)
[回復(fù)]
回復(fù):十一月 18th, 2013 at 上午 11:26
微軟內(nèi)部是有這樣一套東西的,叫cosmos策精,我只能說舰始,很有特色,主要是用來支撐bing的咽袜,雖然人家確實(shí)不開源吧丸卷,但做的也確實(shí)挺好的。上面的框架式scope询刹,可以關(guān)注一下谜嫉,這個(gè)上面發(fā)的paper很多萎坷。微軟對Hadoop也有貢獻(xiàn)呀,比如說REEF
[回復(fù)]
5樓Dong
回復(fù)
Post: 2012-10-23 01:09
.net是微軟的沐兰, 光憑這個(gè)哆档,就不可能收到開源屆青睞,怎么可能生機(jī)勃勃住闯, .net只能是個(gè)封閉的技術(shù)瓜浸, 永不可能生機(jī)勃勃。以后的發(fā)展趨勢是比原,一個(gè)技術(shù)插佛,走封閉路線,不開源量窘,則不可能流行起來雇寇, 就跟symbian之與andriod一樣
[回復(fù)]
回復(fù):四月 11th, 2013 at 下午 1:12
Microsoft有Dryad (類似MR parallel computing), Daytona (類似迭代MR計(jì)算), Windows Azure (PaaS Clud), .NET Hadoop,開源的分布式引擎和框架都會(huì)支持多種接口的,.NET一樣可以用的,其實(shí)作為一名程序架構(gòu)師,還是應(yīng)該全面了解,各網(wǎng)絡(luò)公司為著自己的業(yè)務(wù)提出各類計(jì)算模型和框架,并不奇怪,并極力開源以獲取更多.
我倒是希望Google能開源更多新的計(jì)算框架和系統(tǒng),類似Pregel, BigQuery, Spanner,省的那幫Google跳出去的人嘰嘰喳喳的參考開發(fā)出這許多Hadoop/MR/Mesos/S4/…
[回復(fù)]
Dong
回復(fù):四月 11th, 2013 at 下午 11:46
這些開源系統(tǒng)的架構(gòu)是google提出來的,但是開源屆做的時(shí)候可能最終將這個(gè)系統(tǒng)做的面目全非了蚌铜,甚至可能google會(huì)反過來借鑒很多開源的idea豐富到自己的系統(tǒng)上锨侯。另外,有些系統(tǒng)并不是google首先提出來的(至少出現(xiàn)前google并沒有透露任何消息)冬殃,比如Hive(09年囚痴,google關(guān)于tenzing、dremel的論文發(fā)表于11和10年)造壮,mesos(這個(gè)就更早了)。隨著開源概念的深入人心骂束,很多新穎的系統(tǒng)會(huì)出現(xiàn)耳璧,這些系統(tǒng),google并不一定有展箱,相反旨枯,google可能會(huì)反過來學(xué)習(xí)。 google當(dāng)初開源的MapReduce混驰,GFS等論文推動(dòng)了開源的飛速發(fā)展攀隔,但一旦發(fā)展到一定程度,各種創(chuàng)造性的系統(tǒng)就會(huì)出現(xiàn)栖榨。畢竟昆汹,開源實(shí)際上是一種“群體智慧”的體現(xiàn),這里的群體是全世界范圍內(nèi)的hacker婴栽。
[回復(fù)]
6樓封神
回復(fù)
Post: 2013-01-08 09:11
其實(shí)都是雙層的满粗,只是粒度的問題。我感覺兩者都差不多愚争,做到最后會(huì)很相似的映皆。
[回復(fù)]
7樓weirorange7
回復(fù)
Post: 2014-03-11 07:42
您好挤聘,本篇文章中在與mesos的對比中說yarn是單層調(diào)度,但是在您的書中捅彻,第161頁說yarn是雙層資源調(diào)度模型组去,正確的應(yīng)該是哪一個(gè)呢?還有就是yarn分配任務(wù)的時(shí)候步淹,是只分配到應(yīng)用程序這一層从隆,還是到具體的任務(wù)呢?謝謝您啦
[回復(fù)]
回復(fù):三月 11th, 2014 at 上午 9:44
之前理解有誤贤旷,現(xiàn)在已經(jīng)修改了广料,看現(xiàn)在的內(nèi)容。
[回復(fù)]
8樓modeyangg
回復(fù)
Post: 2014-03-17 01:20
您好幼驶,很喜歡您的博客和微信艾杏,看完這篇文章有幾個(gè)問題想請教一下。1. 本文中對于YARN的框架圖里面的Container是做什么用的盅藻?我你文章中寫到Y(jié)ARN的隔離性是進(jìn)程級別购桑,不存在像mesos那樣利用linux container將每個(gè)任務(wù)隔離起來。2. YARN對于容災(zāi)性的處理還能不能詳細(xì)一點(diǎn)介紹氏淑,我看您說的定時(shí)將任務(wù)保存在磁盤勃蜘,那如果宕機(jī)了怎么辦呢? 這點(diǎn)Mesos如果在slave宕機(jī)后假残,F(xiàn)ramework/master就會(huì)監(jiān)聽到slave的狀態(tài)缭贡,將在這個(gè)slave中的任務(wù)重新分配,以保證任務(wù)的成功執(zhí)行辉懒。這兩個(gè)框架對于容災(zāi)性處理優(yōu)劣能分析下嗎阳惹?3. 如你本文中講到,Mesos和YARN在任務(wù)資源分配中存在很大不同眶俩,Mesos是不能夠感知到任務(wù)的資源要求的莹汤,而由Framework內(nèi)部的二次調(diào)度完成,而YARN里面颠印,應(yīng)用程序ApplicationMaster會(huì)把各個(gè)任務(wù)的資源要求匯報(bào)給YARN纲岭,YARN則根據(jù)需要為應(yīng)用程序分配資源。我想問的是线罕,在YARN中如何確定每個(gè)任務(wù)的資源要求呢止潮? 經(jīng)驗(yàn)值還是?可能對于YARN還不怎么了解钞楼,望回復(fù)沽翔,謝謝。
[回復(fù)]
回復(fù):三月 18th, 2014 at 上午 12:42
-
Container就是一個(gè)抽象概念,封轉(zhuǎn)了任務(wù)執(zhí)行所需的環(huán)境仅偎、資源等信息跨蟹, 這篇文章比較早了,現(xiàn)在YARN已經(jīng)像Mesos一樣橘沥,提供了cgroups隔離機(jī)制窗轩。2. YARN目前也不太適合運(yùn)行長服務(wù),應(yīng)以像map task或者reduce task這樣的短任務(wù)為主座咆,這主要是因?yàn)閥arn直接從mapreduce過渡來的痢艺,而mesos不同,他先天就考慮到了部署長服務(wù)介陶。 不過yarn正在朝著方面發(fā)展堤舒。3. 用戶提交應(yīng)用程序時(shí),需指定你的task需要的資源量哺呜,這個(gè)值是用戶自己確定的(默認(rèn)值)舌缤,一般是經(jīng)驗(yàn)值,或者估算值某残。目前這方面還難以做到智能推測国撵。
[回復(fù)]
modeyangg
回復(fù):三月 18th, 2014 at 上午 1:45
謝謝回復(fù),正在拜讀您的別的文章玻墅,希望能多多指教介牙。
[回復(fù)]
9樓SelfMedicated
回復(fù)
Post: 2014-06-19 03:22
董大哥,能否把你寫的文章加上一個(gè)文章發(fā)表時(shí)間澳厢,因?yàn)槲恼碌膬?nèi)容(比如“該開源軟件目前還很不穩(wěn)定”)环础,是基于時(shí)間的,當(dāng)然從評論也能粗略看出時(shí)間剩拢,但不準(zhǔn)確….
[回復(fù)]