Apache HBase Master (HMaster) no se inicia en Azure HDInsight

En este artículo se describen los pasos de solución de problemas y las posibles soluciones para los problemas que se producen al usar clústeres de Azure HDInsight.

Escenario: Master startup cannot progress, in holding-pattern until region comes online

Incidencia

HMaster no se puede iniciar debido a la siguiente advertencia:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Por ejemplo, los valores de los parámetros pueden variar en el mensaje real:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Causa

HMaster busca el directorio WAL en los servidores de la región antes de volver a poner en línea las regiones OPEN. En este caso, si ese directorio no estaba presente, no se estaba iniciando

Solución

  1. Cree este directorio ficticio mediante el comando: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Reinicie el servicio HMaster desde la interfaz de usuario de Ambari.

Si usa hbase-2.x, consulte más información sobre cómo usar hbck2 para asignar un espacio de nombres y una tabla meta

Escenario: error del cambio de nombre atómico

Problema

Archivos inesperados identificados durante el proceso de inicio.

Causa

Durante el proceso de inicio, HMaster realiza muchos pasos de inicialización, incluido el movimiento de datos desde la carpeta temporal (.tmp) a la carpeta de datos. HMaster también examina la carpeta de registros de escritura previa (WAL) para ver si hay servidores de la región que no responden.

HMaster realiza un comando de lista básico en las carpetas de WAL. Si en algún momento HMaster ve un archivo inesperado en cualquiera de estas carpetas, genera una excepción y no se inicia.

Solución

Compruebe la pila de llamadas e intente determinar qué carpeta puede ser la causante del problema (por ejemplo, puede ser la carpeta de WAL o la carpeta .tmp). Después, en el Explorador de Azure Storage o mediante los comandos de HDFS, pruebe a buscar el archivo problemático. Normalmente, este archivo se denomina *-renamePending.json. (El archivo *-renamePending.json es un archivo de diario que se usa para implementar la operación de cambio de nombre atómico en el controlador WASB. Por errores en esta implementación, se pueden dejar, por ejemplo, cuando el proceso se bloquea). Fuerce la eliminación de este archivo en Cloud Explorer o mediante comandos de HDFS.

En ocasiones, en esta ubicación también puede haber un archivo temporal con un nombre similar a $$$.$$$. Para ver este archivo, tiene que usar el comando ls de HDFS; en el Explorador de Azure Storage no se puede ver. Para eliminar este archivo, use el comando hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$ de HDFS.

Una vez que haya ejecutado estos comandos, HMaster debería iniciarse de inmediato.


Escenario: no se enumera ninguna dirección de servidor

Problema

Es posible que vea un mensaje que indica que la tabla hbase: meta no está en línea. La ejecución de hbck puede notificar que hbase: meta table replicaId 0 is not found on any region.. En los registros de HMaster, es posible que vea el mensaje: No server address listed in hbase: meta for region hbase: backup <region name>.

Causa

No se pudo inicializar HMaster después de reiniciar HBase.

Solución

  1. En el shell de HBase, especifique los siguientes comandos (cambie los valores reales según corresponda):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Elimine la entrada hbase: namespace. Esta entrada puede ser el mismo error que se notifica cuando se examina la tabla hbase: namespace.

  3. Reinicie el HMaster activo desde la interfaz de usuario de Ambari para que aparezca en estado de ejecución.

  4. En el shell de HBase, para activar todas las tablas sin conexión, ejecute el siguiente comando:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Escenario: java.io.IOException: Timedout

Problema

HMaster agota el tiempo de espera con una excepción grave, similar a java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Causa

Este problema puede aparecer si hay muchas tablas y regiones que no se han vaciado al reiniciar los servicios de HMaster. El tiempo de espera es un defecto conocido de HMaster. Las tareas de inicio de los clústeres generales pueden tardar mucho tiempo. HMaster se cierra si la tabla de espacios de nombres todavía no está asignada. Las tareas de inicio largas tienen lugar cuando existe una gran cantidad de datos sin vaciar y no basta con un tiempo de espera de cinco minutos.

Solución

  1. En la interfaz de usuario de Apache Ambari, vaya a HBase>Configs (Configuraciones). En el archivo hbase-site.xml personalizado, agregue la siguiente configuración:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Reinicie los servicios requeridos (HMaster y posiblemente otros servicios de HBase).


Escenario: reinicios frecuentes del servidor de regiones

Problema

Los nodos se reinician periódicamente. En los registros del servidor de regiones puede ver entradas parecidas a estas:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Causa: tiempo de espera de la sesión de Zookeeper expirado

Pausa larga de la recolección de elementos no utilizados de Máquina virtual Java en regionserver. La pausa hace que regionserver deje de responder y no pueda enviar latidos a HMaster dentro del tiempo de espera de sesión de Zookeeper de 40 s. HMaster cree que regionserver está muerto, anula los regionserver y reinicia.

Para mitigarlo, cambie el tiempo de espera de sesión de Zookeeper; no solo es necesario cambiar el valor zookeeper.session.timeout de hbase-site, sino también el valor maxSessionTimeout de zoo.cfg de Zookeeper.

  1. Acceda a la UI de Ambari, vaya a HBase -> Configs -> Settings (HBase -> Configuraciones -> Configuración) y, en la sección Timeouts (Tiempos de espera), cambie el valor del tiempo de espera de la sesión de Zookeeper.

  2. Acceda a la UI de Ambari, vaya a Zookeeper -> Configs -> Custom zoo.cfg(Zookeeper -> Configuraciones -> Personalizar) y agregue o cambie el siguiente valor. Asegúrese de que el valor sea el mismo que zookeeper.session.timeout de HBase.

    Key: maxSessionTimeout Value: 120000  
    
  3. Reinicie los servicios necesarios.

Causa: RegionServer sobrecargado

Siga Número de regiones por RS: límite superior para calcular el límite superior. Por ejemplo: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Para mitigarlo, escale verticalmente el clúster de HBase.


Escenario: error de división del registro

Problema

HMasters no se pudo mostrar en un clúster de HBase.

Causa

Error de configuración de HDFS y HBase en una cuenta de almacenamiento secundaria.

Solución

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase y reinicie los servicios en Ambari.


Pasos siguientes

Si su problema no aparece o es incapaz de resolverlo, visite uno de nuestros canales para obtener ayuda adicional:

  • Obtenga respuestas de expertos de Azure mediante el soporte técnico de la comunidad de Azure.

  • Póngase en contacto con @AzureSupport, la cuenta oficial de Microsoft Azure para mejorar la experiencia del cliente. Esta cuenta pone en contacto a la comunidad de Azure con los recursos adecuados: respuestas, soporte técnico y expertos.

  • Si necesita más ayuda, puede enviar una solicitud de soporte técnico desde Azure Portal. Seleccione Soporte técnico en la barra de menús o abra la central Ayuda + soporte técnico. Para obtener información más detallada, revise Creación de una solicitud de soporte técnico de Azure. La suscripción a Microsoft Azure incluye acceso al soporte técnico para facturación y administración de suscripciones. El soporte técnico se proporciona a través de uno de los planes de soporte técnico de Azure.