由一个STOP命令挖出Ambari如何下发任务

天龙系统部署MINIRDS失败,重试时,Ambari会对所有已经安装成功的组件下发一个STOP命令。对这个STOP,处女座的@风煜表示不能忍,so。。。开始啃Ambari源码之路。。。

抓包发现重试时,前端向server发送了一个PUT请求

ok,这个PUT请求到server端之后,server到底做了什么呢??

如下图所示,一个API如何产生部署阶段->stage

在Ambari中什么是stage呢,以部署MINIRDS为例,需要部署GLOBALCONFIG,METADB,BAKDB,PERFDB.....等等等等。

这些任务如PERFDB,BAKDB必须依赖METADB,所以部署PERFDB时必须保证METADB部署完成,所以GLOBALCOONFIG、METADB为第一阶段,PERFDB,BAKDB为第二阶段。

总体来讲,stage的任务规划是按照DAG的方式来实现的。什么是DAG?

`DAG:在图论中,如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。
因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。`

如何实现DAG?

在Ambari server算法中,所有的service作为一个结点(即METADB、GLOBALCONFIG),节点间的依赖关系为eage(边),如PERFDB依赖METADB,所以有一条METADB指向PERFDB的边。

如何划分stage?

遍历所有节点,将入度(指向该节点的边的个数)为0的节点作为一个stage,并将这些节点从原来哈希表中删除。
循环直至,所有节点都划分完毕。

从数据库中的数据验证结果。。。。

为什么会给安装好的组件下发STOP命令呢?

这是Ambari Controller的策略。在ambari server中,每个component都有一个状态机,当重试时,component状态为INSTALLED时,controller会向对应状态机执行STOP命令对应的HOST_SERVICE_COMPONENT_EVENT。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值