Le guide Hadoop Defintive dit -
Chaque Namenode s'exécute un processus de contrôleur de basculement léger dont le travail est pour surveiller son Namenode pour les échecs (en utilisant un mécanisme de battement de cœur simple) et déclencher un basculement en cas de défaillance d'un namenode.
Comment se fait-il qu'un namenode puisse exécuter quelque chose pour détecter sa propre défaillance?
Qui envoie des battements de cœur à qui?
Où se déroule ce processus?
Comment détecte-t-il la défaillance des namenodes?
À qui il notifie la transition?
Le ZKFailoverController (ZKFC) est un nouveau composant qui est un client ZooKeeper qui surveille et gère également l'état du NameNode. Chacune des machines qui exécute un NameNode exécute également un [~ # ~] zkfc [~ # ~], et que [~ # ~] zkfc [~ # ~] est responsable de:
Surveillance de la santé - le [~ # ~] zkfc [~ # ~] pings son local NameNode sur une base périodique avec une commande de vérification de l'état. Tant que le NameNode répond en temps opportun avec un état sain, le [~ # ~] zkfc [~ # ~] considère le nœud sain. Si le nœud est tombé en panne, gelé ou autrement entré dans un état malsain, le moniteur de santé le marquera comme malsain.
Gestion de session ZooKeeper - lorsque le NameNode local est sain, le [~ # ~] zkfc [~ # ~] tient une session ouverte dans ZooKeeper. Si le NameNode local est actif, il contient également un znode spécial " lock ". Ce verrou utilise la prise en charge de ZooKeeper pour les nœuds " éphémères "; si la session expire, le nœud de verrouillage sera automatiquement supprimé.
Choix basé sur ZooKeeper - si le local NameNode est sain et que le [~ # ~] zkfc [~ # ~] voit qu'aucun autre nœud ne détient actuellement le verrou znode, il tentera lui-même d'acquérir le verrou. S'il réussit, il a " remporté l'élection ", et est responsable de l'exécution d'un basculement pour faire son local NameNode actif.
Jetez un oeil à ce Apache PDF qui fait partie de HDFS-2185 Problème JIRA
Diapositive 16 de
http://www.slideshare.net/cloudera/hdfs-update-lipcon-federation-big-data-Apache-hadoop-forum
Processus de basculement automatique de Namenode dans Hadoop:
Dans un cluster HA typique, deux machines distinctes sont configurées en tant que nœuds de nom. À tout moment, exactement l'un des NameNodes est dans un état actif et l'autre dans un état de veille. L'Active NameNode est responsable de toutes les opérations client dans le cluster, tandis que le Standby agit simplement comme un esclave, maintenant un état suffisant pour fournir un basculement rapide si nécessaire.
Pour que le Namenode de secours garde son état synchronisé avec le Namenode actif, les deux nœuds communiquent avec un groupe de démons distincts appelés JournalNodes (JNs).
Lorsqu'une modification d'espace de noms est effectuée par le nœud actif, il enregistre durablement un enregistrement de la modification dans la majorité de ces JN. Le nœud de secours lit ces modifications à partir des JN et les applique à son propre espace de noms.
En cas de basculement, le Standby s'assurera qu'il a lu toutes les modifications des JounalNodes avant de passer à l'état Actif. Cela garantit que l'état de l'espace de noms est entièrement synchronisé avant qu'un basculement ne se produise.
Il est vital pour un cluster HA qu'un seul des NameNodes soit actif à la fois. ZooKeeper a été utilisé pour éviter le scénario split brain afin que l'état du nœud de nom ne soit pas divergent en raison du basculement.
Diapositive 8 de: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen
En résumé: Name Node is Daemon & Failover controller is a Daemon. Si Name Node Daemon échoue, le contrôleur de basculement Daemon détecte et prend des mesures correctives. Même si la machine entière tombe en panne, ZooKeeper le serveur le détecte et le verrouillage expirera et d'autres Le nœud de nom de secours sera choisi comme nœud de nom actif.