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.
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.