码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-16 13:23:08      阅读:2917      评论:0      收藏:0      [点我收藏+]

标签:view   序列   数据   设置   src   gem   local   none   提交   

1.1 问题描述

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

技术分享图片

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包要分发到所有节点

技术分享图片

此类问题相关参数总结:

属性名称 默认值 含义
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依赖和用户依赖的冲突。它现在还是一个实验性的特征。

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

标签:view   序列   数据   设置   src   gem   local   none   提交   

原文地址:https://www.cnblogs.com/xiaodf/p/9190178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!