【展示页源码】【北海源码】【javacallable源码】apache spark源码走读

2024-11-20 19:19:53 来源:市值比指标源码 分类:知识

1.Spark-Submit 源码剖析

apache spark源码走读

Spark-Submit 源码剖析

       直奔主题吧:

       常规Spark提交任务脚本如下:

       其中几个关键的码走参数:

       再看下cluster.conf配置参数,如下:

       spark-submit提交一个job到spark集群中,码走大致的码走经历三个过程:

       代码总Main入口如下:

       Main支持两种模式CLI:SparkSubmit;SparkClass

       首先是checkArgument做参数校验

       而sparksubmit则是通过buildCommand来创建

       buildCommand核心是AbstractCommandBuilder类

       继续往下剥洋葱AbstractCommandBuilder如下:

       定义Spark命令创建的方法一个抽象类,SparkSubmitCommandBuilder刚好是实现类如下

       SparkSubmit种类可以分为以上6种。SparkSubmitCommandBuilder有两个构造方法有参数和无参数:

       有参数中根据参数传入拆分三种方式,码走展示页源码然后通过OptionParser解析Args,码走构造参数创建对象后核心方法是码走通过buildCommand,而buildCommand又是码走通过buildSparkSubmitCommand来生成具体提交。

       buildSparkSubmitCommand会返回List的码走命令集合,分为两个部分去创建此List,码走

       第一个如下加入Driver_memory参数

       第二个是通过buildSparkSubmitArgs方法构建的具体参数是MASTER,DEPLOY_MODE,码走FILES,码走北海源码CLASS等等,码走这些就和我们上面截图中是码走对应上的。是码走通过OptionParser方式获取到。

       那么到这里的码走话buildCommand就生成了一个完成sparksubmit参数的命令List

       而生成命令之后执行的任务开启点在org.apache.spark.deploy.SparkSubmit.scala

       继续往下剥洋葱SparkSubmit.scala代码入口如下:

       SparkSubmit,kill,javacallable源码request都支持,后两个方法知识支持standalone和Mesos集群方式下。dosubmit作为函数入口,其中第一步是初始化LOG,然后初始化解析参数涉及到类

       SparkSubmitArguments作为参数初始化类,cmsbao源码继承SparkSubmitArgumentsParser类

       其中env是测试用的,参数解析如下,parse方法继承了SparkSubmitArgumentsParser解析函数查找 args 中设置的--选项和值并解析为 name 和 value ,如 --master yarn-client 会被解析为值为 --master 的 name 和值为 yarn-client 的 value 。

       这之后调用SparkSubmitArguments#handle(MASTER, "yarn-client")进行处理。

       这个函数也很简单,libratus源码根据参数 opt 及 value,设置各个成员的值。接上例,parse 中调用 handle("--master", "yarn-client")后,在 handle 函数中,master 成员将被赋值为 yarn-client。

       回到SparkSubmit.scala通过SparkSubmitArguments生成了args,然后调用action来匹配动作是submit,kill,request_status,print_version。

       直接看submit的action,doRunMain执行入口

       其中prepareSubmitEnvironment初始化环境变量该方法返回一个四元 Tuple ,分别表示子进程参数、子进程 classpath 列表、系统属性 map 、子进程 main 方法。完成了提交环境的准备工作之后,接下来就将启动子进程。

       runMain则是执行入口,入参则是执行参数SparkSubmitArguments

       Main执行非常的简单:几个核心步骤

       先是打印一串日志(可忽略),然后是创建了loader是把依赖包jar全部导入到项目中

       然后是MainClass的生成,异常处理是ClassNotFoundException和NoClassDeffoundError

       再者是生成Application,根据MainClass生成APP,最后调用start执行

       具体执行是SparkApplication.scala,那么继续往下剥~

       仔细阅读下SparkApplication还是挺深的,所以打算另外写篇继续深入研读~

更多资讯请点击:知识

推荐资讯

ehcache源码

1.SpringBoot优雅的集成EhCacheSpringBoot优雅的集成EhCache 大家好,我是连边。今天带来的是EhCache在SpringBoot框架下优雅的使用实战。EhCache

LADY M不續約「全面撤出中國市場」! 9/10所有門市終止經營

美國知名甜點品牌LADY M今21)天突然宣布,「退出中國市場」,在微信公眾號發文指出,上海牧薪餐飲管理有限公司作為中國LADY M品牌產品的獨家經營者,將於9月10日終止經營,會以最大程度保障LAD

中國與蒙古國將舉行「草原夥伴

根據中蒙兩軍年度合作計劃及雙方共識,中蒙「草原夥伴-2024」陸軍聯合訓練將於4月底至5月下旬在蒙古東戈壁省舉行。中方將派出營級規模兵力,攜各型武器及輪式裝備等赴蒙參訓。此系兩國陸軍首次聯合訓練,以應