Я хочу получить доступ к 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.. но все равно не смог найти надежный способ.