前言
其实对于HDFS中的限流问题,我在之前的一篇文章Hadoop内部的限流机制已经提到过一次.上次我在文章末尾提到了针对Hadoop内部普通读写操作限流的假设以及由此可能会造成的问题.但是我后来还是仔细想了一下,有的时候还是需要进行测试一下才能得到真正的结果.而且正巧的是,最近我们碰到了一个严峻的问题,我们的集群有的时候一跑几个大的任务,就会把机房网络带宽瞬间打满,导致线上部分服务抖动.所以我们就想到了在HDFS对普通读写的限流.所以说,本文可以实质上说是一篇总结报告,阐述了方案的设想,实现以及结果.
使用场景
集群大任务运行时,打满网络带宽,导致影响到其他业务方的服务运行.
限流方案实现要点以及可能造成的影响
这里其实有2个子方面的内容,1个是方案实现中要考虑的因素和可能后果影响.这里先来看第一个方面.
实现要点
以下是我总结出的几个需要额外注意的点
限流的途径应该是远程读和普通写操作而不应该包括本地读的操作.在HDFS中,任何读写操作都会尽可能的选择本地的方式进行读写,这样可以避免走网络通信,所以本地读在读操作中占的比例还是很高的.所以在这一点上,需要进行过滤,否则很容易”误伤”,导致无效的带宽限制.而普通的写操作我们大体上可以看作是分布式的写操作了,直接限流就可以了.
需要新增动态调整限流带宽的管理命令,操作命令应该类似设置带宽的命令dfsadmin -setBandwidth.因为有的时候,我们对集群进行限流只是在特定的期间或特定的时段,其余正常的时段能够进行关闭,需要能够有动态的调整手段,而不是每次需要重启DataNode进程服务.
IPC通信的超时时间需要增大.这一点是之前Ha