hadoop Requested data length 86483783 is longer than maximum configured RPC length

解决

修改NameNode的hdfs-site.xml配置文件,添加以下配置:

<property>
    <name>ipc.maximum.data.length</name>
    <value>134217728</value>
</property>

允许ipc通讯最大的数据包为128MB,默认配置为64MB。

最后平滑重启NameNode,在重启异常的DataNode解决。

总结

出问题的集群规模比较小,但是小文件数量特别多。

从日志看是内存不足导致DataNode跪了,然后随即的重启,DataNode要给NameNode上报block信息,由于block信息较多,ipc通信的数据包超过了64MB,NameNode返回异常了,导致DataNode这边出现EOFException的异常,由于这个异常,DataNode没能把block信息上报给NameNode,NameNode就认为block丢失了。

这次的问题是由于block数量较多导致,也分析了下block数量与资源消耗的关系,针对单个DataNode上有500W个左右的block,大概消耗如下:

  • DataNode内存6GB左右
  • 一次性向NameNode汇报block的ipc数据包大小约为64MB

今后维护HDFS可以根据block的数量信息分配合理的内存和ipc.maximum.data.length大小了。

参考:

https://zhuanlan.zhihu.com/p/44018321​​​​​​​

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部