hadoop hdfs cloudera hortonworks-data-platform mapr

hadoop - Encontrar el número de puerto donde HDFS está escuchando



cloudera hortonworks-data-platform (5)

Quiero acceder a hdfs con nombres completos como:

hadoop fs -ls hdfs://machine-name:8020/user

También podría simplemente acceder a hdfs con

hadoop fs -ls /user

Sin embargo, estoy escribiendo casos de prueba que deberían funcionar en diferentes distribuciones (HDP, Cloudera, MapR ... etc) que involucran el acceso a archivos hdfs con nombres calificados.

Entiendo que hdfs://machine-name:8020 se define en core-site.xml como fs.default.name . Pero esto parece ser diferente en diferentes distribuciones. Por ejemplo, hdfs es maprfs en MapR. IBM BigInsights ni siquiera tiene core-site.xml en $HADOOP_HOME/conf .

Parece que, de alguna manera, hadoop me dice lo que está definido en fs.default.name con sus opciones de línea de comandos.

¿Cómo puedo obtener el valor definido en fs.default.name forma confiable desde la línea de comandos?

La prueba siempre se ejecutará en namenode, por lo que el nombre de la máquina es fácil. Pero obtener el número de puerto (8020) es un poco difícil. Intenté lsof, netstat .. pero todavía no pude encontrar una manera confiable.


Bajo el comando disponible en Apache hadoop 2.7.0 en adelante, se puede usar para obtener los valores de las propiedades de configuración de hadoop. fs.default.name está en desuso en hadoop 2.0, fs.defaultFS es el valor actualizado. No estoy seguro de si esto funcionará en caso de maprfs.

hdfs getconf -confKey fs.defaultFS # ( new property )

o

hdfs getconf -confKey fs.default.name # ( old property )

No estoy seguro de si hay alguna utilidad de línea de comandos disponible para recuperar valores de propiedades de configuración en las versiones de hadoop Mapado o hadoop 0.20. En este caso, es mejor que intentes lo mismo en Java para recuperar el valor correspondiente a una propiedad de configuración.

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


Encontré esta respuesta cuando estaba buscando URI de HDFS. En general, es una URL que apunta al namenode. Mientras que hdfs getconf -confKey fs.defaultFS me da el nombre del servicio de nombres, pero no me ayudará a crear el URI de HDFS.

Intenté el siguiente comando para obtener una lista de los namenodes en su lugar

hdfs getconf -namenodes

Esto me dio una lista de todos los nombres de árbol, primero el primero y luego el secundario. Después de eso la construcción del URI HDFS fue simple

hdfs://<primarynamenode>/


Sí, hdfs getconf -namenodes mostrará la lista de namenodes.


fs.default.name está en desuso.

utilizar: hdfs getconf -confKey fs.defaultFS


puedes usar

hdfs getconf -confKey fs.default.name