Apache Mesos的任務(wù)分配過程分析
Apache Mesos的任務(wù)分配過程分析,見下圖:
步驟1 當(dāng)出現(xiàn)以下幾種事件中的一種時(shí),會(huì)觸發(fā)資源分配行為:新框架注冊(cè)、框架注銷、增加節(jié)點(diǎn)、出現(xiàn)空閑資源等;
步驟2 Mesos Master中的Allocator模塊為某個(gè)框架分配資源,并將資源封裝到ResourceOffersMessage(Protocal Buffer Message)中,通過網(wǎng)絡(luò)傳輸給SchedulerProcess;
步驟3 SchedulerProcess調(diào)用用戶編寫的Scheduler中的resourceOffers函數(shù)(不能版本可能有變動(dòng)),告之有新資源可用;
步驟4 用戶的Scheduler調(diào)用MesosSchedulerDriver中的launchTasks()函數(shù),告之將要啟動(dòng)的任務(wù);
步驟5 SchedulerProcess將待啟動(dòng)的任務(wù)封裝到LaunchTasksMessage(Protocal Buffer Message)中,通過網(wǎng)絡(luò)傳輸給Mesos Master;
步驟6 Mesos Master將待啟動(dòng)的任務(wù)封裝成RunTaskMessage發(fā)送給各個(gè)Mesos Slave;
步驟7 Mesos Slave收到RunTaskMessage消息后,將之進(jìn)一步發(fā)送給對(duì)應(yīng)的ExecutorProcess;
步驟8 ExecutorProcess收到消息后,進(jìn)行資源本地化,并準(zhǔn)備任務(wù)運(yùn)行環(huán)境,最終調(diào)用用戶編寫的Executor中的launchTask啟動(dòng)任務(wù)(如果Executor尚未啟動(dòng),則先要啟動(dòng)Executor)。
在一個(gè)Mesos Slave上,一個(gè)任務(wù)啟動(dòng)過程如下圖所示:
原文鏈接:http://dongxicheng.org/apache-mesos/apache-mesos-task-assignment/