Compartir a través de


El servidor Apache ZooKeeper no puede formar un cuórum en Azure HDInsight

En este artículo se describen los pasos de solución de problemas y las posibles soluciones para los problemas relacionados con Zookeepers en clústeres de Azure HDInsight.

Síntomas

  • Ambos administradores de recursos van a modo de espera
  • Ambos nodos de nombre están en modo de espera
  • Los trabajos de Spark, Hive y Yarn o las consultas de Hive producen errores debido a errores de conexión de Zookeeper
  • Los demonios de LLAP tampoco se pueden iniciar en los clústeres de Spark o Hive interactivo seguros

Registro de muestra

Es posible que vea un mensaje de error similar a los registros de Yarn (/var/log/hadoop-yarn/yarn/yarn-yarn*.log on the headnodes):

2020-05-05 03:17:18.3916720|Lost contact with Zookeeper. Transitioning to standby in 10000 ms if connection is not reestablished.
Message
2020-05-05 03:17:07.7924490|Received RMFatalEvent of type STATE_STORE_FENCED, caused by org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth
...
2020-05-05 03:17:08.3890350|State store operation failed 
2020-05-05 03:17:08.3890350|Transitioning to standby state
  • Los servicios de alta disponibilidad, como Yarn, Name Node y Livy, pueden dejar de funcionar por muchas razones.
  • Confirme desde los registros que está relacionado con las conexiones de Zookeeper
  • Asegúrese de que el problema se produce repetidamente (no use estas soluciones para los casos no utilizados)
  • Se puede producir un error temporal en los trabajos debido a problemas de conexión de Zookeeper

Causas comunes del error de Zookeeper

  • Uso intensivo de la CPU en los servidores de Zookeeper
    • En la interfaz de usuario de Ambari, si observa que el uso de CPU sostenido es cercano al 100% en los servidores de Zookeeper, las sesiones de Zookeeper abiertas durante ese tiempo pueden expirar y agotar el tiempo de espera
  • Los clientes de Zookeeper informan de tiempos de espera frecuentes
    • En los registros de Resource Manager, Name Node y otros, verá tiempos de espera de conexión de cliente frecuentes
    • Esto podría provocar la pérdida de cuórum, las conmutaciones por error frecuentes y otros problemas

Compruebe el estado de Zookeeper

  • Busque los servidores de Zookeeper desde el archivo/etc/hosts o desde la interfaz de usuario de Ambari
  • Ejecuta el siguiente comando .
    • echo stat | nc <ZOOKEEPER_HOST_IP> 2181 (o 2182)
    • El puerto 2181 es la instancia de Apache Zookeeper
    • El puerto 2182 se usa en HDInsight Zookeeper (para proporcionar una alta disponibilidad para los servicios que no lo son de forma nativa)
    • Si el comando no muestra ninguna salida, significa que los servidores Zookeeper no se están ejecutando
    • Si los servidores están en ejecución, el resultado incluye las estáticas de las conexiones de cliente y otras estadísticas
Zookeeper version: 3.4.6-8--1, built on 12/05/2019 12:55 GMT
Clients:
 /10.2.0.57:50988[1](queued=0,recved=715,sent=715)
 /10.2.0.57:46632[1](queued=0,recved=138340,sent=138347)
 /10.2.0.34:14688[1](queued=0,recved=264653,sent=353420)
 /10.2.0.52:49680[1](queued=0,recved=134812,sent=134814)
 /10.2.0.57:50614[1](queued=0,recved=19812,sent=19812)
 /10.2.0.56:35034[1](queued=0,recved=2586,sent=2586)
 /10.2.0.52:63982[1](queued=0,recved=72215,sent=72217)
 /10.2.0.57:53024[1](queued=0,recved=19805,sent=19805)
 /10.2.0.57:45126[1](queued=0,recved=19621,sent=19621)
 /10.2.0.56:41270[1](queued=0,recved=1348743,sent=1348788)
 /10.2.0.53:59097[1](queued=0,recved=72215,sent=72217)
 /10.2.0.56:41088[1](queued=0,recved=788,sent=802)
 /10.2.0.34:10246[1](queued=0,recved=19575,sent=19575)
 /10.2.0.56:40944[1](queued=0,recved=717,sent=717)
 /10.2.0.57:45466[1](queued=0,recved=19861,sent=19861)
 /10.2.0.57:59634[0](queued=0,recved=1,sent=0)
 /10.2.0.34:14704[1](queued=0,recved=264622,sent=353355)
 /10.2.0.57:42244[1](queued=0,recved=49245,sent=49248)

Latency min/avg/max: 0/3/14865
Received: 238606078
Sent: 239139381
Connections: 18
Outstanding: 0
Zxid: 0x1004f99be
Mode: follower
Node count: 133212

La carga de la CPU alcanza el máximo cada hora

  • Inicie sesión en el servidor de Zookeeper y compruebe el /etc/crontab
  • Si hay trabajos por hora en ejecución en este momento, haga aleatoria la hora de inicio en los diferentes servidores de Zookeeper.

Purga de instantáneas antiguas

  • Los Zookeepers se configuran para purgar automáticamente las instantáneas antiguas
  • De forma predeterminada, se conservan las últimas 30 instantáneas
  • El número de instantáneas que se conservan se controla mediante la clave de configuración autopurge.snapRetainCount. Esta propiedad se puede encontrar en los siguientes archivos:
    • /etc/zookeeper/conf/zoo.cfg para Zookeeper de Hadoop
    • /etc/hdinsight-zookeeper/conf/zoo.cfg para Zookeeper de HDInsight
  • Establezca autopurge.snapRetainCount en un valor de 3 y reinicie los servidores Zookeeper
    • La configuración de Zookeeper de Hadoop se puede actualizar y el servicio se puede reiniciar a través de Ambari
    • Detención y reinicio de Zookeeper de HDInsight manualmente
      • sudo lsof -i :2182 le proporciona el id. de proceso a terminar
      • sudo python /opt/startup_scripts/startup_hdinsight_zookeeper.py
  • No purgue instantáneas manualmente: la eliminación manual de instantáneas podría provocar la pérdida de datos

CancelledKeyException en el registro del servidor de Zookeeper no requiere limpieza de instantáneas

  • Esta excepción se ve en los servidores Zookeeper (archivos /var/log/zookeeper/zookeeper-zookeeper-* o /var/log/hdinsight-zookeeper/zookeeper*)
  • Normalmente, esta excepción significa que el cliente ya no está activo y el servidor no puede enviar un mensaje
  • Esta excepción también indica que el cliente de Zookeeper está finalizando las sesiones prematuramente
  • Busque los otros síntomas descritos en este documento

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.