Apache Mesos是什么?
Apache Mesos的官方網站的描述
分布式系統內核
Mesos采用與Linux kernerl相同的機制,只是運行在不同的抽象層次上。Mesos kernel利用資源管理和調度的API在整個數據中心或云環境中運行和提供引用(例如,Hadoop,Spark,Kafaka,Elastic Search)。即Apache Mesos在整個數據中心根據資源利用率和資源占用情況,在整個數據中心內進行任務的調度 。
主要特性:
- 10,000s節點規模;
- 利用Zookeeper實現master和slave的高可用;
- 支持Docker容器;
- 任務之間利用linux容器進行隔離
- 多種資源調度(內存,CPU,磁盤,端口)
- 支持JAVA,Python和C++ API
- 基于WEBUI可視化集成狀態查看
提出Mesos論文中的摘要
Mesos是支持在多種計算集群框架(frameworks)間共享服務器集群的平臺,利用HADOOP,MPI。提高了集群資源占用率,避免了每 種框架的數據重復。Mesos能夠鏡像細粒度的資源共享,通過輪流的讀取磁盤數據是的frameworks能從本地獲取數據。為了滿足復雜的資源調度方 法,Mesos引入了稱為資源提供的(resource offer)的2層資源調度機制。Mesos決定多少資源分配給frameworks,frameworks決定接受多少資源和決定哪個任務使用多少資 源。
Mesos的目標場景
細粒度的在不同的frameworks之間共享資源。
Apache Mesos架構
Mesos由Mesos master,Mesos slave即其上的任務組成。Mesos master通過resource offer的方式在不同的應用間進行資源共享。每個resource offer包含一個列表。Master按照給定的策略,為每個framework分配資源,利用公平調度、按優先級調度。Mesos提供了插件機制來擴 展,資源分配策略。
運行于Mesos之上的framework有兩部分組成:注冊到Mesos中的調度器、運行在slave節點的任務執行進程。Master決定分配多少資 源每個framework,framework調度器決定使用master提供的資源哪些資源,然后framework將需要運行任務的描述傳遞給 Mesos。接著,Mesos在指定的slave上運行任務。
Resource offer的示例
- Slave1上報其有4 cpu和4 GB內存空閑。然后,Mesos mater上的資源調度器被喚醒,調度器決定所有的資源都提供給framework1
- Mesos master發送resource offer描述給frmework1;
- Frame work1通知Mesos master,有占用的任務1和占用的任務2要運行在slave上;
- Master發送任務給slave,slave分配資源兩個任務,然后運行兩個任務。由于還剩余,這可能會分配給Framework2. 還有很贊的一點:Mesos提供了一種拒絕機制,來滿足Mesos在知道frmework資源要求的情況下來進行resource offer。
總結
Mesos的核心思想是提供2-layer調度機制,來完成在不同的framework之間進行資源共享。用以滿足在同一個集群內,同時運行spark,hadoop等不同計算集群的需求。同時,通過zookeeper來保證高可用。
參考:
1http://mesos.berkeley.edu/mesos_tech_report.pdf
2http://mesos.apache.org/documentation/latest/mesos-architecture/