我在 HDFS 中使用 Rack Awareness 技术,我可以使用以下命令来获取拓扑:
hdfs dfsadmin-printTopology
今天,设置 HDFS 联合并使用 viewfs 而不是 hdfs 作为 defaultFS 之后,如下所示:
<!--
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode1:9000</value>
</property>
-->
<property>
<name>fs.defaultFS</name>
<value>viewfs:///</value>
</property>
<property>
<name>fs.viewfs.mounttable.default.link./ns1</name>
<value>hdfs://namenode1:9000</value>
</property>
<property>
<name>fs.viewfs.mounttable.default.link./ns2</name>
<value>hdfs://namenode2:9000</value>
</property>
我收到错误信息:
hduser@namenode1:/usr/local/hadoop/etc/hadoop$ hdfs dfsadmin -printTopology
printTopology: FileSystem viewfs:/ is not an HDFS file system
Usage: java DFSAdmin [-printTopology]
我的问题是:
- 在联合中使用 viewfs 比使用 hdfs 更好吗?
- viewfs 是否支持 Rack Awareness 和 printTopology 命令?
我是 HDFS 集群的新手,希望可以从这里获得建议。
答案1
您应该使用新的 hadoop 客户端,并像这样设置 core-site.xml:property:fs.defaultFS value:hdfs://your active namenode host:port not viewfs protocol 然后您可以使用 hdfs 客户端注释