由于在windows下面,配置好所有 编译hadoop2.4.1源码 的环境会很麻烦,好在我之前已经把hadoop2.4.1的源码成功导入eclipse,并解决了所有错误提示,所以我就可以在eclipse里面直接运行源码生成XX.gv,然后转成png图片。
(hadoop 导入eclipse请看里面的building.txt文件,和我另外一篇文章)
前提:hadoop源码已经导入eclipse,而且没什么错误。有一份同版本的hadoop二进制包。
步骤:
1、hadoop-yarn-common工程:导入hadoop2.4.1/share/hadoop/yarn 下面的有关server的几个包。
2、找出 VisualizeStateMachine 这个类
3、修改它的运行配置:
运行参数:
RM
org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl,org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl,org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl,org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl
RMAll.gv
还有NM的:
NM
org.apache.hadoop.yarn.server.nodemanager.containermanager.application.ApplicationImpl,org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerImpl,org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalizedResource
NMAll.gv
4、执行,会生成RMAll.gv和NMAll.gv文件
5、下载graphviz,解压,把bin目录放到环境变量,执行:
dot -Tpng NodeManager.gv > NodeManager.png
dot -Tpng ResourceManager.gv >ResourceManager.png
OK!!
参考这份issue:MAPREDUCE-2930:Generate state graph from the State Machine Definition
网上的其他方法:
在Hadoop2.0系列的版本里,采用了状态机的方式处理ResourceManager,NodeManager,MapReduce中状态的变迁。那如何生成相应的状态机图呢?其实社区已经为我们提供了生成状态机图的方法,具体的命令如下:
1. 在Hadoop目录下运行 mvn compile -Pvisualize, 在当前目录下生成多个.gv文件。
2. 安装graphviz,sudo apt-get/yum install graphviz (ubuntu下),然后执行:
dot -Tpng NodeManager.gv > NodeManager.png
dot -Tpng ResourceManager.gv >ResourceManager.png
dot -Tpng MapReduce.gv > MapReduce.png
这样相应的状态机图即生成了。
自行选择吧