您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“什么是Mesos”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Mesos項(xiàng)目可以很容易地實(shí)現(xiàn)分布式應(yīng)用的自動化調(diào)度。同時(shí),Mesos自身也很高的結(jié)合和主持了Docker等相關(guān)容器技術(shù),基于Mesos已有的大量應(yīng)用框架,可以實(shí)現(xiàn)用戶應(yīng)用的快速上線。
Mesos可以將整個(gè)數(shù)據(jù)中心的資源(包括CPU、內(nèi)存、存儲、網(wǎng)絡(luò)等)進(jìn)行抽象和調(diào)度,是的多個(gè)應(yīng)用同時(shí)運(yùn)行在集群中分享資源,并無需關(guān)心資源的屋里分布情況。
如果把數(shù)據(jù)中心中的集群資源看做一臺服務(wù)器,那么Mesos要做的事情,其實(shí)就是今天操作系統(tǒng)內(nèi)核的職責(zé):抽象資源+調(diào)度任務(wù)。Mesos項(xiàng)目代碼已經(jīng)相對成熟。擁有許多引人注目的特性,包括:
支持?jǐn)?shù)萬個(gè)節(jié)點(diǎn)的大規(guī)模場景
支持多種應(yīng)用框架,包括Marathon、Singularity、Aurora等;
支持HA(基于ZooKeeper實(shí)現(xiàn))
支持Docker、LXC等容器機(jī)制進(jìn)行任務(wù)隔離;
提供了多個(gè)流行語言的API,包括Python、Javaden
自帶了簡潔易用的WebUI,方便用戶直接進(jìn)行操作;
Mesos才用了經(jīng)典的“主-從”架構(gòu),其中主節(jié)點(diǎn)(管理節(jié)點(diǎn))可以使用Zookeeper來做HA。Mesos master 服務(wù)獎(jiǎng)運(yùn)行在主節(jié)點(diǎn)上,Mesos slave 服務(wù)則需要運(yùn)行在各個(gè)計(jì)算任務(wù)節(jié)點(diǎn)上。負(fù)責(zé)完成具體任務(wù)的應(yīng)用框架,與Mesos master進(jìn)行交互,來申請資源。
Mesos有三個(gè)基本的組件:管理服務(wù)(master)、任務(wù)服務(wù)(slave)以及應(yīng)用框架(framework)。
管理服務(wù)(master):跟大部分分布式系統(tǒng)中類似,主節(jié)點(diǎn)起到管理作用,將看到全局的信息,負(fù)責(zé)不同應(yīng)用框架之間的資源調(diào)度和邏輯控制。應(yīng)用框架需要注冊到管理服務(wù)上才能被使用。用戶和應(yīng)用需要通用主節(jié)點(diǎn)提供的API來獲取集群狀態(tài)和操作集群資源。
任務(wù)服務(wù)(slave):負(fù)責(zé)匯報(bào)本從節(jié)點(diǎn)上的資源狀態(tài)(空閑資源、運(yùn)行狀態(tài)等等)給主節(jié)點(diǎn),并負(fù)責(zé)隔離本地資源來執(zhí)行主節(jié)點(diǎn)分配的具體任務(wù)。隔離機(jī)制目前包括各種容器機(jī)制,包括LXC、Docker等。
應(yīng)用框架(framework):應(yīng)用框架是實(shí)際干活的,包括連個(gè)主要組件:
調(diào)度器:注冊到主機(jī)誒單,等待分配資源;
執(zhí)行器:在從節(jié)點(diǎn)上執(zhí)行框架指定的任務(wù)(框架也可以使用Mesos自帶的執(zhí)行器,包括shell腳本執(zhí)行器和Docker執(zhí)行器)
應(yīng)用框架可以分兩種:一種是對資源的需求會擴(kuò)展(比如Hadoop、Spark等),申請后還可能調(diào)整;另一種是對資源的需求將會固定(MPI等),一次申請即可。
調(diào)度
對于一個(gè)資源調(diào)度框架來說,最核心的就是調(diào)度機(jī)制,怎么能快速高效地完成對某個(gè)應(yīng)用框架資源的分配,是核心競爭力所在。最理想情況下(大部分時(shí)候都無法實(shí)現(xiàn)),最好是能猜到應(yīng)用們的實(shí)際需求,實(shí)現(xiàn)最大化的資源使用率。
Mesos為了實(shí)現(xiàn)盡量優(yōu)化的調(diào)度,采取了兩層(two-layer)的調(diào)度算法
調(diào)度的基本思路很簡單,master先全局調(diào)度一大塊資源給某個(gè)framework,framework自己在實(shí)現(xiàn)內(nèi)部的細(xì)粒度調(diào)度,決定那個(gè)任務(wù)用多少資源。兩層調(diào)度簡化了Mesos master自身的調(diào)度過程,通過將復(fù)雜的細(xì)粒度調(diào)度交由framework實(shí)現(xiàn),避免了Mesos master成為性能的瓶頸。
調(diào)度過程
調(diào)度通過offer發(fā)送的方式進(jìn)行交互。一個(gè)offer是一組資源例如<1 CPU ,2GB Mem>>。
基本調(diào)度過程如下:
Slave節(jié)點(diǎn)會周期性匯報(bào)自己可用的資源給master;
某個(gè)時(shí)候,master收到應(yīng)用框架發(fā)來的資源請求,根據(jù)調(diào)度策略,計(jì)算出來一個(gè)資源offer給framework;
framework收到offer后可以決定要不要,如果接受的話,返回一個(gè)描述,說明自己希望如何使用和分配這些資源來運(yùn)行某些任務(wù)(可以說明只希望使用部分資源,則多出來的會被master收回);
master則根據(jù)framework答復(fù)的具體分配情況發(fā)送給slave,以使用framework的executor來按照分配的資源策略執(zhí)行任務(wù)。
具體給出一個(gè)例子:某從節(jié)點(diǎn)想主節(jié)點(diǎn)匯報(bào)自己有<4 CPU , 8 GB Mem>的空閑資源,同時(shí),主節(jié)點(diǎn)看到某個(gè)應(yīng)用框架請求<3 CPU , 6 GB Mem>,就創(chuàng)建一個(gè)offer<slave #1, 4 CPU, 8GB> 把滿足的資源發(fā)給應(yīng)用框架。應(yīng)用框架(的調(diào)度器)收到offer后覺得可以接受,就恢復(fù)主節(jié)點(diǎn),并告訴主機(jī)節(jié)點(diǎn)希望運(yùn)行兩個(gè)任務(wù):一個(gè)占用<1CPU ,2GB Mem>, 一個(gè)占用<2 CPU , 4GB Mem>。主節(jié)點(diǎn)收到任務(wù)信息后分配任務(wù)到從節(jié)點(diǎn)上運(yùn)行(實(shí)際上是應(yīng)用框架的執(zhí)行器來負(fù)責(zé)執(zhí)行任務(wù))。任務(wù)執(zhí)行結(jié)束后資源可以被釋放出來。剩余則資源還尅繼續(xù)分配給其他應(yīng)用框架或任務(wù)。
應(yīng)用框架在收到offer后,如果offer不滿足自己的偏好(例如希望繼續(xù)使用上次的slave)則可以選擇拒絕offer,等待master發(fā)送新的offer過來。另外可以通過過濾機(jī)制加快資源的分配過程。
“什么是Mesos”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。