setup - ¿Cómo funciona el proceso de conmutación por error de Hadoop Namenode?
maquina virtual hadoop (1)
La guía definitiva de Hadoop dice:
Cada Namenode ejecuta un proceso de controlador de conmutación por error ligero cuyo trabajo es monitorear su Namenode para detectar fallas (utilizando un mecanismo de latido simple) y desencadenar una conmutación por error en caso de que falle un nombre.
¿Cómo es que un namenode puede ejecutar algo para detectar su propio error?
¿Quién envía latidos a quién?
¿Dónde se ejecuta este proceso?
¿Cómo se detecta el fallo del nodo de nombre?
¿A quién notifica la transición?
El ZKFailoverController (ZKFC) es un nuevo componente que es un cliente ZooKeeper que también monitorea y administra el estado del NameNode. Cada una de las máquinas que ejecuta un NameNode también ejecuta un ZKFC , y ese ZKFC es responsable de:
Monitoreo de salud : el ZKFC hace ping a su NameNode local periódicamente con un comando de verificación de salud. Mientras el NameNode responda de manera oportuna con un estado saludable, el ZKFC considera que el nodo es saludable. Si el nodo se ha bloqueado, congelado o ingresado en un estado no saludable, el monitor de salud lo marcará como no saludable.
Gestión de sesión de ZooKeeper : cuando el NameNode local está en buen estado, el ZKFC mantiene una sesión abierta en ZooKeeper. Si el NameNode local está activo, también contiene un znode especial de " bloqueo ". Este bloqueo utiliza el soporte de ZooKeeper para nodos " efímeros "; Si la sesión caduca, el nodo de bloqueo se eliminará automáticamente.
Elección basada en ZooKeeper : si el NameNode local está en buen estado y el ZKFC ve que ningún otro nodo tiene actualmente el znode de bloqueo, intentará adquirir el bloqueo. Si tiene éxito, entonces ha " ganado las elecciones " y es responsable de ejecutar una conmutación por error para activar su NameNode local.
Eche un vistazo a este PDF de Apache que forma parte del problema HDFS-2185 JIRA
Diapositiva 16 de
http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum
Proceso automático de conmutación por error de Namenode en Hadoop:
En un clúster HA típico, dos máquinas separadas se configuran como NameNodes. En cualquier momento, exactamente uno de los NameNodes está en estado activo y el otro en estado de espera. Active NameNode es responsable de todas las operaciones del cliente en el clúster, mientras que el Standby simplemente actúa como esclavo, manteniendo el estado suficiente para proporcionar una conmutación por error rápida si es necesario.
Para que el Namenode en espera mantenga su estado sincronizado con el Namenode activo, ambos nodos se comunican con un grupo de demonios separados llamados JournalNodes (JNs).
Cuando el nodo activo realiza cualquier modificación del espacio de nombres, registra de forma duradera un registro de la modificación en la mayoría de estos JN. El nodo Standby lee estas ediciones de los JN y se aplica a su propio espacio de nombres.
En el caso de una conmutación por error, el modo de espera se asegurará de haber leído todas las ediciones de JounalNodes antes de pasar al estado activo. Esto garantiza que el estado del espacio de nombres esté completamente sincronizado antes de que ocurra una conmutación por error.
Es vital para un clúster HA que solo uno de los NameNodes esté activo a la vez. ZooKeeper se ha utilizado para evitar un escenario de cerebro dividido para que el estado del nodo de nombre no se desvíe debido a la conmutación por error.
Diapositiva 8 de: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen
En resumen: Nombre Nodo es Daemon y el controlador de conmutación por error es un Daemon . Si Name Node Daemon falla, el controlador de conmutación por error Daemon detecta y toma medidas correctivas. Incluso si la máquina entera falla, el servidor de ZooKeeper lo detecta y el bloqueo expirará y otro nodo de nombre en espera será elegido como nodo de nombre activo.