sql >> Base de Datos >  >> NoSQL >> HBase

Guía para el uso de puertos Apache HBase

Para aquellas personas que son nuevas en Apache HBase (versión 0.90 y posteriores), la configuración de los puertos de red utilizados por el sistema puede ser un poco abrumadora.

En esta publicación de blog, aprenderá todos los puertos TCP utilizados por los diferentes procesos de HBase y cómo y por qué se usan (todo en un solo lugar), para ayudar a los administradores a solucionar problemas y configurar la configuración del firewall, y ayudar a los nuevos desarrolladores a depurar.

Un clúster HBase típico tiene un maestro activo, uno o varios maestros de respaldo y una lista de servidores de región. Los maestros de respaldo son maestros en espera que esperan ser el próximo activo. Antes de que estén activos, no escuchan en ningún puerto. (Obtenga más información sobre cómo funciona la escalabilidad de HBase aquí).

Cada servidor del clúster escucha en un puerto principal las solicitudes de los clientes y/u otros servidores HBase. Cada servidor también tiene un servidor de interfaz de usuario web Jetty integrado.

El siguiente diagrama muestra la comunicación entre diferentes componentes. (Los componentes azules pertenecen al clúster HBase, generalmente detrás de un firewall; los componentes grises son clientes externos, generalmente fuera del firewall del clúster HBase; el componente verde es un navegador web, generalmente también fuera del firewall).

  1. Las aplicaciones cliente se comunican con Apache ZooKeeper para averiguar la ubicación del servidor principal y de la metaregión (la región raíz se elimina en la versión 0.96 de HBase).
  2. Las aplicaciones cliente se comunican con los servidores de la región para leer/escribir/escanear una tabla.
  3. Las aplicaciones cliente hablan con el maestro para obtener información sobre una tabla existente, crear/eliminar dinámicamente una tabla, agregar/eliminar una familia de columnas.
  4. El maestro habla con los servidores de regiones para abrir/cerrar/mover/dividir/vaciar/compactar regiones.
  5. El maestro coloca datos en ZooKeeper para almacenar la ubicación activa del servidor maestro y de la metaregión, crear tareas de división de registros, rastrear los estados de los servidores de la región.
  6. Los servidores de región leen datos en ZooKeeper para dividir registros, rastrear la ubicación principal y el estado del clúster.
  7. Los servidores de región hablan con el maestro para informar sobre los inicios y cargas del servidor de región.
  8. Ocasionalmente, los servidores de región se comunican con la metaregión para verificar el estado de una región, crear nuevas regiones secundarias en la división de regiones.
  9. Los clientes REST se comunican con los servidores REST para acceder a HBase.
  10. Los clientes de Thrift hablan con los servidores de Thrift para acceder a HBase.
  11. Los usuarios acceden a la IU web principal desde los navegadores.
  12. Los usuarios acceden a la interfaz de usuario web de los servidores de la región desde los navegadores.
  13. Los usuarios acceden a la interfaz de usuario web de los servidores REST desde los navegadores.
  14. Los usuarios acceden a la interfaz de usuario web de los servidores Thrift desde los navegadores.

Algunos clústeres de HBase pueden tener una lista de servidores REST o Thrift. Tanto el servidor REST como el servidor Thrift son opcionales; solo se necesitan si desea proporcionar acceso REST/Thrift a su clúster HBase. Para HBase, son solo otras aplicaciones cliente. Al igual que otros servidores HBase, también escuchan un puerto principal para las solicitudes de los clientes y un puerto de interfaz de usuario web.

La siguiente tabla muestra los puertos utilizados por las aplicaciones cliente para comunicarse con un clúster de HBase, los usuarios para verificar la información del clúster y los diferentes componentes de HBase para comunicarse entre sí.

Componente

Parámetro de configuración

Valor predeterminado

Lugares usados

ZooKeeper

hbase.zookeeper.property.clientPort

2181

1,5,6

Maestro

hbase.master.port

60000

3,7

Maestro

hbase.master.info.port

60010

11

Servidor de región

hbase.regionserver.port

60020

2,4,8

Servidor de región

hbase.regionserver.info.port

60030

12

Servidor REST

hbase.rest.port **

8080

9

Servidor REST

hbase.rest.info.port *

8085

13

Servidor Thrift

hbase.regionserver.thrift.port **

9090

10

Servidor Thrift

hbase.thrift.info.port *

9095

14

* Introducido en HBase versión 0.94.5. También se pueden especificar con la opción de línea de comando --infoport al iniciar el servidor correspondiente.
** También se pueden especificar con la opción de línea de comando -p al iniciar el servidor correspondiente.

Un puerto no aparece en la tabla, el puerto de nodo de nombre HDFS, porque aquí no hay un parámetro separado para él. Se configura como parte de "hbase.root" (por ejemplo, "hdfs://namenode.foobar.com:35802/hbase") con el puerto NameNode de HDFS configurado para ser 35802. A menos que se especifique lo contrario en el valor de " hbase.root”, el valor predeterminado es 8020.

Además del puerto principal, cada servidor del clúster (excepto ZooKeeper) también escucha un puerto de interfaz de usuario web. Una interfaz de usuario web es un servidor Jetty integrado en su servidor correspondiente. La interfaz de usuario web proporciona información legible por humanos sobre el servidor correspondiente, por ejemplo, el volcado de subprocesos y los registros locales. La interfaz de usuario web maestra tiene enlaces a todas las interfaces de usuario web del servidor de la región, lo que la convierte en el punto de entrada perfecto para comprobar el estado actual de un clúster de HBase.

Los servidores REST/Thrift son servidores proxy opcionales para HBase. Se comunican con HBase de la misma manera que lo hacen otras aplicaciones cliente de HBase. Sin embargo, normalmente se implementan dentro del clúster de HBase, junto con otros servidores de HBase.

Las aplicaciones cliente generalmente se implementan fuera del clúster de HBase. Los clientes REST/Thrift también se implementan fuera del clúster. Si el clúster de HBase está protegido por un firewall, estos puertos correspondientes deberían estar abiertos de forma predeterminada:

Para permitir el acceso a la aplicación del cliente:

  • 2181 (hbase.zookeeper.property.clientPort)
  • 60000 (hbase.maestro.puerto)
  • 60020 (hbase.regiónserver.puerto)

Para permitir el acceso del cliente REST/Thrift:

  • 8080 (hbase.resto.puerto)
  • 9090 (hbase.regionserver.thrift.puerto)

Si se permite el acceso a la IU web desde fuera del firewall, los puertos de la IU web correspondientes también deben estar abiertos:

  • 60010 (hbase.maestro.info.puerto)
  • 60030 (hbase.regionserver.info.puerto)
  • 8085 (hbase.rest.info.puerto)
  • 9095 (hbase.thrift.info.puerto)

Conclusión

En esta publicación, obtuvo un resumen de los puertos utilizados por los componentes internos de HBase, las aplicaciones cliente y los usuarios/administradores, organizados por caso de uso.

Sin embargo, debido a que HBase se ejecuta sobre HDFS, también es importante conocer los puertos HDFS. Para ejecutar MapReduce con HBase, también debe conocer los puertos de MapReduce. Para estos puertos relacionados con Hadoop, consulte Referencia rápida de puertos predeterminados de Hadoop .

Jimmy Xiang es ingeniero de software en el equipo de la plataforma.

> ¿Tiene preguntas? Publíquelos en el foro de la comunidad de HBase.