您的位置:首页 > 其它

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

2017-01-19 00:13 435 查看
启动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看起
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: