具有多个名称节点的远程文件系统上的 hdfs dfs -ls?

hdfs dfs -ls on remote file system with multiple name nodes?

我们有两个名称节点:nnA 和 nnB。

我想从远程系统查看此系统的文件和目录。

如果 nnA 是主名称节点我可以做 hdfs dfs -Dfs.defaultFS=hdfs://nnA -ls /path/to/files 如果 nnB 是主名称节点,我可以执行 hdfs dfs -Dfs.defaultFS=hdfs://nnB -ls /path/to/files

如果我使用的名称节点恰好是当时的主要名称节点,那么这两个命令都可以正常工作。如果我选择使用的名称节点恰好是辅助名称节点,我会收到错误 Operation category READ is not supported in state standby.

我希望能够在我的命令中指定两个名称节点。从远程系统我无法知道哪个名称节点是主要的,哪个是次要的,它们完全有可能偶尔切换。

这是我正在处理的脚本,我真的想避免在调用 hdfs 时循环遍历可能的主名称节点。

我一整天都在谷歌上搜索,但没有找到解决方案,也没有找到任何其他有这个用例的人

From the remote system I have no way of knowing which namenode is the primary and which is the secondary

首先,"secondary namenode" 实际上意味着什么,根据您得到的错误,您似乎是指 standby namenode。

You need to refer to the dfs.nameservices 在你的 $HADOOP_CONF_DIR/hdfs-site.xml,然后你可以使用 hdfs dfs -ls hdfs://nameservice/path

相关 - Any command to get active namenode for nameservice in hadoop?