Spark源码学习(一)---Spark的启动脚本

启动Spark的时候,分别执行${SPARK_HOME}/sbin/start-master.sh和${SPARK_HOME}/sbin/start-slaves.sh两个脚本,下面就先看一下这两个脚本中都做了什么;

(1)${SPARK_HOME}/sbin/start-master.sh

(1.1)首先将一些配置信息加载到环境变量中:

. "${SPARK_HOME}/sbin/spark-config.sh"
. "${SPARK_HOME}/bin/load-spark-env.sh"

(1.2)然后把取参数中的MasterIP,MasterPort和MasterWebUIPort等,如果没有传递参数,则取默认值:

if [ "$SPARK_MASTER_PORT" = "" ]; then
  SPARK_MASTER_PORT=7077
fi


if [ "$SPARK_MASTER_IP" = "" ]; then
  SPARK_MASTER_IP=`hostname`
fi


if [ "$SPARK_MASTER_WEBUI_PORT" = "" ]; then
  SPARK_MASTER_WEBUI_PORT=8080
fi


(1.3)下面这句话真正启动了Master:

CLASS="org.apache.spark.deploy.master.Master"

......

"${SPARK_HOME}/sbin"/spark-daemon.sh start $CLASS 1 \
  --ip $SPARK_MASTER_IP --port $SPARK_MASTER_PORT --webui-port $SPARK_MASTER_WEBUI_PORT \
  $ORIGINAL_ARGS


(1.4)spark-daemon.sh主要内容如下:





command=$1



(1.5)spark-class主要内容如下:





(1.6)所以启动Master的时候,实际上是执行了org.apache.spark.deploy.master.Master的main方法,所以后面看Master的方法 的时候,要从这里开始


(2)${SPARK_HOME}/sbin/start-slaves.sh:

(2.1)首先将一些配置信息加载到环境变量中:

. "${SPARK_HOME}/sbin/spark-config.sh"
. "${SPARK_HOME}/bin/load-spark-env.sh"

(2.2)然后把取参数中的MasterIP,MasterPort和MasterWebUIPort等,如果没有传递参数,则取默认值:

if [ "$SPARK_MASTER_PORT" = "" ]; then
  SPARK_MASTER_PORT=7077
fi


if [ "$SPARK_MASTER_IP" = "" ]; then
  SPARK_MASTER_IP="`hostname`"
fi


(2.3)下面这句话真正启动了Master:

# Launch the slaves
"${SPARK_HOME}/sbin/slaves.sh" cd "${SPARK_HOME}" \; "${SPARK_HOME}/sbin/start-slave.sh" "spark://$SPARK_MASTER_IP:$SPARK_MASTER_PORT"

(2.4)start-slave.sh主要内容如下:

CLASS=" org.apache.spark.deploy.worker.Worker"

......

"${SPARK_HOME}/sbin"/spark-daemon.sh start $CLASS $WORKER_NUM \
     --webui-port "$WEBUI_PORT" $PORT_FLAG $PORT_NUM $MASTER "$@"

(2.5) 所以看Work的源码,需要从org.apache.spark.deploy.worker.Worker看起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值