弓背霞明剑照霜,秋风走马出咸阳。这篇文章主要讲述Hadoop运维记录系列(二十八)相关的知识,希望能为你提供帮助。
昨天花两小时帮可口可乐的dmp集群排查了一个集群故障.
故障表象为块的复制很慢, 导致集群报超时错误, 大量机器报超时错误.
还有一批机器报Slow BlockReceiver write packet to mirror 的WARN
首先按常规排查处理, 检查机器操作系统环境, 各种tcp参数已优化, 各种limit也已经优化.
然后检查硬件
用 hdparm 测试了几个服务器的几块硬盘读写速率, 都正常. dmesg也没有报错信息.
检查网卡, 所有机器网卡显示都正常, 用ethtool bond0查看, 都是20Gbps 双网卡bond, 全双工.
暂时排除硬件故障原因, 检查hadoop设置的dfs.datanode.max.transfer.threads, 发现数量有点少, 设置为16384, 重启集群, 结果故障未解决. 怀疑是hadoop client里面有错误配置覆盖了集群配置, 检查client端提交作业的配置, 没有发现问题.
然后陷入了短暂的僵局, 目前看是硬件和集群配置和服务都没问题.
那么按照hadoop的原理分析, 这个报错是数据块在复制过程中, 从1-2-3备份的过程里发生的, 所以, 如果硬盘读写没有问题, hadoop配置没有问题, 那么就只可能是网络的问题了, 但网卡又没有报错信息, 之前遇到过一次网卡问题, 自动跳到了100Mbps导致整个集群极慢. 但那次ethtool和syslog里都是有记录的. 这次遇到的机器, 完全没有记录说网卡有任何问题. 全部是20Gbps的bond. 系统日志也没有任何记录. 难道是我方向错了?
但我坚信自己的判断是正确的, 于是用网速测试命令, 在slave2上用 iperf -s 启动服务, 随便找了个其他机器用
iperf -c slave2 -f m -d 进行网速测试.
结果发现如下
slave4 ->
slave2之间的速率只有 64Mbps, 还不到百兆
然后测试其他服务器之间的速率
16403Mbps, 这才是正常的20Gbps带宽该有的样子.
所以, 问题找到了, slave2机器的网卡传输速率跳到了不足百兆带宽, 导致整个集群报ERROR和WARN.
但由于网卡在ethtool和ifconfig里面都显示是20Gbps全双工, syslog里面也没有显示网卡速率改变, 所以, 暂时判断问题发生在交换机上.
后续这台机器先decommision掉, 然后联系运维人员排查网卡和交换机故障问题. slave2机器下架以后, 集群健步如飞.
2个多小时解决可口可乐集群故障. Cloudera没有雇我做他们的兼职, 简直是他们的损失啊.
【Hadoop运维记录系列(二十八)】
推荐阅读
- ProxySQL的基于sql指纹的阻断
- OpenHarmony 源码解析之安全子系统 (应用权限管理)
- Chrome浏览量JS代码console.log()无法输出
- oeasy教您玩转vim - 68 - # 标签页tab
- ES6学习 第一章 let 和 const 命令
- gitlab安装和修改首页信息
- Hi3516开发笔记(Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析)
- Flutter — 加快开发速度的 IDE 快捷操作#yyds干货盘点#
- 在SEO过程中,如何避免网站中出现软404