HDFS慢节点监控及处理

本文介绍了HDFS集群中慢节点的监控和处理方法,包括网络慢节点和磁盘慢节点的监控原理,以及NameNode如何自动处理慢节点,确保集群读写性能稳定。监控部分利用网络传输耗时和磁盘写入计数判断慢节点,处理部分则通过NN排除慢节点以避免影响性能。
摘要由CSDN通过智能技术生成

HDFS集群随着使用时间的增长,难免会出现一些“性能退化”的节点,主要表现为磁盘读写变慢、网络传输变慢,我们统称这些节点为慢节点。当集群扩大到一定规模,比如上千个节点的集群,慢节点通常是不容易被发现的。大多数时候,慢节点都藏匿于众多健康节点中,只有在客户端频繁访问这些有问题的节点,发现读写变慢了,才会被感知到。

因此,要想维护HDFS集群读写性能稳定,慢节点问题一直是一个绕不开的话题。在Hadoop2.9之后,社区支持了从Namenode jmx上查看慢节点的功能,小米基于此框架,开发了一整套HDFS集群慢节点监控及自动处理流程,在实际生产环境中,具有不错的应用效果,可以保证慢节点能够被及时准确发现,并在NameNode端自动规避处理。


1 HDFS写pipeline的流程

为了保证高可靠性,文件默认以三副本的形式保存在HDFS上,当client开始写入一个新文件的时候,首先会找出三个DataNode建立pipeline,随后数据以packet为最小单元,依次通过pipeline里的三个DN,完成三副本写入。

具体的写入流程是:首先DN0收到从client端传过来的packet,DN0立即将packet传至下游DN,随后对packet进行落盘操作,DN1的操作与DN0一致,DN2作为pipeline里的最后一个节点,在落盘数据之后,会向上游DN发送ack,DN1在收到ack后继续向上游转发,DN0在收到DN1的ack后向client端转发,client收到DN0的ack即完成一次完整的pipeline写入流程。

HDFS写pipeline流程

在写pipeline的过程中,如果出现了网络慢节点,步骤1的耗时会明显增加,如果出现的是磁盘慢节点,步骤2的耗时会明显增加,因此,HDFS的慢节点监控,主要是监控步骤1和步骤2的耗时。


2 网络慢监控原理

2.1 收集数据

监控一个DN网络传输变慢的原理是,记录集群里各个DN间的数据传输耗时,找出其中的异常值并作为慢节点上报给NN。正常情况下各节点间的传输速率基本一致,不会相差太多,假如出现了A传B耗时异常,A就往NN上报B是慢节点,NN端在汇总所有慢节点报告后,会判断是否存在慢节点。比如X节点是故障节点,那么一定会有很多节点往NN上报X是慢节点,最终在NN端出现类似的慢节点报告,表明X是慢节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值