什么软件做网站链接,自己做的网站提示不安全,高州市网站建设,建筑英才网最新招聘Spark on k8s 源码解析执行流程
1.通过spark-submit脚本提交spark程序 在spark-submit脚本里面执行了SparkSubmit类的main方法 2.运行SparkSubmit类的main方法#xff0c;解析spark参数#xff0c;调用submit方法 3.在submit方法里调用doRunMain方法#xff0c;最终调用r…Spark on k8s 源码解析执行流程
1.通过spark-submit脚本提交spark程序 在spark-submit脚本里面执行了SparkSubmit类的main方法 2.运行SparkSubmit类的main方法解析spark参数调用submit方法 3.在submit方法里调用doRunMain方法最终调用runMain方法 4.在runMain方法里面获取mainClass再去执行start方法 1、准备提交环境
2、获取类加载器 3、判断是否是sparkApplication
4、执行sparkApplication的start方法 5.在start方法里面去调用KubernetesClientApplication的start方法 1、获取k8s的集群域名调用k8s的客户端传入spark相关配置参数 6.调用Client的run方法,通过k8s的apiserver创建Container pod 然后在container中创建driver pod 1、创建configmap
2、创建driver pod
7 Driver的启动
上面通过KubernetesClientApplication创建driver之后会在docker的run的时候触发ENTRYPOINT或者CMD的命令作为容器运行的主进程。Spark镜像的ENTRYPOINT是/opt/entrypoint.shdriver模式下里面的内容基本就是把arg参数传递给/bin/spark-submit然后指定以client模式再次启动一个SparkSubmit进程。
创建driver的command 执行driver命令的shell文件 启动SparkSubmit的源码和上面分析的一样只不过这次是以client模式提交的所以不再会调用到org.apache.spark.deploy.k8s.submit.KubernetesClientApplication而是直接调用–class后面的作业Class的main方法在我们的例子中就是直接执行org.apache.spark.examples.SparkPi。
SparkContext创建过程重点是 1、创建了TaskSchedulertaskSet的调度执行 2、DagScheduler根据宽窄依赖划分Stage 3、HeartbeatReceiverexecutor向driver定时发送心跳。