Como funciona o processo de failover do Hadoop Namenode?

O guia de extinção do Hadoop diz –

Cada Namenode executa um processo de controlador de failover leve cuja tarefa é monitorar seu Namenode em busca de falhas (usando um mecanismo de pulsação simples) e triggersr um failover caso um namenode falhe.

Por que um namenode pode executar algo para detectar sua própria falha?

Quem envia batimentos cardíacos para quem?

Onde esse processo é executado?

Como ele detecta a falha do namenode?

A quem notificar para a transição?

Dos documentos do Apache

O ZKFailoverController (ZKFC) é um novo componente que é um cliente ZooKeeper que também monitora e gerencia o estado do NameNode. Cada uma das máquinas que executa um NameNode também executa um ZKFC e esse ZKFC é responsável por:

Monitoramento de integridade – o ZKFC gera seu NameNode local periodicamente com um comando de verificação de integridade. Contanto que o NameNode responda em tempo hábil com um status saudável, o ZKFC considera o nó saudável. Se o nó travou, congelou ou entrou em um estado não íntegro, o monitor de integridade o marcará como não íntegro.

Gerenciamento de session do ZooKeeper – quando o NameNode local está íntegro, o ZKFC mantém uma session aberta no ZooKeeper. Se o NameNode local estiver ativo, ele também conterá um znode especial de ” bloqueio “. Este bloqueio usa o suporte do ZooKeeper para nós ” efêmeros “; Se a session expirar, o nó de bloqueio será automaticamente excluído.

Eleição baseada no ZooKeeper – se o NameNode local estiver íntegro e o ZKFC perceber que nenhum outro nó atualmente mantém o znode de bloqueio, ele tentará adquirir o bloqueio. Se tiver êxito, ele terávencido a eleição ” e será responsável pela execução de um failover para tornar ativo o seu NameNode local.

Dê uma olhada neste PDF do Apache que faz parte do problema do HDFS-2185 JIRA

Slide 16 de

http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum

insira a descrição da imagem aqui :

Processo automático de failover do Namenode no Hadoop:

Em um cluster de HA típico, duas máquinas separadas são configuradas como NameNodes. Em qualquer momento, exatamente um dos NameNodes está em um estado Ativo e o outro está em estado de espera. O Active NameNode é responsável por todas as operações do cliente no cluster, enquanto o Standby está simplesmente agindo como um escravo, mantendo um estado suficiente para fornecer um failover rápido, se necessário.

Para que o Namenode de Standby mantenha seu estado sincronizado com o Active Namenode, ambos os nós se comunicam com um grupo de daemons separados chamados JournalNodes (JNs).

Quando qualquer modificação de namespace é executada pelo nó Active, ele registra de forma durável um registro da modificação na maioria desses JNs. O nó Em espera lê essas edições dos JNs e aplica-se ao seu próprio espaço de nomes.

No caso de um failover, o Standby garantirá que leu todas as edições dos JounalNodes antes de se promover para o estado Ativo. Isso garante que o estado do namespace seja totalmente sincronizado antes de ocorrer um failover.

É vital para um cluster de HA que apenas um dos NameNodes seja Ativo por vez. O ZooKeeper foi usado para evitar o cenário de divisão de cérebro, de modo que o estado do nó de nome não esteja sendo divergido devido ao failover.

Diapositivo 8 de: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen

insira a descrição da imagem aqui :

Em Resumo: Nó de nome é Daemon e o controlador de failover é um daemon . Se o Daemon do nó de nome falhar, o Daemon do controlador de failover detecta e executa ações corretivas. Mesmo se a máquina inteira falhar, o servidor ZooKeeper a detectará e o bloqueio será expirado e o outro nó do nome Standby será eleito como nó do Nome Ativo.