Mesos介绍
????Mesos項目可以很容易地實現(xiàn)分布式應用的自動化調(diào)度。同時,Mesos自身也很高的結合和主持了Docker等相關容器技術,基于Mesos已有的大量應用框架,可以實現(xiàn)用戶應用的快速上線。
????Mesos可以將整個數(shù)據(jù)中心的資源(包括CPU、內(nèi)存、存儲、網(wǎng)絡等)進行抽象和調(diào)度,是的多個應用同時運行在集群中分享資源,并無需關心資源的屋里分布情況。
如果把數(shù)據(jù)中心中的集群資源看做一臺服務器,那么Mesos要做的事情,其實就是今天操作系統(tǒng)內(nèi)核的職責:抽象資源+調(diào)度任務。Mesos項目代碼已經(jīng)相對成熟。擁有許多引人注目的特性,包括:
Mesos才用了經(jīng)典的“主-從”架構,其中主節(jié)點(管理節(jié)點)可以使用Zookeeper來做HA。Mesos master 服務獎運行在主節(jié)點上,Mesos slave 服務則需要運行在各個計算任務節(jié)點上。負責完成具體任務的應用框架,與Mesos master進行交互,來申請資源。
???????? Mesos有三個基本的組件:管理服務(master)、任務服務(slave)以及應用框架(framework)。
???????? 管理服務(master):跟大部分分布式系統(tǒng)中類似,主節(jié)點起到管理作用,將看到全局的信息,負責不同應用框架之間的資源調(diào)度和邏輯控制。應用框架需要注冊到管理服務上才能被使用。用戶和應用需要通用主節(jié)點提供的API來獲取集群狀態(tài)和操作集群資源。
???????? 任務服務(slave):負責匯報本從節(jié)點上的資源狀態(tài)(空閑資源、運行狀態(tài)等等)給主節(jié)點,并負責隔離本地資源來執(zhí)行主節(jié)點分配的具體任務。隔離機制目前包括各種容器機制,包括LXC、Docker等。
???????? 應用框架(framework):應用框架是實際干活的,包括連個主要組件:
?????????????????? 調(diào)度器:注冊到主機誒單,等待分配資源;
?????????????????? 執(zhí)行器:在從節(jié)點上執(zhí)行框架指定的任務(框架也可以使用Mesos自帶的執(zhí)行器,包括shell腳本執(zhí)行器和Docker執(zhí)行器)
???????? 應用框架可以分兩種:一種是對資源的需求會擴展(比如Hadoop、Spark等),申請后還可能調(diào)整;另一種是對資源的需求將會固定(MPI等),一次申請即可。
調(diào)度
????對于一個資源調(diào)度框架來說,最核心的就是調(diào)度機制,怎么能快速高效地完成對某個應用框架資源的分配,是核心競爭力所在。最理想情況下(大部分時候都無法實現(xiàn)),最好是能猜到應用們的實際需求,實現(xiàn)最大化的資源使用率。
????Mesos為了實現(xiàn)盡量優(yōu)化的調(diào)度,采取了兩層(two-layer)的調(diào)度算法
????調(diào)度的基本思路很簡單,master先全局調(diào)度一大塊資源給某個framework,framework自己在實現(xiàn)內(nèi)部的細粒度調(diào)度,決定那個任務用多少資源。兩層調(diào)度簡化了Mesos master自身的調(diào)度過程,通過將復雜的細粒度調(diào)度交由framework實現(xiàn),避免了Mesos master成為性能的瓶頸。
調(diào)度過程
????調(diào)度通過offer發(fā)送的方式進行交互。一個offer是一組資源例如<1 CPU ,2GB Mem>>。
基本調(diào)度過程如下:
????具體給出一個例子:某從節(jié)點想主節(jié)點匯報自己有<4 CPU , 8 GB Mem>的空閑資源,同時,主節(jié)點看到某個應用框架請求<3 CPU , 6 GB Mem>,就創(chuàng)建一個offer<slave #1, 4 CPU, 8GB> 把滿足的資源發(fā)給應用框架。應用框架(的調(diào)度器)收到offer后覺得可以接受,就恢復主節(jié)點,并告訴主機節(jié)點希望運行兩個任務:一個占用<1CPU ,2GB Mem>, 一個占用<2 CPU , 4GB Mem>。主節(jié)點收到任務信息后分配任務到從節(jié)點上運行(實際上是應用框架的執(zhí)行器來負責執(zhí)行任務)。任務執(zhí)行結束后資源可以被釋放出來。剩余則資源還尅繼續(xù)分配給其他應用框架或任務。
????應用框架在收到offer后,如果offer不滿足自己的偏好(例如希望繼續(xù)使用上次的slave)則可以選擇拒絕offer,等待master發(fā)送新的offer過來。另外可以通過過濾機制加快資源的分配過程。
?
總結
- 上一篇: 【5分钟系列】搭建基于docker环境搭
- 下一篇: ThreadPoolExecutor里面