Modo de alta disponibilidade

Ao criar um cluster do Serviço Gerenciado para Apache Spark, coloque-o no modo de alta disponibilidade (HA) do Hadoop especificando o número de instâncias mestre no cluster. O número de mestres só pode ser especificado no momento da criação do cluster.

No momento, o Serviço Gerenciado para Apache Spark 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 do Compute Engine, as instâncias do Serviço Gerenciado para Apache Spark serão reinicializadas. A configuração padrão de um único mestre do Serviço gerenciado para Apache Spark 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 HA, a alta disponibilidade do HDFS e a do YARN são configuradas para permitir operações ininterruptas neles, mesmo com as falhas de nó único/reinicializações.

  • 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 Serviço Gerenciado para Apache Spark, 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 Serviço Gerenciado para Apache Spark, o componente do Zookeeper é instalado automaticamente nos nós mestre 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 Serviço Gerenciado para Apache Spark:

  • cluster-name-m executa:
    • NameNode
    • NameNode secundário

Em um cluster do Serviço Gerenciado para Apache Spark de alta disponibilidade:

  • cluster-name-m-0 e cluster-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 Serviço Gerenciado para Apache Spark, cluster-name-m executa o ResourceManager.

Em um cluster de alta disponibilidade do Serviço Gerenciado para Apache Spark, todos os mestres executam o ResourceManager.

Consulte a documentação sobre alta disponibilidade do YARN para mais detalhes sobre os componentes.

Criar um cluster de alta disponibilidade

Console

  • Abra a página Criar cluster do Serviço Gerenciado para Apache Spark.
  • Na seção Definir a forma do cluster, selecione Alta disponibilidade.
  • Por padrão, as configurações do nó do driver são as mesmas do worker primário. Em Configuração adicional, edite Nó do driver para desmarcar a caixa de seleção Nó do driver padrão é o mesmo que o do worker primário e especifique as configurações do nó do driver.

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.