yarnRM使用


yarnRM逻辑

RM


: 部分转载董西城的yarn内幕书里的图

概念

1.cm: clientrmService
2.nm: resourcetrackerservice nodeslistmanager nmlivelinessmonitor 
3.am: applicationmanagerservice applicationmasterlaucher amlivelinessmonitor 
4. app:rmappmanager
5. resoucescheduler
5.状态机:rmapp rmappattempt rmcontainer rm node 

逻辑图:

看看事件驱动服务: 1.设计一个具有dispatcher的服务(注册event和handler

2.内部定义触发的handler类,维护不同事件类型对应handler的状态机实现

3.实现连续handler,直至没有handler处理,状态机:1-(e+h)-1 1-(e+h)-n 1-(*e+h)-1

2.其他服务或自己使用它:

可视化:

mvn compile -Pvisualize

dot -Tpng NodeManager.gx > NodeManaer.png

可以窥见他们的调用图:

状态机

1.aycEventsdispatcher是服务也是状态机 applicationmasterlaucher管理am的运行周期 rmappmanager

看RMAppImpl--app生命周期维护:

状态机里的每一个状态都是一个handler类型实现,每个handler都是一种操作,一种考虑。实现特定的事件类型做各种hook实现,里面的h变成回调函数统一了。比如accpted状态的handler叫 ……handler,继承eventhadlder,接受rmappImplType所有事件,针对特定事件,有不同的回调函数,去操作服务,去执行自己的逻辑,然后触发其他事件来handler其他操作。

事件从其他状态机调用传来的,这就有耦合的事件源产生了。

下图自己填充实际hook描述,以后工作有具体讨论:

如何读状态机?

起始状态有什么事件触发到什么状态,这个状态就是各种操作,各种操作可能通过事件流向各种状态。 操作需要自己解读。

一个app序列中的状态机逻辑:

大山 /
Published under (CC) BY-NC-SA in categories 逻辑与现象  yarn服务设计使用  tagged with yarn