Video: Hadoop Rack Awareness 2024
Vaak was er in Hadoop's kindertijd veel discussie over de weergave van één punt van mislukking door de NameNode. Hadoop heeft over het algemeen altijd een robuuste en fouttolerante architectuur gehad, met uitzondering van dit belangrijke gebied. Zonder de NameNode is er geen Hadoop-cluster.
Met Hadoop 2 kunt u HDFS configureren zodat er een Active NameNode en een Standby NameNode zijn. De Standby NameNode moet zich op een speciaal masterknooppunt bevinden dat op dezelfde manier is geconfigureerd als het masterknooppunt dat wordt gebruikt door de Active NameNode.
De Standby NameNode werkt niet terwijl de NameNode alle block-adresverzoeken afhandelt. Het standby-naamknooppunt, belast met de taak om de status van de bloklocaties te behouden en metagegevens in het geheugen te blokkeren, behandelt de HDFS-controlepuntverantwoordelijkheden.
De Active NameNode schrijft journaalposten over bestandswijzigingen naar het merendeel van de JournalNode-services, die op de hoofdknooppunten worden uitgevoerd. ( Opmerking: De hoge beschikbaarheidsoplossing van HDFS vereist ten minste drie hoofdknooppunten en als er meer zijn, kan er alleen een oneven getal zijn.)
Als er een fout optreedt, leest het Stand-byknooppunt eerst alle voltooide journaalboekingen (waarbij een meerderheid van de journaalnodes een invoer heeft, met andere woorden), om te verzekeren dat de nieuwe Active NameNode volledig consistent is met de staat van het cluster.
Zookeeper wordt gebruikt om de Active NameNode te controleren en om de failover-logistiek af te handelen als de Active NameNode niet meer beschikbaar is. Zowel de Active als de Standby NameNodes hebben speciale Zookeeper Failover Controllers (ZFC) die de monitoring- en failover-taken uitvoeren. In het geval van een storing, informeert de ZFC de Zookeeper-instanties op het cluster, die vervolgens een nieuwe Active NameNode kiezen.
Apache Zookeeper biedt coördinatie- en configuratieservices voor gedistribueerde systemen, dus het is geen wonder dat het overal in Hadoop wordt gebruikt.