Подтвердить что ты не робот

Найти номер порта, где прослушивает HDFS

Я хочу получить доступ к 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 является maprfs на MapR. IBM BigInsights даже не имеет core-site.xml в $HADOOP_HOME/conf.

Как ни странно, hasoop говорит мне, что определено в fs.default.name с параметрами командной строки.

Как я могу получить значение, определенное в fs.default.name надежно из командной строки?

Тест всегда будет работать на namenode, поэтому имя машины легко. Но получить номер порта (8020) немного сложно. Я пробовал lsof, netstat.. но все равно не смог найти надежный способ.

4b9b3361

Ответ 1

Ниже команды, доступной в Apache hadoop 2.7.0 и далее, это можно использовать для получения значений свойств конфигурации hadoop. fs.default.name устарело в hadoop 2.0, fs.defaultFS - это обновленное значение. Не уверен, будет ли это работать с maprfs.

hdfs getconf -confKey fs.default.name

Не уверен, имеются ли какие-либо утилиты командной строки для получения значений свойств конфигурации в Mapr или hadoop 0.20 hadoop. В случае этой ситуации лучше попробовать то же самое в Java для получения значения, соответствующего свойству конфигурации.

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

Ответ 2

fs.default.name устарело.

use: hdfs getconf -confKey fs.defaultFS

Ответ 3

Я столкнулся с этим ответом, когда искал HDRI URI. Как правило, это URL-адрес, указывающий на nenenode. Пока hdfs getconf -confKey fs.defaultFS возвращает мне имя службы имен, но это не поможет мне создать URI HDFS.

Я попробовал следующую команду, чтобы получить список наменодов вместо

 hdfs getconf -namenodes

Это дало мне список всех наменоходов, первичный сначала, а затем вторичный. После этого создание HDFS URI было простым

hdfs://<primarynamenode>/

Ответ 4

вы можете использовать

hdfs getconf -confKey fs.default.name

Ответ 5

Да, hdfs getconf -namenodes покажет список namenodes.