Análisis del código fuente de zookeeperhbase
Utilice el comando top para comprobar si el servidor regional tiene suficientes recursos de CPU. mapreduce consumirá mucha CPU y reducirá la cantidad de tareas de mapreduce.
Utilice el comando vmstat 1 para comprobar las dos columnas de intercambio de si so y confirme que no hay ningún intercambio. 1 significa imprimir una vez por segundo.
Utilice jstat -gcutil pid 1000 para verificar la columna fgct y confirmar que no hay pausas largas de gc en el servidor de regiones. Si el tiempo de gc excede el tiempo de espera máximo de la conexión del cuidador del zoológico, se suspenderá hbase.
Parámetros relacionados con GC en hbase
Modificación
El RegionServer salió debido a la expiración de la sesión de ZooKeeper, lo que causó dolores de cabeza durante mucho tiempo. Para resumir las posibles razones:
El valor predeterminado de maxSessionTimeout de zookeeper hace que el servidor de regiones hbase agote el tiempo de espera.
En hbase, a menudo ocurre que el servidor de regiones cuelga. Si observa los registros, verá un mensaje de error como este.
Indica que la sesión conectada a zookeeper ha agotado el tiempo de espera, pero el tiempo de espera de zookeeper está establecido en 2 minutos en hbase-site.xml
Zookeeper toma dos parámetros para establecer el tiempo de espera de la sesión, esto aparecerá en los registros al inicio.
Los métodos de cálculo de minSessionTimeout y maxSessionTimeout son los siguientes.
Sesión
De forma predeterminada, tickTime de sesión = segundos, por lo que minSessionTimeout y maxSessionTimeout son 4 segundos y 40 segundos respectivamente.
Por lo tanto, configurar el tiempo de espera en hbase es inútil. Es necesario modificar el maxSessionTimeout del propio zookeeper a 120000 para realmente alargar el tiempo de espera de la sesión del zookeeper.