使用Consul进行hadoop hdfs namenode故障转移

时间:2016-12-02 18:28:10

标签: hadoop dns hdfs consul namenode

我正在尝试使用Hadoop Java客户端,并且我使用Consul路由到群集中的当前活动名称节点。我的群集是cloudera并使用HA。 当hadoop Consul更改活动的namenode时,立即将分辨率更改为新的活动namenode。 我想从hadoop集群外部连接到HDFS。

我在循环中尝试非常简单的代码,没有任何特定的配置。

in

当我开始运行时,我在日志中看到名称节点已正确解析但是当我进行手动故障转移时,我收到以下错误:

    try {
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", activeHdfsNameNodeBehindConsul);
            FileSystem fs = FileSystem.get(conf);
            Path pathToDirectory = new Path("/user/");
            if (!fs.exists(pathToDirectory)) {
                System.out.println("HDFS PATH EXIST");
            } else{
                System.out.println("HDFS PATH NOT EXIST");
            }
        } catch (IOException e) {
            e.printStackTrace()
        }

看起来Hadoop客户端仍在尝试连接到以前存储的IP,而不是已经更改为新的活动namenode的ip。

我看到很多关于HA名称节点的URI问题的类似问题,但没有任何解决方案。现在我有解决方案,但需要知道如何清理hadoop客户端的IP缓存。

有人知道如何禁用HDFS客户端的内部缓存IP解析,以便每次调用时都会执行活动namenode的IP查找吗?

0 个答案:

没有答案