我想使用完全限定名访问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。。但还是找不到可靠的方法。
5条答案
按热度按时间pbpqsu0x1#
我在寻找hdfs uri时遇到了这个答案。通常,这是一个指向namenode的url。而
hdfs getconf -confKey fs.defaultFS
获取名称服务的名称,但这无助于生成hdfs uri。我尝试了下面的命令来获取namenodes的列表
这给了我一个所有namenodes的列表,首先是primary,然后是secondary。之后构造hdfsuri就很简单了
bfnvny8b2#
fs.default.name已弃用。
用途:
hdfs getconf -confKey fs.defaultFS
q5lcpyga3#
你可以用
yacmzcpb4#
是的,hdfs getconf-namenodes将显示namenodes的列表。
tsm1rwdh5#
下面的命令在ApacheHadoop2.7.0以后的版本中可用,它可以用于获取hadoop配置属性的值。在Hadoop2.0中不推荐使用fs.default.name,fs.defaultfs是更新后的值。不确定这在maprfs的情况下是否有效。
或者
不确定是否有任何命令行实用程序可用于检索mapr或hadoop0.20 hadoop版本中的配置属性值。在这种情况下,您最好在java中尝试同样的方法来检索与配置属性对应的值。