2. Spark源码解析之org.apache.spark.launcher.Main源码解析

不管是启动spark-shell,或者通过spark-submit提交jar,还是其他其他master或者worker的脚本,最后都会进入spark-class,并调用launch.main方法构建执行命令。

java -Xmx128m -cp ...jars org.apache.spark.launcher.Main "$@"

也就是说org.apache.spark.launcher.Main是被spark-class调用,从spark-class接收参数。这个类是提供spark内部脚本调用的工具类,并不是真正的执行入口。它负责调用其他类,对参数进行解析,并生成执行命令,最后将命令返回给spark-class的 exec “${CMD[@]}”执行。

它主要是根据提交的类型spark-submit和spark-class(master、worker、hostoryserver等等),构建对应的命令解析对象SparkSubmitCommandBuilder和SparkClassCommandBuilder,再通过buildCommand方法构造执行命令。

大概看一下这时sparksubmit的参数,Master和Worker后续解析:

方式 参数
spark-shell

org.apache.spark.deploy.SparkSubmit

--class org.apache.spark.repl.Main

--name "Spark shell"

spark-submit

org.apache.spark.deploy.SparkSubmit

--class com.idmapping.scala.WordCount \
--master yarn \
--deploy-mode client \
--driver-memory 4G \
--executor-memory 3G \
--executor-cores 2 \
--conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
--conf spark.default.parallelism=24 \
/user/jars/idmapping-job-1.0-SNAPSHOT.jar \
file:///user/tmp/words.txt file:///user/data/wordcount/

/**
 * Command line interface for the Spark launcher. Used internally by Spark scripts.
 */
//这是提供spark内部脚本使用工具类

class Main {

  /**
   * Usage: Main [class] [class args]
   * <p>
   * 分为spark-submit和spark-class两种模式
   * 但提交的是class类的话,会包含其他如:master/worker/history等等
   * This CLI works in two different modes:
   * <ul>
   *   <li>"spark-submit": if <i>class</i> is "org.apache.spark.deploy.SparkSubmit", the
   *   {@link SparkLauncher} class is used to launch a Spark application.</li>
   *   <li>"spark-class": if another class is provid
org.apache.sparkApache Spark的核心包。它提供了Spark的核心功能和API,包括Spark的分布式计算引擎、数据处理和分析功能等。在Spark中,org.apache.spark包含了各种模块和类,用于处理数据、执行任务和管理集群资源等。例如,org.apache.spark.sql包提供了Spark SQL的功能,org.apache.spark.streaming包提供了流处理的功能,org.apache.spark.ml包提供了机器学习的功能等。通过引入org.apache.spark包,我们可以使用Spark的各种功能和API来开发和执行Spark应用程序。 #### 引用[.reference_title] - *1* [Spark源码解析org.apache.spark.launcher.Main源码解析](https://blog.csdn.net/weixin_45353054/article/details/104053118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [spark报错org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree:](https://blog.csdn.net/qq_44665283/article/details/128960875)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pyspark运行问题:org.apache.spark.sparkexception: python worker failed to connect back](https://blog.csdn.net/weixin_46451672/article/details/124793722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

訾零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值