Hadoop运维记录系列(二十八)

Posted Slaytanic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop运维记录系列(二十八)相关的知识,希望对你有一定的参考价值。

昨天花两小时帮可口可乐的dmp集群排查了一个集群故障.

故障表象为块的复制很慢, 导致集群报超时错误, 大量机器报超时错误. 

Hadoop运维记录系列(二十八)_hadoop

还有一批机器报Slow BlockReceiver write packet to mirror 的WARN

Hadoop运维记录系列(二十八)_启动服务_02


首先按常规排查处理, 检查机器操作系统环境, 各种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 进行网速测试.

结果发现如下

Hadoop运维记录系列(二十八)_运维_03


slave4 -> slave2之间的速率只有 64Mbps, 还不到百兆


然后测试其他服务器之间的速率


Hadoop运维记录系列(二十八)_报错信息_04


16403Mbps, 这才是正常的20Gbps带宽该有的样子.


所以, 问题找到了, slave2机器的网卡传输速率跳到了不足百兆带宽, 导致整个集群报ERROR和WARN.


但由于网卡在ethtool和ifconfig里面都显示是20Gbps全双工, syslog里面也没有显示网卡速率改变, 所以, 暂时判断问题发生在交换机上.


后续这台机器先decommision掉, 然后联系运维人员排查网卡和交换机故障问题. slave2机器下架以后, 集群健步如飞. 


2个多小时解决可口可乐集群故障. Cloudera没有雇我做他们的兼职, 简直是他们的损失啊.



以上是关于Hadoop运维记录系列(二十八)的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop运维记录系列(二十三)

Hadoop运维记录系列(二十一)

Hadoop运维记录 | Zeppelin启用https和Hack内核的过程

2021年大数据Hadoop(二十八):YARN的调度器Scheduler

openstack运维实战系列(十八)nova与ceph结合

Hadoop MapReduce编程 API入门系列之处理Excel通话记录(二十)