【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库( 二 )

二)状态机可视化hadoop 中提供了状态机可视化的工具类 VisualizeStateMachine.java,可以拷贝到我们的工程中使用 。根据提示,运行需要三个参数:
Usage: %s <GraphName> <class[,class[,...]]> <OutputFile>%n

【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库

文章插图
运行后会在项目根目录生成图文件 jsm.gv 。需要使用 graphviz工具将 gv 文件转换成 png 文件:
# linux 安装yum install graphviz# mac 安装brew install graphviz转换:
dot -Tpng jsm.gv > jsm.png可视化状态机展示:
【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库

文章插图
再使用这个工具对 Yarn 中的 Application 状态进行展示:
【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库

文章插图
三)如果不用状态机库【思考】如果不用状态机,代码结构会是什么样呢?下面这样的代码,如果要增加或修改逻辑可能就是很痛苦的一件事情了 。
// 一堆的函数调用// 一堆的 if 嵌套// 或者 switch case三、总结本节对 Yarn 状态机库进行了介绍 。实际使用时会结合事件库、服务库一同使用 。状态机库的使用帮助代码结构更加的清晰,新增状态处理逻辑只需要增加一个状态类别,或者增加一个方法处理对应类型的事件即可 。将整个处理逻辑进行了拆分,便于编写和维护 。
参考文章:源码|Yarn的事件驱动模型与状态机

经验总结扩展阅读