Solución de Flink HA
Solución de Flink HA
Un clúster de Flink solo tiene un JobManager. Esto tiene el riesgo de un punto único de fallas (SPOF). Hay tres modos de Flink: Flink On Yarn, Flink Standalone y Flink Local. Los modos de Flink On Yarn y Flink Standalone se basan en clústeres y el modo de Flink Local se basa en un solo nodo. Flink On Yarn y Flink Standalone proporcionan un mecanismo de HA. Con este mecanismo, puede recuperar el JobManager de fallos y, por lo tanto, eliminar los riesgos de SPOF. Esta sección describe el mecanismo de HA del Flink On Yarn.
Flink admite el modo de HA y la recuperación de excepciones de trabajo que dependen en gran medida de ZooKeeper. Si desea habilitar las dos funciones, configure ZooKeeper en el archivo flink-conf.yaml de antemano de la siguiente manera:
high-availability: zookeeper high-availability.zookeeper.quorum: ZooKeeper IP address:2181 high-availability.storageDir: hdfs:///flink/recovery
Flink On Yarn
JobManager de Flink y ApplicationMaster de Yarn están en el mismo proceso. ResourceManager de Yarn monitorea ApplicationMaster. Si ApplicationMaster es anormal, Yarn lo reinicia y restaura todos los metadatos de JobManager desde HDFS. Durante la recuperación, las tareas existentes no se pueden ejecutar y no se pueden enviar nuevas tareas. ZooKeeper almacena metadatos de JobManager, como información sobre jobs, para que los utilice el nuevo JobManager. Un error de TaskManager es escuchado y procesado por el mecanismo de DeathWatch de Akka en JobManager. Cuando un TaskManager falla, se solicita de nuevo un contenedor de Yarn y se crea un TaskManager.
Para obtener más información sobre la solución de HA de Flink en YARN, visite:
http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html
Standalone
En el modo de standalone, se pueden iniciar varios JobManagers y ZooKeeper elige uno como leader de JobManager. En este modo, hay un JobManager líder y varios JobManagers en espera. Si el líder JobManager falla, un JobManager de reserva se hace cargo de la dirección. Figura 1 muestra el proceso de una conmutación de JobManager líder/en espera.
Restauración de TaskManager
Un error de TaskManager es escuchado y procesado por el mecanismo de DeathWatch de Akka en JobManager. Si el TaskManager falla, el JobManager crea un TaskManager y migra servicios al TaskManager creado.
Restauración de JobManager
JobManager de Flink y ApplicationMaster de Yarn están en el mismo proceso. ResourceManager de Yarn monitorea ApplicationMaster. Si ApplicationMaster es anormal, Yarn lo reinicia y restaura todos los metadatos de JobManager desde HDFS. Durante la recuperación, las tareas existentes no se pueden ejecutar y no se pueden enviar nuevas tareas.
Restauración de Jobs
Si desea restaurar trabajos, asegúrese de que la política de inicio está configurada en los archivos de configuración de Flink. Las políticas de reinicio admitidas son fixed-delay, failure-rate y none. Jobs sólo se pueden restaurar cuando la política está configurada en fixed-delay o failure-rate. Si la política de reinicio está configurada en none y el punto de control está configurado para trabajos, la política de reinicio se configura automáticamente en fixed-delay y el valor de restart-strategy.fixed-delay.attempts (que especifica el número de veces de reintentos) se configura en Integer.MAX_VALUE.
Para más detalles sobre las tres estrategias, visite el sitio web oficial de Flink en https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/task_failure_recovery.html. Las estrategias de configuración son las siguientes:
restart-strategy: fixed-delay restart-strategy.fixed-delay.attempts: 3 restart-strategy.fixed-delay.delay: 10 s
Jobs se restaurarán en los siguientes escenarios:
- Si un JobManager falla, todos sus jobs se detienen y se recuperarán después de crear y ejecutar otro JobManager.
- Si un TaskManager falla, todas las tareas en el TaskManager se detienen y se iniciarán hasta que haya recursos disponibles.
- Cuando una tarea de un job falla, el job se reinicia.
Para obtener más información acerca de cómo configurar las estrategias de reinicio de job, consulte https://ci.apache.org/projects/flink/flink-docs-release-1.12/ops/jobmanager_high_availability.html.