查找hdfs正在侦听的端口号

zphenhs4  于 2021-06-02  发布在  Hadoop
关注(0)|答案(5)|浏览(456)

我想使用完全限定名访问hdfs,例如:

hadoop fs -ls hdfs://machine-name:8020/user

我也可以通过

hadoop fs -ls /user

但是,我编写的测试用例应该适用于不同的发行版(hdp、cloudera、mapr…等等),其中涉及使用限定名访问hdfs文件。
我明白 hdfs://machine-name:8020 在core-site.xml中定义为 fs.default.name . 但这在不同的分布上似乎是不同的。例如,hdfs是mapr上的maprfs。ibm biginsights甚至没有 core-site.xml$HADOOP_HOME/conf .
hadoop似乎没有办法告诉我 fs.default.name 它的命令行选项。
如何获取中定义的值 fs.default.name 可靠地从命令行?
测试将始终在namenode上运行,因此机器名很简单。但是获取端口号(8020)有点困难。我试过lsof,netstat。。但还是找不到可靠的方法。

pbpqsu0x

pbpqsu0x1#

我在寻找hdfs uri时遇到了这个答案。通常,这是一个指向namenode的url。而 hdfs getconf -confKey fs.defaultFS 获取名称服务的名称,但这无助于生成hdfs uri。
我尝试了下面的命令来获取namenodes的列表

hdfs getconf -namenodes

这给了我一个所有namenodes的列表,首先是primary,然后是secondary。之后构造hdfsuri就很简单了

hdfs://<primarynamenode>/
bfnvny8b

bfnvny8b2#

fs.default.name已弃用。
用途: hdfs getconf -confKey fs.defaultFS

q5lcpyga

q5lcpyga3#

你可以用

hdfs getconf -confKey fs.default.name
yacmzcpb

yacmzcpb4#

是的,hdfs getconf-namenodes将显示namenodes的列表。

tsm1rwdh

tsm1rwdh5#

下面的命令在ApacheHadoop2.7.0以后的版本中可用,它可以用于获取hadoop配置属性的值。在Hadoop2.0中不推荐使用fs.default.name,fs.defaultfs是更新后的值。不确定这在maprfs的情况下是否有效。

hdfs getconf -confKey fs.defaultFS  # ( new property )

或者

hdfs getconf -confKey fs.default.name    # ( old property )

不确定是否有任何命令行实用程序可用于检索mapr或hadoop0.20 hadoop版本中的配置属性值。在这种情况下,您最好在java中尝试同样的方法来检索与配置属性对应的值。

Configuration hadoop conf = Configuration.getConf();
System.out.println(conf.get("fs.default.name"));

相关问题