Logotipo de Zephyrnet

Supervise Apache HBase en Amazon EMR mediante Amazon Managed Service for Prometheus y Amazon Managed Grafana

Fecha:

EMR de Amazon proporciona un marco Apache Hadoop administrado que hace que su ejecución sea sencilla, rápida y rentable Apache HBase. Apache HBase es un gran almacén de datos masivo distribuido y escalable en el ecosistema Apache Hadoop. Es una base de datos versionada, no relacional y de código abierto que se ejecuta sobre el sistema de archivos distribuido Apache Hadoop (HDFS). Está construido para acceso aleatorio, estrictamente consistente y en tiempo real para tablas con miles de millones de filas y millones de columnas. El monitoreo de los clústeres de HBase es fundamental para identificar los cuellos de botella en la estabilidad y el rendimiento y evitarlos de manera proactiva. En esta publicación, discutimos cómo puede usar Servicio administrado de Amazon para Prometheus y Grafana gestionado por Amazon para monitorear, alertar y visualizar métricas de HBase.

HBase tiene soporte integrado para exportar métricas a través del subsistema de métricas de Hadoop a archivos o Ganglia oa través de JMX. Puedes usar Distribución de AWS para OpenTelemetry or Exportadores Prometheus JMX para recopilar métricas expuestas por HBase. En esta publicación, mostramos cómo usar los exportadores de Prometheus. Estos exportadores se comportan como pequeños servidores web que convierten las métricas internas de la aplicación al formato Prometheus y las sirven en /metrics camino. Un servidor Prometheus ejecutándose en un Nube informática elástica de Amazon (Amazon EC2) instancia recopila estas métricas y escrituras remotas a un espacio de trabajo de Amazon Managed Service for Prometheus. Luego usamos Amazon Managed Grafana para crear tableros y ver estas métricas usando un servicio administrado de Amazon para el espacio de trabajo de Prometheus como su fuente de datos.

Esta solución se puede extender a otras plataformas de big data como Apache Spark y Apache Presto que también usan JMX para exponer sus métricas.

Resumen de la solución

El siguiente diagrama ilustra la arquitectura de nuestra solución.

Arquitectura de soluciones

Esta publicación usa un Formación en la nube de AWS plantilla para realizar las siguientes acciones:

  1. Instale un servidor Prometheus de código abierto en una instancia EC2.
  2. Crear apropiado Gestión de identidades y accesos de AWS (IAM) roles y grupo de seguridad para la instancia EC2 que ejecuta el servidor Prometheus.
  3. Cree un clúster de EMR con una configuración de HBase en Amazon S3.
  4. Instale exportadores JMX en todos los nodos de EMR.
  5. Cree grupos de seguridad adicionales para que los nodos maestro y trabajador de EMR se conecten con el servidor Prometheus que se ejecuta en la instancia EC2.
  6. Cree un espacio de trabajo en Amazon Managed Service para Prometheus.

Requisitos previos

Para implementar esta solución, asegúrese de tener los siguientes requisitos previos:

aws emr create-default-roles

Implementar la plantilla de CloudFormation

Implemente la plantilla de CloudFormation en el us-east-1 Región:

Pila de lanzamiento

La plantilla tardará entre 15 y 20 minutos en completarse. La plantilla requiere los siguientes campos:

  • Nombre de pila – Introduzca un nombre para la pila
  • VPC – Elija una VPC existente
  • Subred – Elija una subred existente
  • EMRClústerNombre - Utilizar EMRHBase
  • HBaseRootDir – Proporcione un nuevo directorio raíz de HBase (por ejemplo, s3://hbase-root-dir/).
  • Tipo de instancia maestra – Usar m5x.grande
  • Tipo de instancia principal – Usar m5x.grande
  • Número de instancias principales – Introduzca 2
  • SSHIPRango - Utilizar <your ip address>/32 (puedes ir a https://checkip.amazonaws.com/ para comprobar su dirección IP)
  • NombreClaveEMR – Elija un par de claves para el clúster EMR
  • EMRRleaseEtiqueta - Utilizar emr-6.9.0
  • Tipo de instancia – Utilice el tipo de instancia EC2 para instalar el servidor Prometheus

parámetros de formación de nubes

Habilitar escrituras remotas en el servidor Prometheus

El servidor Prometheus se ejecuta en una instancia EC2. Puede encontrar el nombre de host de la instancia en la pila de CloudFormation. Salidas pestaña para la clave PrometheusServerPublicDNSName.

  1. SSH en la instancia EC2 usando el par de claves:
    ssh -i <sshKey.pem> ec2-user@<Public IPv4 DNS of EC2 instance running Prometheus server>

  2. Copie el valor de Punto final: URL de escritura remota desde la consola del espacio de trabajo de Amazon Managed Service para Prometheus.

  1. Editar remote_write url in /etc/prometheus/conf/prometheus.yml:
sudo vi /etc/prometheus/conf/prometheus.yml

Debería verse como el siguiente código:

  1. Ahora necesitamos reiniciar el servidor Prometheus para recoger los cambios:
sudo systemctl restart prometheus

Permita que Amazon Managed Grafana lea desde un espacio de trabajo de Amazon Managed Service for Prometheus

Necesitamos agregar el espacio de trabajo de Amazon Managed Prometheus como fuente de datos en Amazon Managed Grafana. Puede pasar directamente al paso 3 si ya tiene un espacio de trabajo de Amazon Managed Grafana y desea utilizarlo para las métricas de HBase.

  1. Primero, creemos un espacio de trabajo en Amazon Managed Grafana. Puede seguir el apéndice para crear un espacio de trabajo mediante la consola de Amazon Managed Grafana o ejecutar la siguiente API desde su terminal (proporcione el ARN de su función):
aws grafana create-workspace --account-access-type CURRENT_ACCOUNT --authentication-providers AWS_SSO --permission-type CUSTOMER_MANAGED --workspace-data-sources PROMETHEUS --workspace-name emr-metrics --workspace-role-arn <role-ARN> --workspace-notification-destinations SNS

  1. En la consola de Amazon Managed Grafana, elija Configurar usuarios y seleccione un usuario al que desee permitir que inicie sesión en los paneles de Grafana.

Asegúrese de que su tipo de usuario de IAM Identity Center sea admin. Necesitamos esto para crear tableros. Puede asignar la función de espectador a todos los demás usuarios.

  1. Inicie sesión en la URL del espacio de trabajo de Amazon Managed Grafana con sus credenciales de administrador.
  2. Elige Fuentes de datos de AWS en el panel de navegación.

  1. Service, escoger Servicio administrado de Amazon para Prometheus.

  1. Regiones, escoger Este de los Estados Unidos (Virginia del Norte).

Crear un panel de HBase

Grafana labs tiene un panel de control de código abierto que puede usar. Por ejemplo, puede seguir las instrucciones de las siguientes Tablero HBase. Comience a crear su tablero y elija la opción de importación. Proporcione la URL del tablero o ingrese 12722 y elige Carga. Asegúrese de que su espacio de trabajo de Prometheus esté seleccionado en la página siguiente. Debería ver las métricas de HBase en el tablero.

Métricas clave de HBase para monitorear

HBase tiene una amplia gama de métricas para HMaster y RegionServer. Las siguientes son algunas métricas importantes a tener en cuenta.

MAESTRO Nombre de la métrica Descripción métrica
. hadoop_HBase_numservidores de regiones Número de servidores de regiones activas
. hadoop_HBase_numdeadregionservers Número de servidores de regiones muertas
. hadoop_HBase_ritcount Número de regiones en transición
. hadoop_HBase_ritcountoverthreshold Número de regiones que han estado en transición durante más tiempo que un umbral de tiempo (predeterminado: 60 segundos)
. hadoop_HBase_ritduration_99th_percentile Tiempo máximo que tarda el 99% de las regiones en permanecer en estado de transición
SERVIDOR DE REGIÓN Nombre de la métrica Descripción métrica
. hadoop_HBase_regioncount Número de regiones alojadas por el servidor de regiones
. hadoop_HBase_storefilecount Número de archivos de almacenamiento gestionados actualmente por el servidor de la región
. hadoop_HBase_storefilesize Tamaño agregado de los archivos de la tienda
. hadoop_HBase_hlogfilecount Número de registros de escritura anticipada aún no archivados
. hadoop_HBase_hlogfilesize Tamaño de todos los archivos de registro de escritura anticipada
. hadoop_HBase_totalrequestcount Número total de solicitudes recibidas
. hadoop_HBase_readrequestcount Número de solicitudes de lectura recibidas
. hadoop_HBase_writerequestcount Número de solicitudes de escritura recibidas
. hadoop_HBase_numopenconnections Número de conexiones abiertas en la capa RPC
. hadoop_HBase_numactivehandler Número de controladores de RPC que atienden solicitudes de forma activa
tienda de memoria . .
. hadoop_HBase_memstoresize Tamaño total de la memoria del almacén de memoria del servidor de la región
. hadoop_HBase_flushqueuelength Profundidad actual de la cola de vaciado de memstore (si aumenta, nos estamos quedando atrás con la limpieza de memstores en Amazon S3)
. hadoop_HBase_flushtime_99th_percentile Latencia del percentil 99 para la operación de descarga
. hadoop_HBase_updatestiempobloqueado Se han bloqueado el número de actualizaciones de milisegundos para que se pueda vaciar el memstore
Caché de bloque . .
. hadoop_HBase_blockcachesize Tamaño de caché de bloque
. hadoop_HBase_blockcachefreesize Bloquear tamaño libre de caché
. hadoop_HBase_blockcachehitcount Número de aciertos de caché de bloque
. hadoop_HBase_blockcachemisscount Número de errores de caché de bloque
. hadoop_HBase_blockcacheexpresshitpercent Porcentaje del tiempo que las solicitudes con el caché activado llegan al caché
. hadoop_HBase_blockcachecounthitpercent Porcentaje de aciertos de caché de bloque
. hadoop_HBase_blockcacheevictioncount Número de desalojos de caché de bloque en el servidor de la región
. hadoop_HBase_l2cachehitratio Proporción de aciertos de caché de depósito basada en disco local
. hadoop_HBase_l2cachemissratio Proporción de errores de caché de depósito
Compactación . .
. hadoop_HBase_majorcompactiontime_99th_percentile Tiempo en milisegundos necesario para la compactación mayor
. hadoop_HBase_compactiontime_99th_percentile Tiempo en milisegundos necesario para la compactación menor
. hadoop_HBase_compactionqueuelength Profundidad actual de la cola de solicitudes de compactación (si aumenta, nos estamos quedando atrás con la compactación del archivo de almacenamiento)
. longitud de la cola de descarga Número de operaciones de vaciado que esperan ser procesadas en el servidor de la región (un número más alto indica que las operaciones de vaciado son lentas)
Colas de IPC . .
. hadoop_HBase_tamaño cola Tamaño total de datos de todas las llamadas RPC en las colas RPC en el servidor de región
. hadoop_HBase_numllamadasencolageneral Número de llamadas RPC en la cola de procesamiento general en el servidor de región
. hadoop_HBase_processcalltime_99th_percentile Latencia del percentil 99 para que las llamadas RPC se procesen en el servidor de la región
. hadoop_HBase_queuecalltime_99th_percentile Latencia del percentil 99 para que las llamadas RPC permanezcan en la cola RPC en el servidor de la región
JVM y GC . .
. hadoop_HBase_memheapusedm Montón usado
. hadoop_HBase_memheapmaxm Montón total
. hadoop_HBase_pausetimewithgc_99th_percentile Tiempo de pausa en milisegundos
. hadoop_HBase_gccount Recuento de recogida de basura
. hadoop_HBase_gctimemillis Tiempo empleado en la recolección de basura, en milisegundos
Latencias . .
. HBase.región servidor. _ Latencias de operación, donde es Agregar, Eliminar, Mutar, Obtener, Reproducir o Incrementar, y es mínimo, máximo, media, mediana, percentil_75, percentil_95 o percentil_99
. HBase.regionserver.slow Contar Número de operaciones que pensamos que eran lentas, donde es uno de la lista anterior
Carga masiva . .
. Carga masiva_percentil_99 hadoop_HBase_bulkload_99th_percentile
I / O . .
. FsWriteTime_percentil_99 hadoop_HBase_fswritetime_99th_percentile
. FsReadTime_percentil_99 hadoop_HBase_fsreadtime_99th_percentile
Excepciones . .
. excepciones.RegionTooBusyException .
. excepciones.callQueueTooBig .
. excepciones.NotServingRegionException .

Consideraciones y limitaciones

Tenga en cuenta lo siguiente cuando utilice esta solución:

Limpiar

Para evitar cargos continuos, elimine la pila de CloudFormation y los espacios de trabajo creados en Amazon Managed Grafana y Amazon Managed Service for Prometheus.

Conclusión

En esta publicación, aprendió a monitorear clústeres de EMR HBase y a configurar paneles para visualizar métricas clave. Esta solución puede servir como una plataforma de monitoreo unificada para múltiples clústeres de EMR y otras aplicaciones. Para obtener más información sobre EMR HBase, consulte Guía de lanzamiento y Documento técnico sobre migración de HBase.


Apéndice

Complete los siguientes pasos para crear un espacio de trabajo en Amazon Managed Grafana:

  1. Inicie sesión en la consola de Amazon Managed Grafana y elija Crear espacio de trabajo.

  1. Acceso de autenticación, seleccione Centro de identidad de AWS IAM.

Si no tiene habilitado el Centro de identidad de IAM, consulte Habilitar el centro de identidad de IAM.

  1. Opcionalmente, para ver las alertas de Prometheus en su espacio de trabajo de Grafana, seleccione Activar las alertas de Grafana.

  1. En la página siguiente, selecciona Servicio administrado de Amazon para Prometheus como fuente de datos.

  1. Después de crear el espacio de trabajo, asigne usuarios para acceder a Amazon Managed Grafana.

  1. Para una configuración inicial, asigne privilegios de administrador al usuario.

Puede agregar otros usuarios solo con acceso de espectador.

Asegúrese de poder iniciar sesión en la URL del espacio de trabajo de Grafana con sus credenciales de usuario del Centro de identidad de IAM.


Sobre la autora

Anubhav Awasthi es Arquitecto Sr. de Soluciones Especialista en Big Data en AWS. Trabaja con los clientes para brindar orientación arquitectónica para ejecutar soluciones de análisis en Amazon EMR, Amazon Athena, AWS Glue y AWS Lake Formation.

punto_img

Información más reciente

punto_img