本文基于spark1.6-CDH5.7.2讨论
当执行spark-submit时,会产出如下操作:
1、设置HADOOP_HOME=/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/lib/hadoop
2、检测java版本、javalibs、classpath、monitor-service
3、调用/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/bin/spark-submit
紧接着会进行下面的操作:
4、设置SPARK_HOME=/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/lib/spark/
5、调用spark-class脚本,并传入参数org.apache.spark.deploy.SparkSubmit "$@"
image.png
6、调用load-spark-env.sh,检查SPARK_HOME,设置SPARK_SCALA_VERSION
7、调用/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/lib/spark/conf/spark-env.sh脚本,这里会加载许多的环境变量,包括在构建driver启动命令的classpath时的HADOOP_CONF_DIR、YARN_CONF_DIR、SPARK_DIST_CLASSPATH、HIVE_CONF_DIR、PYTHON_HOME
7、检查java是否可用
8、设置ASSEMBLY_DIR、SPARK_ASSEMBLY_JAR、LAUNCH_CLASSPATH(这将是启动spark launcher时的classpath)
9、执行org.apache.spark.launcher.Main方法
image.png
10、org.apache.spark.launcher.Main会构建一个jvm启动命令,用以启动spark driver。
后续将介绍launcher.Main
网友评论