状态机是YARN系统运行的核心部件,通过状态机能够对YARN中提交的各个任务以及整个系统的运行及时进行监控管理。
然而YARN中并不提供对状态机的直接读取,而是将这些信息写入到多个日志中,因此对于程序运行人员以及系统维护人员来说,需要从多个日志中来挖掘信息极其不方便,缺乏对系统整体运行的可视化监控组件。
大型公司由于任务繁多,且系统庞大,如果总是从日志中查看状态机情况并不能及时对系统进行监控,会降低工作效率。
目前的资料对YARN状态机监控软件的描述并不多,经过我们前期的摸索,设计并简单实现了一个状态机监控软件。
RMStateMonitor系统中主要分为4个模块,分别为RMappListener、RMappAttempListener、NodeListener、ContainerListener。4个组件分别监控4个不同状态机的状态变迁情况。
(1)类ResourceManager为YARN系统的资源管理服务类,在此类中添加节点状态监听组件和应用状态监听组件。
(2)类NodeStateLisenceService为节点状态监听服务类,此类用于监听客户端的节点状态请求信息,并且获取和封装相应的节点状态信息,然后将节点信息回应给客户端。
(3)类NodeStateLisenceClient为节点状态监听客户类,此类为客户端主类,用于寻址服务器端,和服务器端建立连接,每隔1s向服务端发送节点信息请求包,得到服务器节点信息回应包之后,解析并更新节点的当前状态。
(4)类AppStateLisenceService为应用状态监听服务类,此类用于监听客户端的应用状态请求信息,并且获取和封装相应的应用状态信息,然后将应用信息回应给客户端。
(5)类AppStateLisenceClient为应用状态监听客户类,此类为客户端主类,用于寻址服务器端,和服务器端建立连接,每隔1s向服务端发送应用信息请求包,得到服务器应用信息回应包之后,解析并且更新应用程序的当前状态。