Myriad項目: Mesos和YARN 協同工作
http://www.infoq.com/cn/news/2015/03/Myriad
Jim Scott發表了新文章《 兩個集群的故事:Mesos和YARN 》,它從當今許多IT采購中一個相當常見的情況開始講述,即多資源孤島:
第一個集群是Apache Hadoop,它相當于一個島,它的資源全部用于Hadoop平臺和它的進程。第二個集群就是除了Hadoop之外其它所有資源所在的集群。
之所以產生這種情況是由于Hadoop是用 Apache YARN 來管理自己的資源,而盡管YARN在Hadoop集群中工作的不錯,但對于非大數據的應用YARN就顯得不那么適用了。
就像Scott在他文章中說得那樣,這里的問題在于YARN所實現的調度方法:
當一個作業請求提交到YARN的資源管理器,YARN會對可用的資源進行評估,并放置作業到相應的位置。這是一個作業應該去哪兒的決定 ……, YARN針對Hadoop中的作業調度進行了優化,從歷史或者典型場景的角度來說,這種優化都是針對長時間運行的批處理作業。這就意味著YARN并不是為 長時間服務,或者短生命周期的交互式查詢來設計的……,雖然有可能讓YARN去調度其它這些工作負載,但顯然這不是個理想的模型。
另一個不同的調度模型就是 Apache Mesos ,它:
……利用了兩級調度機制,即資源的請求和提供是針對框架(framework)而不是作業,可以把框架視為在Mesos上面運行的 應用。Mesos的主節點決策提供給每個框架多少資源,每個框架接著決策它能接受的資源申請以及哪種應用可以在這些資源上運行。當集群中的節點共享多個框 架時,這種資源分配方法可以獲得近似最佳的數據本地化(data locality)。
現實情況中,Mesos和YARN在IT基礎設施中都占有重要的位置。但是像Scott所講述的,當你把它們兩個背靠背使用時就會導致資源分裂。
在相同的數據中心同時使用Mesos和YARN兩個資源管理器會帶來益處,但目前需要你創建兩個不同的靜態分區。這也意味著某些資源會專屬于Hadoop,需要用YARN來管理,而其余的則是用Mesos。
如同Scott所說,eBay、MapR和 Mesosphere合作了一個新項目,被稱作 Myriad ,它可以讓YARN和Mesos和諧的工作,而這會給企業和數據中心帶來好處。
這個開源項目是Mesos框架和YARN調度器的結合,它使得Mesos可以管理YARN的資源請求。當YARN中有作業請求資源時,YARN的資源管理 器會先通過Myriad的調度器來調度,這樣就可以和Mesos的資源申請和提供匹配起來。Mesos Master接下來會把調度請求發給Mesos的工作節點(Mesos Slave)。Mesos的工作節點會和Myriad的執行器(executor)進行通信并發送請求, Myriad執行器的作用是運行YARN的 節點管理器(Node Manager) 。當Myriad在Mesos分配的資源上加載YARN節點管理器后,YARN節點管理器就會和YARN的資源管理器通信來確定作業可用的資源。YARN 可以以自己認為適合的方法來使用資源,Myriad則在Mesos可用的資源池和YARN的有資源需求的任務間提供了無縫的橋梁。
Myriad使得在使用Mesos時,資源利用和跨數據中心的資源管理得以統一。在這種情況下,YARN的工作負載是運行在共享的集群上,相比 獨立的YARN集群來說,更加動態和彈性。這個方法也使得數據中心維護團隊可以擴展其資源以供給YARN(或者,從YARN拿走)而無須去重新配置集群。