Spark on yarn报关于netty getchannel()Lio.netty....等的错

文章假设读者都已经完全部署好了Yarn与Spark,并且了解大数据集群间的基本关系。

这个问题我调试了好几,然后在网上查找相关文章才得以解决。最后还是得感谢一位韩国朋友的博客。(在此,我还真得再说一点,百度搜索感觉是越来越不行了,搜啥啥不行。最后我还是用的bing搜索到的。)

言归正传,其实这个具体报的什么错我没有记录下来,因为是在工作环境,文章是下班在家写的。总之大体意思就是在Spark任务在Yarn上执行,当任务之间有跨节点通信的时候任务就会卡在那里。追踪到Yarn log里看到的错误就是关于java.NoSuchMethodException:...........netty getChannel()Lio.netty......异常。其实这是大数据架构底层Netty通信,有某个类或者方法找不到引起的错误。

问题引起的原因其实是因为Spark用的netty包与Hadoop用的Netty包有冲突导致的,而为什么会有这个冲突呢,那是因为我把Spark目录下的yarn目录里的spark-2.1.0-yarn-shuffle.jar包一齐上传到了HDFS里Spark的依赖包目录里了(为了避免Spark在提交yarn任务的时候再将Spark的jars依赖包打包上传,我们一般会在HDFS下建立一个目录,事先上传依赖包,然后在Spark-default.conf文件里指定目录),其实我们只需要将spark安装目录下的jars下的所有包上传即可。

在此,其实网上有很多老铁说把那个找不到的Netty类或者方法重新再集成到任务里,一起提交到yarn集群。其实根本没这个必要,我也没有试过(因为复杂度有点高)。我们只需要将多上传的spark-2.1.0-yarn-shuffle.jar包从HDFS里删除掉就完全可以了,其它的什么也不必做,一切就这么顺利。

本人使用的Spark是2.1.0;Hadoop版本是2.4.1.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值