YARN源码剖析:RM启动脚本

RM启动命令

$HADOOP_YARN_HOME/sbin/yarn-daemon.sh --config $HADOOP_CONF_DIR start resourcemanager

yarn-daemon.sh分析

case $startStop in

  (start)

    [ -w "$YARN_PID_DIR" ] || mkdir -p "$YARN_PID_DIR"

    if [ -f $pid ]; then           //如果pid文件存在则代表RM进程存活,提示先kill掉进程再启动
      if kill -0 `cat $pid` > /dev/null 2>&1; then   //kill -0 pid 不发送任何信号,但是系统会进行错误检查。
                                                                     //所以经常用来检查一个进程是否存在,存在则echo $?返回0;
                                                                     //不存在返回1 
        echo $command running as process `cat $pid`.  Stop it first.
        exit 1
      fi
    fi

    if [ "$YARN_MASTER" != "" ]; then
      echo rsync from $YARN_MASTER
      rsync -a -e ssh --delete --exclude=.svn --exclude='logs/*' --exclude='contrib/hod/logs/*' $YARN_MASTER/ "$HADOOP_YARN_HOME"
    fi

    hadoop_rotate_log $log
    echo starting $command, logging to $log
    cd "$HADOOP_YARN_HOME"
    nohup nice -n $YARN_NICENESS "$HADOOP_YARN_HOME"/bin/yarn --config $YARN_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &        //通过nice命令设置调度优先级(默认为0,表示不抢占
    echo $! > $pid
    sleep 1
    head "$log"
    # capture the ulimit output
    echo "ulimit -a" >> $log
    ulimit -a >> $log 2>&1    //将ulimit信息打印到log中
    ;;

/bin/yarn分析

$HADOOP_YARN_HOME"/bin/yarn --config $YARN_CONF_DIR c o m m a n d &quot; command &quot; command"@"
== bin/yarn --config $YARN_CONF_DIR resourcemanager

JAVA=$JAVA_HOME/bin/java

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

exec "$JAVA" -Dproc_$COMMAND $JAVA_HEAP_MAX $YARN_OPTS -classpath "$CLASSPATH" $CLASS "$@"

至此,看到最终执行的命令是:
java -classpath xxx org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
即入口类是ResourceManager。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值