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.archivespark.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包先被加載,這在解決沖突時是作用很大的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM