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
Cree este directorio ficticio mediante el comando:
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
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
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>'
Elimine la entrada
hbase: namespace
. Esta entrada puede ser el mismo error que se notifica cuando se examina la tablahbase: namespace
.Reinicie el HMaster activo desde la interfaz de usuario de Ambari para que aparezca en estado de ejecución.
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
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
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.
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.
Acceda a la interfaz de usuario de Ambari UI, 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 quezookeeper.session.timeout
de HBase.Key: maxSessionTimeout Value: 120000
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.