0x00 系列文章目录
- 源码走读-Yarn-ResourceManager01-基础概念
- 源码走读-Yarn-ResourceManager02-RM的启动-脚本
- 源码走读-Yarn-ResourceManager03-RM的启动之RM详解
- 源码走读-Yarn-ResourceManager04-RM调度之FairScheduler
- 源码走读-Yarn-ResourceManager05-MR任务提交-客户端侧分析
- 源码走读-Yarn-ResourceManager06-MR任务提交-服务端分析
- 源码走读-Yarn-ResourceManager07-ShutdownHookManager
- 源码走读-Yarn-ResourceManager08-总结
0x02 RM启动过程-Shell脚本
2.1 RM启动命令
启动RM命令为
yarn-daemon.sh start resourcemanager
使用的脚本文件如下:
hadoop-2.6.0-cdh5.8.2/hadoop-yarn-project/hadoop-yarn/bin/yarn-daemon.sh
2.2 yarn-daemon.sh
这里面有一个关键的语句:
nohup nice -n $YARN_NICENESS "$HADOOP_YARN_HOME"/bin/yarn --config $YARN_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &
我们可以看到,这句话指向了名为yarn
的文件。
2.3 yarn
因为我们启动命令传入的参数是resourcemanager
,很自然的找到这句话:
elif [ "$COMMAND" = "resourcemanager" ] ; then
CLASSPATH=${CLASSPATH}:$YARN_CONF_DIR/rm-config/log4j.properties
CLASS='org.apache.hadoop.yarn.server.resourcemanager.ResourceManager'
YARN_OPTS="$YARN_OPTS $YARN_RESOURCEMANAGER_OPTS"
if [ "$YARN_RESOURCEMANAGER_HEAPSIZE" != "" ]; then
JAVA_HEAP_MAX="-Xmx""$YARN_RESOURCEMANAGER_HEAPSIZE""m"
fi
这里是RM的一些执行配置,可以看到这里指定了目标Class为org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
。
最终,会通过下面语句开始执行程序:
exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $YARN_OPTS -classpath "$CLASSPATH" $CLASS "$@"
2.4 小结
到这里,ResourceManager启动之脚本部分就分析完了,下一章开始我们进入java部分。源码走读-Yarn-ResourceManager03-RM的启动之RM详解