本文基于spark2.4.7, 梳理SparkSubmit.scala的提交应用的核心流程,流程如下图1所示,具体请阅读源码。
先从一段脚本说起,下面是一段提交spark应用的jar包的脚本
!/bin/bash
echo '数据分析模块 启动------------'
echo "PID of this script: $$"
redisHost=192.168.1.212
redisPort=6379
redisPass=xxx
redisIndex=8
intervalTime=5
brokers=192.168.1.212:9092
spark-submit --class com.my.handler.XXXDataHandler
--master spark://XMaster:7077
--deploy-mode client
--driver-memory 512m
--executor-memory 1024m
--total-executor-cores 1
--executor-cores 1
/home/hadoop/spark/mms/mms-analyze-2.0-SNAPSHOT-jar-with-dependencies.jar
redisPort redisIndex brokers
这个脚本调用的就是/bin目录下的spark-submit脚本
查看spark-submit文件里面有一段核心的代码,说明SparkSubmit 是脚本提交到入口,对应spark源码core包下的SparkSubmit .scala文件
exec "@"
于是阅读SparkSubmit .scala文件,SparkSubmit 主要可以提交4种动作,分别是
SUBMIT 提交应用
KILL 杀死进程
REQUEST_STATUS 请求状态
PRINT_VERSION 答应版本
核心代码流程图如下图所示
图1.png
网友评论