Zookeeper e HBase Confiabilidade
Zookeeper é um conjunto distribuído de servidores que fornece coletivamente serviços de coordenação e sincronização confiáveis para aplicações em cluster. É certo que o nome # 147 Zookeeper # 148- pode parecer à primeira vista, uma escolha estranha, mas quando você entender o que ele faz para um cluster HBase, você pode ver a lógica por trás dele. Quando você está construindo e depurar aplicações distribuídas # 147 é um zoológico lá fora, # 148- assim que você deve colocar Zookeeper em sua equipe.
clusters de HBase pode ser enorme e coordenar as operações dos MasterServers, RegionServers, e os clientes podem ser uma tarefa difícil, mas é aí que Zookeeper entra em cena. Como em HBase, aglomerados Zookeeper normalmente são executados em servidores de commodities x86 de baixo custo.
Cada servidor x86 indivíduo executa um único processo de software Zookeeper (doravante referida como um servidor Zookeeper), com um servidor Zookeeper eleitos pelo conjunto como o líder e o restante dos servidores são seguidores. ensembles Zookeeper são regidos pelo princípio de um quorum de maioria.
Configurações com um servidor Zookeeper são suportados para fins de teste e desenvolvimento, mas se você quiser um cluster confiável, que pode tolerar falha no servidor, você precisa implantar pelo menos três servidores Zookeeper para atingir um quorum da maioria.
Então, quantos servidores Zookeeper você vai precisar? Cinco é o mínimo recomendado para uso em produção, mas você realmente não quer ir com o mínimo. Quando você decide planejar o seu ensemble Zookeeper, siga esta fórmula simples: 2F + 1 = N, onde F é o número de falhas que você pode aceitar, em seu cluster Zookeeper e N é o número total de servidores Zookeeper você deve implantar.
Cinco é recomendado porque um servidor pode ser desligado para manutenção, mas o cluster Zookeeper ainda pode tolerar uma falha do servidor.
Zookeeper fornece coordenação e sincronização com o que chama de znodes, quais são apresentadas como uma árvore de diretórios e assemelham-se os nomes de caminho de arquivo que você veria em um sistema de arquivos Unix. Znodes Faz armazenamento de dados, mas não muito para falar de - atualmente menos de 1 MB por padrão.
A ideia aqui é que Zookeeper armazena znodes na memória e que estes znodes baseados em memória fornecer acesso do cliente rápido para a coordenação, status e outras funções vitais exigidos por aplicações distribuídas como HBase. Zookeeper replica znodes em todo o conjunto por isso, se os servidores falhar, os dados znode ainda está disponível, desde que o quorum maioria dos servidores ainda está instalado e funcionando.
Outra principais preocupações conceito Zookeeper como znode lê (versus gravações) são manipulados. Qualquer servidor Zookeeper pode manipular lê a partir de um cliente, incluindo o líder, mas apenas as questões líder atômico znode escreve - escreve que seja completamente ter sucesso ou falhar completamente.
Quando uma solicitação znode gravação chega ao nó líder, o líder transmite o pedido de escrita para os nós de seguidores e, em seguida, espera por uma maioria de seguidores a reconhecer znode escrever completa. Após o reconhecimento, o líder emite a própria gravação znode e relata o status de conclusão bem sucedida para o cliente.
Znodes fornecer algumas garantias muito poderosas. Quando um cliente Zookeeper (tal como um HBase RegionServer) grava ou lê um znode, a operação é atômico. Ele quer inteiramente bem-sucedida ou falhar completamente - não há nenhuma parcial lê ou escreve.
Nenhum outro cliente concorrente pode causar a operação de leitura ou gravação para falhar. Além disso, um znode tem uma listas de controle de acesso (ACL) associados para a segurança, e suporta versões, timestamps e notificação aos clientes quando ela muda.
Zookeeper replica znodes em todo o conjunto por isso, se os servidores falhar, os dados znode ainda está disponível, desde que o quorum maioria dos servidores ainda está instalado e funcionando. Isto significa que escreve a qualquer znode de qualquer servidor Zookeeper deve ser propagado em todo o conjunto. O líder Zookeeper gere esta operação.
Esta abordagem gravação znode pode causar seguidores a vencer o líder por curtos períodos. Zookeeper resolve esse problema em potencial, fornecendo um comando de sincronização. Os clientes que não podem tolerar esta falta temporária de sincronização dentro do cluster Zookeeper pode decidir emitir um comando de sincronização antes de ler znodes.