Найти номер порта, где прослушивает 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.. но все равно не смог найти надежный способ.
Ответы
Ответ 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.