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

5kgi1eie  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(181)

我正在尝试使用hadoopjava客户机,并使用consul路由到集群中当前的活动名称节点。我的集群是cloudera,使用ha。当hadoop consul更改活动namenode时,也会立即将解析更改为新的活动namenode。我想从hadoop集群外部连接到hdfs。
我正在尝试非常简单的循环代码,没有任何特定的配置。

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()
        }

当我开始运行时,我在日志中看到name node已正确解析,但当我执行手动故障切换时,出现以下错误:

Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:88)
at org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:1836)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java:1433)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:4245)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:897)
at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getFileInfo(AuthorizationProviderProxyClientProtocol.java:528)

看起来hadoop客户端仍在尝试连接到以前存储的ip,而不是已经更改为新活动namenode的ip。
我看到了许多关于ha namenodes的一个uri问题的类似问题,但是没有任何解决方案。现在我有了解决方案,但需要知道如何清理hadoop客户端的ip缓存。
是否有人知道如何禁用hdfs客户机的内部缓存ip解析,以便它在每次调用时执行活动namenode的ip查找?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题