YARN中实现了多个状态机对象,包括ResourceManager中的RMAppImpl、RMApp-AttemptImpl、RMContainerImpl和RMNodeImpl,NodeManager中的ApplicationImpl、ContainerImpl和LocalizedResource,MRAppMaster中的JobImpl、TaskImpl和TaskAttemptImpl等。为了便于用户查看这些状态机的状态变化以及相关事件,YARN提供了一个状态机可视化工具,具体操作步骤如下。
步骤1 将状态机转化为graphviz(.gv)格式的文件,在源代码根目录下执行编译命令如下:
mvn compile -Pvisualize
经过该步骤后,本地目录中生成了ResourceManager.gv、NodeManager.gv和MapReduce.gv三个graphviz格式的文件。NodeManager.gv文件中LocalizedResource状态机部分内容如下:subgraph cluster_LocalizedResource { label="LocalizedResource" "LocalizedResource.FAILED" [ label = FAILED ]; "LocalizedResource.DOWNLOADING" [ label = DOWNLOADING ]; "LocalizedResource.DOWNLOADING" -> "LocalizedResource.DOWNLOADING" [ label = "REQUEST,\nRELEASE" ]; "LocalizedResource.DOWNLOADING" -> "LocalizedResource.FAILED" [ label = "LOCALIZATION_FAILED" ]; "LocalizedResource.DOWNLOADING" -> "LocalizedResource.LOCALIZED" [ label = "LOCALIZED" ]; "LocalizedResource.INIT" [ label = INIT ]; "LocalizedResource.INIT" -> "LocalizedResource.DOWNLOADING" [ label = "REQUEST" ]; "LocalizedResource.LOCALIZED" [ label = LOCALIZED ]; "LocalizedResource.LOCALIZED" -> "LocalizedResource.LOCALIZED" [ label = "REQUEST,\nRELEASE" ]; }
步骤2 使用可视化包graphviz中的相关命令生成状态机图,Shell命令具体如下:
dot -Tpng NodeManager.gv > NodeManager.png
如果尚未安装graphviz包,操作该步骤之前先要安装该包,cent os安装命令如下:sudo yum install graphviz
打开NodeManager.png,如下图所示(为了便于展示,分拆成了两个图):
原文地址:http://blog.csdn.net/bigdatahappy/article/details/39932175