Apache Mesos

Apache Mesos

Apache Mesos是由加州大學伯克利分校的AMPLab首先開發的一款開源群集管理軟體,支持HadoopElasticSearchSpark、Storm 和Kafka等應用架構。

分散式系統內核


Mesos使用了與Linux內核相似的規則來構造,僅僅是不同抽象層級的差別。Mesos從設備(物理機或虛擬機)抽取 CPU,內存,存儲和其他計算資源,讓容錯和彈性分散式系統更容易使用。Mesos內核運行在每個機器上,在整個數據中心和雲環境內嚮應用程序(Hadoop、Spark、Kafka、Elastic Serarch等等)提供資源管理和資源負載的API介面。

系統特性


• 可擴展到10000個節點
• 使用ZooKeeper實現Master和Slave的容錯
• 支持Docker容器
• 使用Linux容器實現本地任務隔離
• 基於多資源(內存,CPU、磁碟、埠)調度
• 提供Java,Python,C++等多種語言 APIs
• 通過Web界面查看集群狀態

架構


從左側架構圖上可知,Mesos包含兩個組件:Master Daemon和Slave Daemon,Master Daemon管理所有的Slave Daemon,Slave Daemon運行在各個節點上。
通過資源供給(Resource Offers)Master Daemon實現了跨應用的細粒度資源(CPU、內存、...)共享。每個資源供給(Resource Offers)包含一組資源列表。對照既定組織策略(例如共享屬性、優先順序),Master Dameon決定提供多少資源給每個應用框架。為了支持不同的策略控制,Master Daemon使用可拔插的模塊化的架構方便增加新的策略控制機制。
運行在Mesos上的應用一般由兩部分組件組成:調度器(Scheduler)和執行進程(Executor Process)。調度器註冊在Master Daemon上用於決策資源供給,執行進運行在Slave節點上用於運行各個應用任務。當Master Daemon決定供給應用多少資源時,由調度器決定把那裡的資源提供該應用使用。當應用決定接受被提供的資源時,它會告訴Mesos需要運行的任務都是什麼,Mesos在對應的Slave節點上載入這些任務。