Найти номер порта, где HDFS прослушивает
Я хочу получить доступ к hdfs с полными именами, такими как:
hadoop fs -ls hdfs://machine-name:8020/user
Я также мог бы просто получить доступ к hdfs с
hadoop fs -ls /user
однако я пишу тестовые примеры, которые должны работать на разных дистрибутивах(HDP, Cloudera, MapR...etc), который включает в себя доступ к файлам hdfs с квалифицированными именами.
Я понимаю, что hdfs://machine-name:8020
определяется в core-site.xml как fs.default.name
. Но это, кажется, отличается в разных распределениях. Например, hdfs-это maprfs на Мапр. IBM BigInsights даже не имеют core-site.xml
на $HADOOP_HOME/conf
.
кажется, что hadoop не говорит мне, что определено в fs.default.name
С его параметрами командной строки.
как я могу получить значение, определенное в fs.default.name
надежно из командной строки?
тест всегда будет работать на namenode, поэтому имя машины легко. Но получить номер порта(8020) немного сложно. Я попытался как lsof, команды netstat.. но все равно не мог найти надежного способа.
5 ответов
ниже команда доступна в Apache hadoop 2.7.0 и далее, это может быть использовано для получения значений для свойств конфигурации hadoop. fs.по умолчанию.имя устарело в hadoop 2.0, 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"));
я столкнулся с этим ответом, когда искал URI HDFS. Обычно это URL-адрес, указывающий на namenode. В то время как hdfs getconf -confKey fs.defaultFS
получает мне имя nameservice, но это не поможет мне построить URI HDFS.
я попробовал команду ниже, чтобы получить список namenodes вместо
hdfs getconf -namenodes
Это дало мне список всех namenodes, первичный первый, а затем вторичный. После этого построение URI HDFS было простым
hdfs://<primarynamenode>/