Uncaught exception while reverting partial writes to file /opt/newdisk6/yarn....ClosedByInterruptExc

2 篇文章 0 订阅
2 篇文章 0 订阅

项目场景:

spark-streaming流式任务跑一段时间就挂了报错:

Uncaught exception while reverting partial writes to file /opt/newdisk6/yarn/nm/usercache/test/appcache/application_1712721630192_5804/blockmgr-0edcb941-fd6d-4ed3-9242-510a8985d9ae/31/temp_shuffle_6c854f65-2a3f-4701-8c9d-157517c96cd3/  **java.nio.channels.ClosedByInterruptException**

问题描述

spark-streaming流式任务跑一段时间就挂了报错:
1.每次重启能好去,2个小时 任务 跑了之后有数据
2.之后会经常挂掉,写不进数据到hdfs
3.报错如上,cdh没有告警,看不出原因


原因分析:

1.确定是中台程序bug还是数据底座cdh的问题
通过查看日志发现yarn日志先报错,中台程序后报错,由此判断是yarn大数据底座组件的问题导致的任务失败
以下是yarn application日志第一个错误点出现的时间点是 09:10:43

24/04/11 09:10:43  ERROR storage.DiskBlockObjectWriter: Uncaught exception while reverting partial

以下是中台程序的报错,后面的信息也都是表面信息不记录了:

09:11:15 ERROR .............

2.确实是cdh组件的问题,于是看cdh监控有没有不健康的告警。发现没有问题,无告警,各组件
在这里插入图片描述
3.根据以上报错,百度发现大部分讲的是磁盘空间不足导致的,如图
在这里插入图片描述
链接:网上的解决办法-原因跟我的情况不符合这里是链接
4.排查每个节点磁盘空间,发现每个磁盘空间根目录只有20G,这里的规划很不好,很容易出现问题,因为目录到10个g cdh就会告警。大家根目录的规划尽量在50G吧,磁盘是很便宜的,没必要在这里省钱。。为此跟领导反映了此问题,这里是个问题但还不是我们这个情况的根本原因。。继续排查

5.清理了磁盘后,发现仍然会经常失败,报错仍然一样,没有变化。还是一样只说了java中断,并没有说因为什么而中断

Uncaught exception while reverting partial writes to file /opt/newdisk7/yarn/nm/usercache/test/appcache/application_1712721630192_5804/blockmgr-0edcb941-fd6d-4ed3-9242-510a8985d9ae/31/temp_shuffle_6c854f65-2a3f-4701-8c9d-157517c96cd3/  **java.nio.channels.ClosedByInterruptException**

6.有可能还有一些告警,cdh并没有检测出来,不排除这个可能,cdh强大是强大,但也不一定万能,能检测出所有问题,有时也会发神经,检测不出来。带着这个怀疑,继续去服务器上看yarn 日志报什么错。。这里我找过了,没有实质性进展,。截图,日志忽略
7.查看服务器上的系统日志,每个节点,最终发现有2个节点一直在报错,而且有2个节点报错了:

[root@cdh2 ~]# tail -400f /var/log/messages

报错大致如下,不太记得了,后续补充吧:

10:00:01 localhost kernel: Buffer I/O error on dev sdq1, logical block 123456

8.检测磁盘是否坏道,如下说明磁盘是有坏道的

[root@cdh2 dn]# badblocks -sv /dev/sdq1
Checking blocks 0 to 4064255
Checking for bad blocks (read-only test): 
4061255
4062235
3964256
3861235
done
Pass completed, 4 bad blocks found. (4/0/0 errors)

9.从这大致可以判断可能就是磁盘坏了导致的 java.io.InterruptedIOException: Interruped
10.cdh上将坏盘的dir去掉,然后让负责磁盘硬件的同事处理坏掉的磁盘
11.待磁盘更换后,将新的好的磁盘重新加入datanode的dir中,重平衡。
12.任务重新启动,观察5天后没有问题了,最终确定此次故障的报错中断是由磁盘坏掉导致的

解决方案:

提示:已经在上面排查步骤中给出,并验证,请查阅以上步骤
总结: Uncaught exception while reverting partial…java.nio.channels.ClosedByInterruptException 报错的根本原因还是因为磁盘坏道导致。

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day-day-up2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值