故障處理 怎樣搭建在故障時仍可用的Mesos frameworks在separate document中進(jìn)行討論。 如何使用Executor 使用Mesos Command Executor Mesos 提供了一個簡單的executor,它可以執(zhí)行shell命令和代表framework scheduler的Docker container。足夠滿足各種各樣的框架的功能需求。 任何scheduler都可以使用 Mesos command executor 通過填寫可選的CommandInfo 。它TaskInfo protobuf 消息的成員。 message TaskInfo { ... optional CommandInfo command = 7; ... } 當(dāng)Tasks被指定這種方式時,Mesos slave將填寫ExecutorInfo 的剩余信息。 創(chuàng)建自定義Framework Executor 如果你的framework有特殊要求, 您可能希望提供您自己的Executor執(zhí)行程序。 例如,你可能不希望tasks和processes之間是1:1的關(guān)系 . 你的framework executor 必須繼承于Executor類.必須重構(gòu) launchTask() 方法。你也可以在executor使用 $MESOS_HOME環(huán)境變量來確定Mesos 可執(zhí)行程序的位置。 Executor API 聲名于 MESOS_HOME/include/mesos/executor.hpp /* *當(dāng)executor驅(qū)動程序已成功連接Mesos時調(diào)用。特別是,一個Scheduler可以通過 *FrameworkI*nfo.ExecutorInfo數(shù)據(jù)域傳遞一些到它的Executor。 virtual void registered(ExecutorDriver* driver, const ExecutorInfo& executorInfo, const FrameworkInfo& frameworkInfo, const SlaveInfo& slaveInfo); /* *當(dāng)executor和一個重新啟動的slave重新注冊時調(diào)用. */ virtual void reregistered(ExecutorDriver* driver, const SlaveInfo& slaveInfo); /* * 當(dāng)executor和slave變?yōu)闊o連接時調(diào)用。 * (例如,slave因更新而重啟時。). */ virtual void disconnected(ExecutorDriver* driver); /* * 當(dāng)一個task 被發(fā)布到這個executor (通過Scheduler::launchTasks初始化的)時調(diào)用. 注意這個*task通過 一個線程、一個進(jìn)程或一些簡單的計算, 然而,知道這個函數(shù)返回這個executor不會再 *調(diào)用其他的回調(diào)函數(shù)。 */ virtual void launchTask(ExecutorDriver* driver, const TaskInfo& task); /* * 當(dāng)一個運行于這個executor的Task被終止(通過schedulerdriver::killtask)時調(diào)用。 *注意無狀態(tài)更新代表這個Executor被發(fā)送,這個Executor負(fù)責(zé)創(chuàng)建一個新的TaskStatus(注,帶 *TASK_KILLED標(biāo)志)并調(diào)用ExecutorDriver::sendStatusUpdate。 */ virtual void killTask(ExecutorDriver* driver, const TaskID& taskId); /* * 當(dāng) framework消息到達(dá)這個executor時調(diào)用。這些消息的傳輸方式是盡力機制,不要期待framework消息以可靠方式重新轉(zhuǎn)發(fā)。 */ virtual void frameworkMessage(ExecutorDriver* driver, const std::string& data); /* *當(dāng)這個executor 要終止其上所有運行的tasks時被調(diào)用.注意在 Mesos 確定這個 *executor終止了所有這個executor沒有發(fā)送中止?fàn)顟B(tài)更新 (帶TASK_KILLED, TASK_FINISHED, *TASK_FAILED, 等標(biāo)志)的tasks之后將產(chǎn)生TASK_LOST狀態(tài)更新. */ virtual void shutdown(ExecutorDriver* driver); /* *當(dāng)executor或executor驅(qū)動發(fā)生一個致命錯誤時調(diào)用。在調(diào)用這個返回函數(shù)前,這個驅(qū)動將終止 。 */ virtual void error(ExecutorDriver* driver, const std::string& message); |
|