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描述,以后工作有具体讨论:
如何读状态机?
起始状态有什么事件触发到什么状态,这个状态就是各种操作,各种操作可能通过事件流向各种状态。 操作需要自己解读。