Mesos 入門教程

Mesos提供了高效、跨分佈式應用程序和框架的資源隔離和共享,支持Hadoop、 MPI、Hypertable、Spark等。git

Mesos是Apache孵化器中的一個開源項目,使用ZooKeeper實現容錯複製,使用Linux Containers來隔離任務,支持多種資源計劃分配(內存和CPU)。提供Java、Python和C++ APIs來開發新的並行應用程序,提供基於Web的用戶界面來提查看集羣狀態。github

Mesos中包含四類主要的服務(其實是一個socket server),它們分別是Mesos Master,Mesos Slave,SchedulerProcess和ExecutorProcess,它們之間經過Protocal Buffer消息進行通訊,每種服務內部註冊了若干種Protocal Buffer消息處理器,一旦收到某種消息,則會調用相應的消息處理器進行處理。除了以上四種服務以外,Mesos還對外提供了三種可編程組件,分別是Alloctor、Framework Scheduler和Framework Executor,編寫這幾個組件必須按照要求實現了幾個接口,而這些接口將分別被下圖中相鄰的服務調用。apache

 

大部分人看到以上Mesos架構後,均會認爲Framework必須是一個通用的框架,好比MapReduce、Storm、Spark等,而Mesos Master負責將資源分配給各個框架,而各個框架的Scheduler進一步將資源分配給其內部的各個應用程序。這種觀念是錯誤的,是對Mesos架構的一種錯誤解讀。編程

事實上,Framework不只能夠是通用的框架,也能夠是像Hadoop的Job或者YARN的Application那樣的簡單計算任務,也就是說,Framework並須要必定是一個「Framework」,或者一個長時間運行的服務(好比JobTracker等),也能夠是一個短生命週期的Job或者Application。若是讓Framework對應一個Hadoop Job,則能夠這樣設計Framework Scheduler和Framework Executor:架構

(1)Framework Scheduler功能框架

Framework Scheduler負責按照做業的輸入數據量,將之分解成若干任務,併爲這些任務申請資源、監控這些任務的運行狀態,一旦發現某個任務運行失敗則從新爲之申請資源。socket

(2)Framework Executor功能分佈式

爲一個節點上的Map Task或者Reduce Task準備運行環境,包括準備各類jar包、二進制文件,設置必要的環境變量,進行必要的資源隔離,啓動Jetty Shuffle覺得Reduce Task提供遠程數據拷貝服務等,接收來自Framework Scheduler的命令(啓動任務、殺死任務等),並執行。工具

經過上面的介紹能夠知道,Framework Scheduler只負責運行一個Hadoop Job,而若是你對YARN比較熟悉,便會發現者正是YARN中的MapReduce ApplicationMaster作的事情,沒錯,Mesos與YARN的設計架構如此的相近,以致於咱們很容易經過修改YARN 的任何一個ApplicationMaster,讓它做爲一個Framework Scheduler運行在Mesos中。oop

最近Mesos提供了一個mesos-submit工具(https://github.com/apache/mesos/blob/trunk/docs/Using-the-mesos-submit-tool.md,注意,該工具尚不完善),該工具可讓用戶的Framework Scheduler運行在任何一個Mesos Slave上,以防止客戶端運行過多的Framework Scheduler,這樣,Mesos的整個架構和工做流程已經變得與YARN相差無幾了。

爲了讓你們更容易理解Mesos和YARN在架構上的類似性,下面給出了Mesos和YARN的組件對應表:

Mesos中的組件 YARN中的組件 功能
Mesos Master Resource Manager 整個集羣的資源管理和調度
Mesos Slave Node Manager 單個節點的資源管理(資源隔離、彙報等)、任務啓動等
Framework Executor
Framework Scheduler ApplicationMaster 單個應用程序的管理和資源二次調度,基本操做均包括註冊、資源申請/獲取、資源分配(給內部的任務)等。

既然Mesos和YARN如此的相近,那麼咱們到底應該使用哪個呢?或者說,哪個系統更有前景?

就目前看來,YARN在如下幾個方面存在明顯優點:(1)人力投入大。目前YARN有專門的公司(hortonwork)維護和開發 (2)知名度高。YARN以前從Hadoop 1.0中演化而來,繼承了Hadoop的知名度,且有大量公司和開發人員共享patch。然而,Mesos最大優勢的設計簡單、容易上手使用,它不像YARN那樣,一個資源的分配過程要涉及到若干個狀態機,且每種狀態機十幾種狀態,十幾種事件。但穩定性看,兩個系統都處於研發和測試階段,離穩定可用還有一段距離。

 

Reference

[1] 董的博客

相關文章
相關標籤/搜索