Framework开发指南 二

来源:互联网 发布:支付宝怎么跟淘宝绑定 编辑:程序博客网 时间:2024/05/18 15:05

转自:http://www.hitdcos.com/read.php?tid=15&fpage=4


Scheduler驱动API(Scheduler Driver API)
Scheduler Driver管理着scheduler的生命周期 (e.g., 开始、停止和等着完成并且和 Mesos Master通信 (e.g., 发布Tasks、杀死Tasks等).
注意这个接口通常不是由framework自身实现的,但它描述了可以与Mesos Master沟通的framework scheduler的可能的形式。
Please note that usage of this interface requires an instantiated MesosSchedulerDiver. Seesrc/examples/test_framework.cpp for an example of using the MesosSchedulerDriver.
请注意,这个接口的使用需要实例化mesos scheduler diver。看src/examples/test_framework.cpp正是使用mesos scheduler driver的例子
声名于 MESOS_HOME/include/mesos/scheduler.hpp
// 启动调度程序驱动程序。这需要在启动任何其他驱动程序之前调用。
virtual Status start();
//停止调度程序驱动程序。如果的话,
//这个Framework将永远不会重新连接到Mesos,Mesos所以将注销Framework关闭这个Framework
// 所有的TasksExecutors。如果''failover''标志设置为true,所有的ExecutorsTasks将继续运行
//(对于一些Framework故障超时的情况允许调度程序重新连接
//通常是同一个进程也有可能是不同的进程例如,在不同的机器上的情况)。
virtual Status stop(bool failover = false);
/ /中止驱动,因此对Executors没有没有更多的回调
/ /中止和停止的语义被有意区分所以代码便可以检测到一个中止的驱动程序(即通过
/ / scheduler driver::join返回状态,见下文),如果需要的话(从同一个过程中)
//实例化并启动另一个驱动。
//注意stop()没有自动调用里面的abort()”。
virtual Status abort();
// 等待驱动被停止或中止,可能当前线程被永久的卡住了。
//函数的返回状态被用来判断驱动是否终止.
//(了解状态描述查看mesos.proto)。
virtual Status join();
//启动并立即连接例如,块)的驱动程序。
virtual Status run();
//从Mesos请求资源(通过mesos.proto查看请求的描述和怎样处理例如从特定的Slaves 请求资源)。
//所有可用资源都是通过Scheduler::resourceOffers 异步地回调的。
virtual Status requestResources(const std::vector<Request>& requests);
//发给定的任务集。任何剩余资源(即,不被Tasks或他们的Executors使用)将被拒绝。
//特定的过滤器用于所有未使用的资源(见mesos.proto过滤器描述)。
//当提供多个offers时,可利用资源汇总。请注意,所有offers都必须是同一个Slave
//用空任务集作为参数调用这个函数讲拒绝offers的全部资源(Scheduler::declineOffer)
virtual Status launchTasks(
    const std::vector<OfferID>& offerIds,
    const std::vector<TaskInfo>& tasks,
const Filters& filters = Filters());
//杀死指定任务。注意,想要杀死一个目前不可靠的任务
//例如,如果一个试图杀死Tasks的Scheduler失败时,需要再次尝试。
//同样,如果未注册/断开,请求将被丢弃(这些语义可能在将来改变)。
virtual Status killTask(const TaskID& taskId);
//接受给定的offers对该offers的执行一系列操作
//查看mesos.proto里的Offer.Operationmesos.proto了解合适的的操作。可用资源汇总
//当提供多个offers时,可利用资源汇总。请注意,所有offers都必须是同一个Slave
//任何未使用的资源将被拒绝
/ /指定的过滤器用于所有未使用的资源(见过滤器说明mesos.proto)
virtual Status acceptOffers(
    const std::vector<OfferID>& offerIds,
    const std::vector<Offer::Operation>& operations,
    const Filters& filters = Filters());
 
/作为整体拒绝offer的全部资源并且对资源应用一个特定的过滤器
//注意,这可以在任何时候发生,并不一定发生在Scheduler::resourceOffers回调期间。
virtual Status declineOffer(
    const OfferID& offerId,
    const Filters& filters = Filters());
//删除框架先前设置的所有过滤器(通过launchtasks()设置的) 。
//这使得Framework可以接收来自那些滤过器剔除的奴隶
virtual Status reviveOffers();
//通知Mesos master停止Framework发送offers
//Scheduler应该调用reviveOffers()恢复接受offers
virtual Status suppressOffers();
//获取状态更新。这函数只在Scheduler永久的更新状态时被调用
//必须通过构造函数参数请求获取具体的更新状态,否则此方法调用将导致驱动崩溃。
virtual Status acknowledgeStatusUpdate(const TaskStatus& status);
/ /Framework对它的一个Executor发送一个消息。这些消息的发送不可靠的
/ /不要期望一个Framework的信息任何可靠的方式转发
virtual Status sendFrameworkMessage(
    const ExecutorsID& ExecutorsId,
    const SlaveID& slaveId,
const std::string& data);
 
//允许该框架查询非终结Tasks的状态。
//这会使Master尽可能的返回每个在‘statuses’的Tasks的最新Tasks状态
//不在‘statuses’里的任务将会做TASK_LOST更新。
//如果‘statuses’是空的,Master将传回每个已知Tasks的最新状态。
virtual Status reconcileTasks(const std::vector<TaskStatus>& statuses);

0 0