通过HA访问Hdfs获取ActiveNode

通过HA访问Hdfs的时候如何获取到活跃节点是一个稍稍有些麻烦的事情。

目前使用过两种方案:一是通过webhdfs接口逐一访问测试,找到状态为可用的节点;一是在zookeeper上直接获取当前活跃的节点。

简单说下第二种方案。ha的ActiveNode在zookeeper上的存储节点为:/hadoop-ha/dcnameservice/ActiveStandbyElectorLock。只需要通过ZooKeeper的API监听获取这个节点的信息即可。不过这个节点保存的信息不能当做字符串来读取,它是一个序列化后的对象,需要反序列化才能使用。

实现的代码如下:

就这样。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据