Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2023-05-19 GMT+08:00

Solução HA do Flink

Solução HA do Flink

Um cluster de Flink tem apenas um JobManager. Isso tem os riscos de pontos únicos de falhas (SPOFs). Existem três modos de Flink: Flink On Yarn, Flink Standalone e Flink Local. Os modos Flink On Yarn e Flink Standalone são baseados em clusters e o modo Flink Local é baseado em um único nó. Flink On Yarn e Flink Standalone fornecem um mecanismo de HA. Com esse mecanismo, você pode recuperar o JobManager de falhas e, assim, eliminar os riscos de SPOF. Esta seção descreve o mecanismo de HA do Flink On Yarn.

O Flink suporta o modo de HA e a recuperação de exceção de job que dependem muito do ZooKeeper. Se você quiser habilitar as duas funções, configure ZooKeeper no arquivo flink-conf.yaml com antecedência da seguinte forma:

high-availability: zookeeper
high-availability.zookeeper.quorum:  ZooKeeper IP address:2181
high-availability.storageDir: hdfs:///flink/recovery

Flink On Yarn

Flink JobManager e Yarn ApplicationMaster estão no mesmo processo. Yarn ApplicationMaster monitora ApplicationMaster. Se o ApplicationMaster estiver anormal, o Yarn o reiniciará e restaurará todos os metadados do JobManager do HDFS. Durante a recuperação, as tarefas existentes não podem ser executadas e as novas tarefas não podem ser enviadas. O ZooKeeper armazena metadados do JobManager, como informações sobre jobs, para serem usados pelo novo JobManager. Uma falha do TaskManager é ouvida e processada pelo mecanismo DeathWatch do Akka no JobManager. Quando um TaskManager falha, um contêiner é solicitado novamente do Yarn e um TaskManager é criado.

Para obter mais informações sobre a solução de HA do Flink no YARN, visite:

http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

Standalone

No modo standalone, vários JobManagers podem ser iniciados e o ZooKeeper elege um como o líder JobManager. Neste modo, há um líder JobManager e vários JobManagers em espera. Se o JobManager líder falhar, um JobManager de espera assume a liderança. Figura 1 mostra o processo de alternância de um JobManager líder/em espera.

Figura 1 Processo de alternância

Restauração de TaskManager

Uma falha do TaskManager é ouvida e processada pelo mecanismo DeathWatch do Akka no JobManager. Se o TaskManager falhar, o JobManager criará um TaskManager e migrará os serviços para o TaskManager criado.

Restauração de JobManager

Flink JobManager e Yarn ApplicationMaster estão no mesmo processo. Yarn ApplicationMaster monitora ApplicationMaster. Se o ApplicationMaster estiver anormal, o Yarn o reiniciará e restaurará todos os metadados do JobManager do HDFS. Durante a recuperação, as tarefas existentes não podem ser executadas e as novas tarefas não podem ser enviadas.

Restauração de jobs

Se você quiser restaurar jobs, certifique-se de que a política de inicialização esteja configurada nos arquivos de configuração do Flink. As políticas de reinicialização suportadas são fixed-delay, failure-rate e none. Jobs só podem ser restauradas quando a política estiver configurada para fixed-delay ou failure-rate. Se a política de reinicialização estiver configurada para none e o ponto de verificação estiver configurado para jobs, a política de reinicialização será configurada automaticamente para fixed-delay e o valor de restart-strategy.fixed-delay.attempts (que especifica o número de vezes de repetição) será configurado para Integer.MAX_VALUE.

Para obter detalhes sobre as três estratégias, visite o site oficial do Flink em https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/task_failure_recovery.html. As estratégias de configuração são as seguintes:

restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 10 s

Os jobs serão restaurados nos seguintes cenários:

  • Se um JobManager falhar, todos os seus jobs serão interrompidos e recuperados após outro JobManager ser criado e executado.
  • Se um TaskManager falhar, todas as tarefas no TaskManager serão interrompidas e iniciadas até que haja recursos disponíveis.
  • Quando um job de um job falha, o job é reiniciado.

    Para obter detalhes sobre como configurar estratégias de reinicialização de jobs, consulte https://ci.apache.org/projects/flink/flink-docs-release-1.12/ops/jobmanager_high_availability.html.