如何理解Mesos的Framework與Executor注冊過程,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
專注于為中小企業(yè)提供網(wǎng)站制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)織金免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
以Hadoop框架為例,介紹了framework與executor向mesos注冊過程。
1. Framework注冊過程
(1) JobTracker啟動時(shí),會調(diào)用MesosScheduler的start()方法
(2) MesosScheduler的start()方法創(chuàng)建一個(gè)MesosSchedulerDriver對象,并將自己作為參數(shù)傳入該對象。
(3) MesosSchedulerDriver初始化,創(chuàng)建一個(gè)SchedulerProcess對象
(4) MesosSchedulerDriver初始化,調(diào)用MasterDetector::create(),它將向SchedulerProcess對象發(fā)送一個(gè)NewMasterDetectedMessage消息
(5) SchedulerProcess對象收到NewMasterDetectedMessage消息后,向Master發(fā)送一個(gè)RegisterFrameworkMessage消息
(6) Master收到該消息后,保存相關(guān)信息,并返回FrameworkRegistedMessage消息,確認(rèn)framework注冊成功
2. Executor注冊過程
本節(jié)描述框架frameworkX在某個(gè)slaveX上注冊executor executorX的過程:
(1)Master***次向slaveX發(fā)送執(zhí)行frameworkX中task的消息 RunTaskMessage
(2)slave收到該消息后,運(yùn)行相應(yīng)的消息處理函數(shù)runTask()
(3)該函數(shù)發(fā)現(xiàn)該slave上未啟動frameworkX對應(yīng)的executorX,則調(diào)用IsolationModule的lauchExecutor()函數(shù)
(4)該函數(shù)創(chuàng)建一個(gè)FrameworkExecutor對象,并調(diào)用ExecutorProcess的Initialize()函數(shù)進(jìn)行初始化,同時(shí)啟動TaskTracker
(5)Initialize()函數(shù)創(chuàng)建消息RegisterExecutorMessage,并發(fā)送給slave
(6)Slave收到該消息后,調(diào)用對象的消息處理函數(shù)registerExecutor,該函數(shù)創(chuàng)建ExecutorRegisteredMessage消息,返回給ExecutorProcess
(7)ExecutorProcess收到該消息后,調(diào)用對應(yīng)的消息處理函數(shù)registered(),該函數(shù)再進(jìn)一步調(diào)用FrameworkExecutor的registered()函數(shù)
接下來,master發(fā)送給slave的RunTaskMessage消息依次經(jīng)過的流程如下圖所示。需要注意的是,對于同一個(gè)計(jì)算框 架,Mesos在一個(gè)slave上只會創(chuàng)建一個(gè)資源container,所有task全部在這個(gè)container里運(yùn)行,也就是說,mesos無法做到 task級別的隔離,只能做到executor級別的隔離,而對于同一個(gè)框架,同一個(gè)slave上所有task全部在一個(gè)executor中運(yùn)行。
對于Hadoop而言,每個(gè)mesos-slave上只會創(chuàng)建一個(gè)TaskTracker,且該TaskTracker會被放置到一個(gè) executor(對應(yīng)一個(gè)linux container)中運(yùn)行,而同一個(gè)TaskTracker上所有task均在該TaskTracker所在進(jìn)程樹中,因而共享該executor對應(yīng) 的資源。當(dāng)TaskTracker接收到新的task時(shí),會增加該executor可以使用的資源量(使用“l(fā)xc-cgroup –n %s %s %lld”),而當(dāng)有task運(yùn)行完成時(shí),則減少該executor可使用的資源量(使用“l(fā)xc-cgroup –n %s %s %lld”)。
關(guān)于如何理解Mesos的Framework與Executor注冊過程問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。