【精】HDFS无需重启NN进行动态刷新拓扑信息

本文实现了一个HDFS的Feature:无需滚动重启Namenode即可实现动态加载机架信息,变更集群网络拓扑和机架感知信息。

本文会从功能必要性、实现原理、实现源码、测试结果、以及过程中遇到的问题这几个角度来介绍。

通过本文可以get如下知识点:
① 如何在HDFS中新增一个RPC
② 实现无需重启NN进行动态刷新拓扑信息
③ hdfs fsck命令、lsof、 stat命令等

必要性:HDFS集群扩容新节点是个频繁性操作,在扩容时,经常会更改机架信息文件,这时候需要滚动重启Namenode才可以生效,但是当集群规模比较大时,滚动重启一次再加上块汇报以及观察健康状态,往往几个小时就过去了。因此实现动态刷新拓扑信息不重启namenode是有必要的。

一、实现源码

首先增加一个refreshTopology RPC

① 在ClientNamenodeProtocol.proto文件中定义rpc

ClientNamenodeProtocol.proto这个文件中定义的rpc都是Client与NameNode之间的rpc

【精】HDFS无需重启NN进行动态刷新拓扑信息_第1张图片

rpc refreshTopology(RefreshTopologyRequestProto) returns(RefreshTopologyReponseProto);

② 定义RefreshTopologyRe

你可能感兴趣的:(HDFS全方位实战,分布式存储,hdfs,hadoop,big,data,大数据)