zoukankan      html  css  js  c++  java
  • 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包先被加载,这在解决冲突时是作用很大的。

  • 相关阅读:
    js—初始的二维数组是一个,3行4列的数组。将其转换为4行3列的二维数组
    js_求1—10000的完数
    JS——输入一个日期判断该日期为当年的第几天
    JS——打印倒三角和正三角
    Java内存机制和内存地址
    deepin下搭建基于github和hexo的个人博客
    URL and URI 的 比较
    Cannot use this in a static context
    java项目获取文件路径总结
    利用exe4j制作exe文件
  • 原文地址:https://www.cnblogs.com/upupfeng/p/13544612.html
Copyright © 2011-2022 走看看