查找HDFS正在侦听的端口号

时间:2014-10-06 13:05:53

标签: hadoop hdfs cloudera hortonworks-data-platform mapr

我想访问具有完全限定名称的hdfs,例如:

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

我也可以使用

访问hdfs
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 ..但仍然找不到可靠的方法。

5 个答案:

答案 0 :(得分:44)

在Apache hadoop 2.7.0以后的命令下面,这可以用于获取hadoop配置属性的值。在hadoop 2.0中不推荐使用fs.default.name,fs.defaultFS是更新后的值。不确定这是否适用于maprfs。

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


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

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

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

答案 1 :(得分:10)

fs.default.name已弃用。

使用:hdfs getconf -confKey fs.defaultFS

答案 2 :(得分:2)

我在寻找HDFS URI时遇到了这个答案。通常,这是指向namenode的URL。虽然hdfs getconf -confKey fs.defaultFS为我提供了名称服务的名称,但它无法帮助我构建HDFS URI。

我尝试了下面的命令来获取名称节点的列表

 hdfs getconf -namenodes

这给了我一个所有名称节点的列表,主要是第一个,然后是次要的。之后构建HDFS URI很简单

hdfs://<primarynamenode>/

答案 3 :(得分:0)

你可以使用

hdfs getconf -confKey fs.default.name

答案 4 :(得分:-1)

是的,hdfs getconf -namenodes将显示名称节点列表。