Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-04-14 GMT+08:00

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.

Figura 1 Proceso de conmutación

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.