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包先被加载,这在解决冲突时是作用很大的。

Spark on Yarn运行时加载的jar包的更多相关文章

  1. QT运行时加载UI文件

      写QT程序里运行时加载UI文件,代码如下: 点击(此处)折叠或打开 #include "keyboard.h" #include <QtUiTools> #incl ...

  2. Windows 运行时加载动态库

    下面是一个运行时加载nvcuda.dll,并检测当前驱动版本最大支持的CUDA版本的例子. #include "cuda.h" #include <stdio.h> # ...

  3. commonJs的运行时加载和es6的编译时加载

    参考 : https://www.cnblogs.com/jerrypig/p/8145206.html 1.commonJs的运行时加载 2.ES6编译时加载

  4. 动态链接--运行时加载dlopen

    前面我们在编译可执行文件时,如果可执行文件要依赖某个so.必须要通过-L指定so路径,并且-l指定so名字. 而且在可执行文件运行时,要先加载so的load部分到进程地址空间. 有一种方式可以在编译时 ...

  5. Linux下显示运行时链接(运行时加载)

    目录 介绍 如何加载动态库 dlopen() 第一个参数: 被加载动态库的路径 第二个参数: flag表示函数符号的解析方式 dlopen 返回值 dlsym() 参数: 返回值 符号优先级 dler ...

  6. 自定义ClassLoader,用于加载用户JAR包

    最近在考虑C/S结构程序的软件自动升级的实现方式,比如QQ.飞信等都自动升级的功能. 自动升级模块虽然还没有编码完成,但是思路还是比较清晰的. 自动升级过程中,升级文件的JAR包是专门加载到程序中去的 ...

  7. 加载所有jar包下指定文件

    加载所有jar包下指定文件: 如spring中加载 META-INF/spring.handlers 加载 org.springframework.core.io.support.Properties ...

  8. 服务器程序动态加载自定义jar包的过程

    需求: 用过hive的都知道,可以自定义hive的一个udf jar,然后将这个jar add到hive服务端,就会加载这个jar实现用户自定义逻辑.现在的需求就是实现这么一个服务端所做的事情! 场景 ...

  9. linux 运行时加载不上动态库 解决方法(转)

    1. 连接和运行时库文件搜索路径到设置     库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr ...

随机推荐

  1. html层重叠 相同尺寸透明flash重叠的解决办法

    <EMBED style="z-index:1; position:absolute; top:110px;" src="http://www.jintaisd.c ...

  2. LFM oversea投资笔记、思摩尔、移卡、建业新生活、鑫苑物业

    LFM oversea 1.公司简介 2.业务展望 3. 投资策略 LFM oversea介绍 LFM oversea是在开曼成立的投资基金, 专注于中国优质企业在香港和美国IPO过程中的 基石.锚定 ...

  3. js POST调用api接口时,由于OPTIONS请求导致服务器异常

    1.学习心得 当你搜到这个问题时,就表示你已经知道了脚本POST请求接口时,会先执行一次OPTIONS类型的请求.至于为什么会这样,在此就不做描述了,想知道的小伙伴可以查一下:本文主要将我在现实中遇到 ...

  4. PHP curl_setopt函数

    (PHP 4 >= 4.0.2, PHP 5) curl_setopt — 设置一个cURL传输选项. 说明 bool curl_setopt ( resource $ch , int $opt ...

  5. PDO::commit

    PDO::commit提交一个事务(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 bool PDO::commit ( void )高佣联盟 www.c ...

  6. PHP asXML() 函数

    实例 格式化 XML(版本 1.0)中的 SimpleXML 对象的数据: <?php$note=<<<XML<note>高佣联盟 www.cgewang.com& ...

  7. BSOJ 5553 wangyurzee的树 prufer序列 容斥

    BSOJ我也不知道在哪. 容易想到容斥. 考虑不合法的方案 想到强制某个点的度数为限制即可. 这样就变成了了总方案-一个不合法+两个不合法-3个......的模型了. 坑点 当强制两个相同的点时 方案 ...

  8. Idea 提交配置说明

    Idea 提交配置说明# Auto-update after commit :自动升级后提交 keep files locked :把文件锁上,我想这应该就只能你修改其他开发人不能修改不了的功能 在你 ...

  9. Windows系统护眼色设置

    Win10&Win8系统设置护眼色1. windows+R键调出运行窗口(或者鼠标右击开始键,选择运行)2. 在运行窗口中输入 regedit 调出注册表编辑器3. 按照如下顺序找到windo ...

  10. Python嫌多(线程/进程)太慢? 嫌Scrapy太麻烦?没事,异步高调走起!——瓜子二手车

    基本概念了解: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人,我 ...