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