Spark 启动脚本分析

本文深入剖析了Spark集群启动过程,重点解析了start-all.sh、start-config.sh和start-master.sh脚本的作用。start-all.sh作为总控启动集群,通过start-config.sh设置环境变量,再调用start-master.sh启动Master节点。同时,文中提到了spark-daemon.sh脚本在启动过程中的关键角色。
摘要由CSDN通过智能技术生成

一般的启动集群途径是执行位于SPARK_HOME/sbin目录下的start-all.sh脚本文件,我们来看一下这里边都有些什么猫腻(强烈建议,查看本文之前先去学习一下shell的编程基础)。

start-all.sh:

这个文件是一个总控脚本,它会调用其他的脚本来完成整个集群的启动。

#!/usr/bin/env bash

# Licensed to ... --省略授权信息

# Start all spark daemons.--启动所有spark守护进程
# Starts the master on this node.--启动本节点上的Master进程
# Starts a worker on each node specified in conf/slaves--为每一个配置在conf/slaves文件中的节点启动Worker进程

if [ -z "${SPARK_HOME}" ]; then  --如果SPARK_HOME变量未定义,则设置环境变量
  export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

TACHYON_STR=""

while (( "$#" )); do   --遍历启动命令后面跟的参数列表
case $1 in
    --with-tachyon)    --是否设置启动tachyon
      TACHYON_STR="--with-tachyon"
      ;;
  esac
shift
done

# Load the Spark configuration --加载执行Spark配置脚本spark-config.sh
. "${SPARK_HOME}/sbin/spark-config.sh"

# Start Master    --执行start-master.sh脚本,启动Master进程
"${SPARK_HOME}/sbin"/start-master.sh $TACHYON_STR

# Start Workers   --启动所有slaves节点
"${SPARK_HOME}/sbin"/start-slaves.sh $TACHYON_STR

我们看到它里边调用了start-config.sh 和 start-master.sh 和 start-slaves.sh,并且我们还可以在命令行中指定是否启动Tachyon。

接下来看看start-config.sh

start-config.sh

# Licensed to ...
# included in all the spark scripts with source command
# should not be executable directly
# also should not be passed any arguments, since we need original $*
--使用源命令将所有的spark脚本包含进来 
--不要直接执行
--也不要传递任何参数,因为我们需要原始的 $*。注:$* 是以将所有向脚本传递的参数拼接成一个字符串
# symlink and absolute path should rely on SPARK_HOME to resolve
--符号链接和绝对路径的解析应该依赖SPARK_HOME
if [ -z "${SPARK_HOME}" ]; then   --和上一个文件一样,设置SPARK_HOME变量
  export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

export SPARK_CONF_DIR="${SPARK_CONF_DIR:-"${
  SPARK_HOME}/conf"}"
--设置SPARK_CONF_DIR环境变量
# Add the PySpark classes to the PYTHONPATH:
--添加PySpark类到PYTHONPATH环境变量
export PYTHONPATH="${SPARK_HOME}/python:${PYTHONPATH}"
export PYTHONPATH="${SPARK_HOME}/python/lib/py4j-0.9-src.zip:${PYTHONPATH}"

由上边可以看出来,这个文件主要用来设置几个重要的环境变量:
SPARK_CONF_DIR: spark配置文件目录
PYTHONPATH: python环境的路径

SPARK_HOME/python目录下的文件:

python

pyspark

start-master.sh

#!/usr/bin/env bash

# Starts the master on the machine this script is executed on. --启动执行这个脚本所在机器上的Master进程。

if [ -z "${SPARK_HOME}" ]; then
  export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)"
fi

# NOTE: This exact class name is matched downstream by SparkSubmit.
--注:这个准确的类名由SparkSubmit匹配。
# Any changes need to be reflected there.--任何改动应该反映在这里
CLASS="org.apache.spark.deploy.master.Master
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值