3. Spark源码解析之Master启动流程解析

启动Spark的Master,不管是执行start-all.sh还是直接在master节点直接启动start-master.sh,都会进入spark-master.sh开始。这里只是对Master的启动流程进行追踪,脚本的具体解析可以参照前篇,具体的Master实例化后面再解读。

脚本解析:Spark源码解析之启动脚本解析

 

首先进入spark-master.sh

start-master.sh

这个脚本最终调用了spark-daemon.sh。因为没有输入参数,所以$ORIGINAL_ARGS为空。最后传入参数:

start org.apache.spark.deploy.master.Master 1 --host hostname --port 7077 --webui-port 8080

# 启动spark-daemon脚本,参数为:start、$CLASS、1、host、port、webUI-port、$ORIGINAL_ARGS
# 直译为:
# sbin/spark-daemon.sh start org.apache.spark.deploy.master.Master 1 --host cdh-master --port 7077
# --webui-port 8080
"${SPARK_HOME}/sbin"/spark-daemon.sh start $CLASS 1 \    
  --host $SPARK_MASTER_HOST --port $SPARK_MASTER_PORT --webui-port $SPARK_MASTER_WEBUI_PORT \
  $ORIGINAL_ARGS

spark-daemon.sh

脚本最终执行了以下方法,execute_command方法是决定在前台还是后台运行,也就是调用了spark-class

nice -n 0 /bin/spark-class org.apache.spark.deploy.master.Master --host cdh-master --port 7077 --webui-port 8080

case "$mode" in
  
    # nice -n 指定优先级执行,$SPARK_NICENESS是前面指定的优先级0
    # bash 执行后面的脚本
    # 如果参数是class,即start
    # 直译为:
    # execute_commamd nice -n 0 bin/spark-class org.apache.spark.master.Master --host cdh-master
    # --port 7077 --webui-port 8080
    (class)	
      execute_command nice -n "$SPARK_NICENESS" "${SPARK_HOME}"/bin/spark-class "$command" "$@"
      ;;
 
    # 直译为:
    # execute_commamd nice -n 0 bin/spark-submit org.apache.spark.master.Master --host cdh-master
    # --port 7077 --webui-port 8080
    (submit)
      execute_command nice -n "$SPARK_NICENESS" bash "${SPARK_HOME}"/bin/spark-submit --class "$command" "$@"
      ;;
 
    (*)	# 其他报错退出
      echo "unknown mode: $mode"
      exit 1
      ;;
  esac

spark-class

这里调用了org.apache.spark.launcher.Main

java -Xmx128m -cp ...\jars\* org.apache.spark.launcher.Main org.apache.spark.deploy.master.Master --host cdh-master --port 7077 --webui-port 8080

# 调用执行文件目录下的org.apache.spark.launcher.Main方法
# 传入执行类及参数,解析后返回执行命令
build_command() {
  "$RUNNER" -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

訾零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值