Spark on Yarn运行时加载的jar包
spark on yarn运行时会加载的jar包有如下:
- spark-submit中指定的
--jars
$SPARK_HOME/jars
下的jar包- yarn提供的jar包
- spark-submit通过参数
spark.driver/executor.extraClassPath
指定的jar包
spark-submit指定的--jar
当使用如下的脚本提交应用时,会将应用本身的jar以及--jar
指定的jar包上传到集群中。
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--jars a.jar,b.jar,c.jar \
http://path/to/examples.jar \
--jar
是以逗号分隔的jar包列表,不支持直接使用目录。
--jar
上传的包会包含在Driver和Executor的classpath中
$SPARK_HOME/jars
下的jar包
提交应用时,会将$SPARK_HOME/jars
下的所有jar包打成一个zip包,上传到集群中。
“打zip上传”这个操作会在每次提交应用时执行,会有一点的性能损耗。
spark提供了spark.yarn.archive
和spark.yarn.jars
两个参数。可以将spark运行时需要的jar包缓存在HDFS上,无需每次运行任务的时候都进行分发。
如spark.yarn.archive=hdfs://cdh1/spark-jar.zip
,直接从对应路径读取spark运行时需要的包。
yarn提供的jar包
在yarn-site.xml中会配置yarn.application.classpath
,包含hadoop相关的一些包
<property>
<name>yarn.application.classpath</name>
<value> $HADOOP_CLIENT_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
</value>
</property>
这些包也会在应用提交的时候被加载。
通过参数指定的jar包
提供了以下4个相关参数:
spark.executor.extraClassPath显式地将jar包注册到executor的classpath中
spark.driver.extraClassPath与executor配置项同理
spark.driver.userClassPathFirst=true
spark.executor.userClassPathFirst=true
通过extraClassPath指定jar包的方式和之前通过--jars
差不多,只不过extraClassPath可以通过指定目录的方式来指定,如/cdh1/jars/*
。
还有一点重要的是:extraClassPath可以通过配置userClassPathFirst
来保证用户指定的jar包先被加载,这在解决冲突时是作用很大的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?