一、问题
首先,团队里不同的小组使用同一套hadoop集群,有做sqoop任务的,有做flink的,也有跑spark的。最近spark迁移2.1.1,升级shuffle-service,所以编译完社区2.1.1版本之后,就更新了nodemanager下的shuffle-service依赖,对于spark任务没有任何问题;
但问题却出在,其他小组在使用hadoop集群时,原本是运行的好好的,在升级完shuffle-service之后报scala冲突,具体如下:
23-06-2017 20:42:37 CST kafka_import_hotfix INFO - Error: scala.Predef$.augmentString(Ljava/lang/String;)Lscala/collection/immutable/StringOps;23-06-2017 20:42:38 CST kafka_import_hotfix INFO - Error: scala.Predef$.augmentString(Ljava/lang/String;)Lscala/collection/immutable/StringOps;23-06-2017 20:42:38 CST kafka_import_hotfix INFO - Container killed by the ApplicationMaster.23-06-2017 20:42:38 CST kafka_import_hotfix INFO - Container killed on request. Exit code is 14323-06-2017 20:42:38 CST kafka_import_hotfix INFO - Container exited with a non-zero exit code 143
二、分析
小组同学百思不得其解,最终还是定位到本次spark shuffle-service升级。想不到一个小的版本迭代,竟然有这么大的区别;
原来,在spark2.1.1中,common/network-yarn项目中引入了
scala-library
的依赖,导致编译的jar包中包含了scala2.11.8的scala代码;
而小组同学引用的kafka0.8项目是基于scala2.8编译的,导致上述问题;
社区引入commit:
7197a7bc7061e2908b6430f494dba378378d5d02 [SPARK-18993][BUILD] Unable to build/compile Spark in IntelliJ due to missing Scala deps in spark-tags
https://github.com/apache/spark/pull/16418
现在已经有人提交jira修复了该问题:https://issues.apache.org/jira/browse/MAPREDUCE-1700
三、解决
小组同学升级kafka0.8的scala依赖为2.11.8。
四、后续
存在的疑问:
虽然在hadoop/share/hadoop/yarn/lib下更新了spark-shuffle-service jar包,但从YARN资源申请的原理层面,如何解释该jar包如果传到小组同学项目的classpath中的?
社区在network-yarn中引入
scala-library
依赖的根据是什么?这岂不是在hadoop集群上留了一个很大的坑?
作者:分裂四人组
链接:https://www.jianshu.com/p/0bc82d4f0ad5
共同学习,写下你的评论
评论加载中...
作者其他优质文章