spark on yarn运行产生jar包冲突问题

1.1 问题描述

Spark Streaming程序解析protobuf序列化的数据时,--jars 来添加依赖的protobuf-java-3.0.0.jar包,使用local模式程序正常,使用yarn模式时会报找不到方法的错误,以下所示:java

image.png

1.2 解决方法

分析local模式能运行,yarn模式不能运行的缘由是,用户提交的protobuf-java-3.0.0.jar与SPARK_HOME/lib下的protobuf-java-2.5.0.jar冲突了,默认会优先加载SPARK_HOME/lib下的jar,而不是你程序的jar,因此会发生“ NoSuchMethodError”。微信

解决方法:提交参数添加 --conf spark.executor.extraClassPath=$user_jars架构

以下图所示,注意protobuf-java-3.0.0.jar包要分发到全部节点大数据

image.png

此类问题相关参数总结:spa

属性名称 默认值 含义
spark.driver.extraClassPath (none) 附加到driver的classpath的额外的classpath实体。这个设置存在的主要目的是Spark与旧版本的向后兼容问题。用户通常不用设置这个选项
spark.executor.extraClassPath (none) 附加到executors的classpath的额外的classpath实体。这个设置存在的主要目的是Spark与旧版本的向后兼容问题。用户通常不用设置这个选项
spark.driver.userClassPathFirst false 实验性)当在driver中加载类时,是否用户添加的jar比Spark本身的jar, 优先级高。这个属性能够下降Spark依赖和用户依赖的冲突。它如今仍是一个实验性的特征。
spark.executor.userClassPathFirst false 实验性)当在executor中加载类时,是否用户添加的jar比Spark本身的jar优先级高。这个属性能够下降Spark依赖和用户依赖的冲突。它如今仍是一个实验性的特征。

订阅关注微信公众号《大数据技术进阶》,及时获取更多大数据架构和应用相关技术文章!

blog

相关文章
相关标签/搜索