Apache Spark与Hadoop的Jar包冲突问题求助
解决Spark 2.3.0 + Hadoop 3.1.0 YARN提交时的Jackson版本冲突问题
这种版本冲突在Spark和Hadoop混搭部署时特别常见,我来帮你梳理下问题根源和可行的解决办法:
问题根源拆解
你遇到的两个问题其实是连锁反应:
- 最初的
Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster:因为SPARK_DIST_CLASSPATH只包含了Hadoop的类路径,YARN的ApplicationMaster找不到Spark核心类,所以必须把Spark的jar包加入类路径。 - 加入Spark jars后出现的
JsonMappingException: Incompatible Jackson version:Hadoop 3.1.0自带Jackson 2.7.8,而Spark 2.3.0依赖的是Jackson 2.6.7,两个版本的Jackson类同时存在于类路径中,导致类加载冲突。
下面是两种经过验证的解决方案:
方案一:替换Spark的Jackson包为Hadoop兼容版本
直接把Spark中旧版本的Jackson包换成Hadoop使用的2.7.8版本,从根源上消除版本差异:
- 先删除Spark jars目录下的Jackson 2.6.7相关包:
cd /usr/local/spark/jars rm jackson-annotations-2.6.7.jar jackson-core-2.6.7.jar jackson-databind-2.6.7.jar jackson-module-scala_2.11-2.6.7.jar - 从Hadoop的lib目录复制对应的Jackson 2.7.8包到Spark jars:
cp /usr/local/hadoop/share/hadoop/common/lib/jackson-annotations-2.7.8.jar \ /usr/local/hadoop/share/hadoop/common/lib/jackson-core-2.7.8.jar \ /usr/local/hadoop/share/hadoop/common/lib/jackson-databind-2.7.8.jar \ /usr/local/spark/jars/ - 补充Spark专属的Jackson Scala模块:Hadoop没有这个包,需要下载对应版本的
jackson-module-scala_2.11-2.7.8.jar(注意要和Spark的Scala版本2.11匹配),放到/usr/local/spark/jars目录。
方案二:调整类加载顺序,优先使用Hadoop的Jackson包
如果不想替换jar包,可以通过修改SPARK_DIST_CLASSPATH的配置,让Hadoop的类优先加载,同时排除Spark中冲突的Jackson包:
修改spark-env.sh中的配置为:
# 先获取Hadoop类路径,再添加Spark jars但排除冲突的Jackson包 export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath):$(echo /usr/local/spark/jars/*.jar | sed 's/jackson-\(annotations\|core\|databind\)-2.6.7.jar//g' | sed 's/jackson-module-scala_2.11-2.6.7.jar//g')
这样Spark会优先使用Hadoop提供的Jackson 2.7.8,避免版本冲突。
验证解决方案
完成配置后,提交一个简单的Spark应用测试是否正常:
spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi /usr/local/spark/examples/jars/spark-examples_2.11-2.3.0.jar 10
如果能正常输出Pi的近似值,说明问题已经解决。
额外建议
后续如果有条件,尽量选择官方兼容的Spark和Hadoop版本组合:Spark 2.3.0官方推荐的Hadoop版本是2.6.x~2.8.x,Hadoop 3.1.0属于较新的版本,兼容性有限。可以考虑升级Spark到2.4.x(官方支持Hadoop 3.x)或者降级Hadoop到2.8.x,从根本上减少这类兼容性问题。
内容的提问来源于stack exchange,提问作者Windsaw
相关产品推荐
相关产品推荐

