BEH-Execute分布式调度引擎

 

背景

1.ssh安全性问题,

2.docker,mesos云化系统支持问题

3.执行效率问题,尤其是大规模集群(超过50台),比如服务启动,目前全部需要中心server调动。

4.执行效果问题,目前的执行是触发式的(同步方式),只能获得ssh的执行结果,不能获得具体任务的执行结果。还是以服务启动为例,只能知道启动脚本的调用结果,无法获知每种角色的具体执行情况。

一.说明

BEH-EXECUTE是一个分布式的任务调度框架,可以帮助您更好地管理繁杂的任务。也让您能更好地利用分布式集群所带来的卓越性能。

主要技术特点如下:

  1. 流程任务:将一个任务划分成多个阶段,并通过DAG(有向无环图)的方式指定阶段及其命令的执行顺序。
  2. 真正的分布式:将任务手动或自动分配到最合适的节点上执行。
  3. 简单又强大的 Web 界面。
  4. RESTful API:作为中间件,供其它服务接入。
  5. 任务管理:快速添加任务、任务分类管理、快速查找任务、任务执行状态、任务执行历史、任务执行日志、邮件消息通知等。

二.技术框架

StagePlanner 负责将任务编排成阶段。

Coordinator 负责对注册的任务进行调度,调度主要根据阶段及阶段命令状态。

FSM 有限状态机实现,负责命令,主机的状态切换,详情请见FSM说明

ActionManager 主要负责管理任务相关数据,并提供RESTful API。

下面以命令执行中的hadoop启动为例进行说明

1.首先通过ActionManager注册hadoop启动任务信息;

2.StagePlanner根据注册的任务信息进行编排,得出命令执行序列;

任务主要分为四个阶段,

第一个阶段主要是基础组件zookeeper启动,

第二个阶段主要是辅助角色zkfc,jn启动,

第三个阶段为主节点nn,rm启动,

最后一个阶段为从节点dn,nm启动。

具体执行序列如下图

3.Coordinator根据命令执行序列信息,以及命令执行状态来进行命令调度;

4.ActionManager将命令执行序列信息,以及命令执行状态存入数据库,并提供命令获取接口;

5.Agent心跳线程获取执行命令,并定时将命令执行状态通过事件的形式反馈给ActionManager;

6.FSM根据新的命令事件,触发命令状态切换;如原来是执行中状态,新收到执行失败事件,则FSM会将状态切换为执行失败状态。

7.执行3,进行执行循环。

 

三.FSM说明

 

下面是组件安装的状态机流程图,

图例中圆圈所在为状态,状态间为触发状态切换的时间。

以初始状态INIT为例,如果接到HOST_SVCOMP_INSTALL事件,即安装时间,状态就会切换到INSTALLING。

 

 

四. 任务编排实例

下图为hadoop启动的任务编排,任务主要分为四个阶段,

第一个阶段主要是基础组件zookeeper启动,

第二个阶段主要是辅助角色zkfc,jn启动,

第三个阶段为主节点nn,rm启动,

最后一个阶段为从节点dn,nm启动。

 

介绍完毕。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值