为了账号安全,请及时绑定邮箱和手机立即绑定

Spark2.1.1 Yarn ShuffleService在NodeManager升级问题分析

标签:
Spark

一、问题

首先,团队里不同的小组使用同一套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。

四、后续

存在的疑问:

  1. 虽然在hadoop/share/hadoop/yarn/lib下更新了spark-shuffle-service jar包,但从YARN资源申请的原理层面,如何解释该jar包如果传到小组同学项目的classpath中的?

  2. 社区在network-yarn中引入scala-library依赖的根据是什么?这岂不是在hadoop集群上留了一个很大的坑?



作者:分裂四人组
链接:https://www.jianshu.com/p/0bc82d4f0ad5


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
50
获赞与收藏
175

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消