Ao criar um cluster do Dataproc, coloque-o no modo Alta Disponibilidade (HA, na sigla em inglês) do Hadoop, especificando o número de instâncias mestre contidas nele. O número de mestres só pode ser especificado no momento da criação do cluster.
Atualmente, o Dataproc aceita duas configurações de mestre:
- 1 mestre (padrão, não HA)
- 3 mestres (HA do Hadoop)
Comparação entre os modos padrão e de alta disponibilidade do Hadoop
Falha do Compute Engine: no caso raro de uma falha inesperada no Compute Engine, vai ocorrer uma reinicialização de máquina das instâncias do Dataproc. A configuração padrão de um único mestre do Dataproc foi projetada para recuperar e continuar processando novos trabalhos nesses casos, mas necessariamente ocorrerá falha dos trabalhos em andamento e o HDFS ficará inacessível até que o único NameNode se recupere completamente ao reinicializar. No modo de alta disponibilidade, a alta disponibilidade HDFS e Alta disponibilidade YARN são configurados para permitir operações YARN e HDFS ininterruptas, independentemente de qualquer e reinicializações/falhas de nó único.
Encerramento do driver do job: o programa principal/de driver de quaisquer jobs executados ainda representará um ponto único de falha, se a correção do job depender da execução bem-sucedida do programa de driver. Os jobs enviados pela Dataproc Jobs API não são considerados de "alta disponibilidade" e ainda serão terminados em caso de falha do node mestre que executa os programas correspondentes do driver do job. Para que os jobs individuais sejam resistentes a falhas de node único usando um cluster de alta disponibilidade do Cloud Dataproc, eles precisam: 1) ser executados sem um programa de driver síncrono ou 2) precisam executar o próprio programa de driver em um contêiner YARN e serem gravados para processar as reinicializações do programa de driver. Veja em Iniciar o Spark no YARN um exemplo de como os programas de driver reinicializáveis podem ser executados em contêineres YARN para tolerância a falhas.
Falha zonal: como acontece com todos os clusters do Dataproc, os nós em um cluster de alta disponibilidade ficam na mesma zona. Se houver uma falha que afete todos os nós em uma zona, ela não será atenuada.
Nomes de instâncias
O mestre padrão é chamado cluster-name-m
. Os mestres de alta disponibilidade são chamados cluster-name-m-0
, cluster-name-m-1
, cluster-name-m-2
.
Apache ZooKeeper
Em um cluster HA do Dataproc, o componente do Zookeeper é instalado automaticamente nos nós mestres do cluster. Todos os mestres participam de um cluster do ZooKeeper, que ativa o failover automático para outros serviços do Hadoop.
HDFS
Em um cluster padrão do Dataproc:
cluster-name-m
executa:- NameNode
- NameNode secundário
Em um cluster de alta disponibilidade do Dataproc:
cluster-name-m-0
ecluster-name-m-1
executam:- NameNode
- ZKFailoverController
- Todos os mestres executam o JournalNode
- não há NameNode secundário.
Consulte a documentação de alta disponibilidade HDFS para ver mais detalhes dos componentes.
YARN
Em um cluster padrão do Dataproc, cluster-name-m
executa ResourceManager.
Em um cluster de alta disponibilidade do Dataproc, todos os mestres executam o ResourceManager.
Consulte a documentação de alta disponibilidade YARN para ver mais detalhes dos componentes.
Como criar um cluster de alta disponibilidade
Comando gcloud
Para criar um cluster de alta disponibilidade com gcloud dataproc clusters create, execute o seguinte comando:
gcloud dataproc clusters create cluster-name \ --region=region \ --num-masters=3 \ ... other args
API REST
Para criar um cluster de alta disponibilidade, use a API clusters.create, definindo masterConfig.numInstances como 3
.
Console
Para criar um cluster de alta disponibilidade, selecione "Alta disponibilidade" (três mestres, N workers) na seção "Tipo de cluster" do painel "Configurar cluster" na página Criar um cluster do Dataproc.