Flink Stream Batch Integrated Computing (8): Comandos comunes de shell de Flink

Tabla de contenido

lista CLI 

Gestión del ciclo de vida del trabajo 

enviar un trabajo

Detección de trabajo

Crear puntos de guardado

eliminar punto de guardado 

terminar trabajo

Detenga el trabajo con gracia para crear el punto de guardado final

cancelar trabajo

Iniciar un trabajo desde un punto de guardado

Tres modos de envío de trabajos

Tres modos para enviar y ver tareas

Enviar y ver tareas en modo Sesión

Envíe y vea trabajos en el modo de clúster por trabajo

Modo de aplicación para enviar y ver trabajos


Flink proporciona una interfaz de línea de comandos (CLI) bin/Flink para ejecutar programas empaquetados como archivos JAR y controlar su ejecución. La CLI es parte de cualquier configuración de Flink y se puede usar tanto en configuraciones locales de un solo nodo como en configuraciones distribuidas. Se conecta al JobManager en ejecución especificado en conf/flink-conf.yaml.

lista CLI 

funcionar usar
hilo-sesión.sh Use yarn-session.sh para iniciar un clúster de Flink residente para aceptar las tareas enviadas por los clientes.
correr Envíe trabajos de Flink Los trabajos se pueden enviar a un clúster de Flink residente o ejecutarse en modo independiente.
ejecutar aplicación Ejecutar trabajos en modo Aplicación .
información Gráfico de ejecución optimizado para trabajos de impresión. Nuevamente, se debe pasar el jar para el trabajo .
lista Enumere todos los trabajos (incluido JobID )
punto de guardado Se utiliza para crear o procesar puntos de guardado para un trabajo determinado. Si el parámetro state.savepoints.dir no se especifica en conf/flink-conf.yaml , puede ser necesario especificar un directorio de puntos de guardado fuera de JobID .
Cancelar cancelar trabajo
detener detener el trabajo (solo trabajos de transmisión)

Gestión del ciclo de vida del trabajo 

Un requisito previo para usar la CLI de Flink es tener un clúster de Flink en ejecución implementado en Kubernetes , YARN o cualquier otra opción disponible. Puede iniciar el clúster de Flink localmente y probar los comandos en su propia máquina.

enviar un trabajo

Enviar un trabajo significa cargar el JAR del trabajo y las dependencias relacionadas al clúster de Flink e iniciar la ejecución del trabajo . Por ejemplo, elegimos un trabajo de ejecución prolongada como ejemplos/streaming/StateMachineExample.jar . Puede elegir cualquier otro archivo jar de la carpeta Examples/ para implementar su propio trabajo .

$ ./bin/flink run \
      --detached \
      ./examples/streaming/StateMachineExample.jar

Enviar un trabajo con --tached hará que el comando regrese después de que se complete la confirmación, con la salida que contiene la ID del trabajo recién enviado .

El trabajo se ha enviado con JobID cca7bc1061d61cf15238e92312c2fc2 0

La información de uso impresa enumera los parámetros relacionados con el trabajo, que se pueden agregar al final del comando de envío del trabajo si lo desea.

También hay un comando de aplicación de ejecución que se puede usar para ejecutar trabajos en Modo de aplicación , que funciona de manera similar a ejecutar .

Los comandos run y run-application admiten la aceptación de parámetros de configuración adicionales a través de -D . Por ejemplo, el grado máximo de paralelismo de un trabajo se puede establecer configurando -Dpipeline.max parallelism=120 . Este parámetro es útil en modo por trabajo o aplicación , porque puede pasar cualquier parámetro de configuración al clúster sin cambiar los archivos de configuración.

Al enviar un trabajo en modo de sesión , solo se admiten los parámetros de configuración.

Detección de trabajo

Puede detectar cualquier trabajo en ejecución con el siguiente comando :

$ ./bin/flink list

Todos los trabajos que se enviaron pero no se ejecutaron se enumeran en Trabajos programados.

Crear puntos de guardado

Se pueden crear puntos de guardado para guardar el estado actual de un trabajo. Solo JobID:

$ ./bin/flink savepoint \
      $JOB_ID \
      /tmp/flink-savepoints

La carpeta savepoint es opcional y debe especificarse si state.savepoints.dir no está configurado.

La ruta al punto de guardado se puede usar más adelante para reiniciar el trabajo de Flink .

eliminar punto de guardado 

Para eliminar un punto de guardado, --necesita agregar el comando --dispose con la ruta del punto de guardado correspondiente :

$ ./bin/flink savepoint \
      --dispose \
      /tmp/flink-savepoints/savepoint-cca7bc-bb1e257f0dab \
      $JOB_ID

Si utiliza una instancia de estado personalizado (como un estado de reducción  personalizado o un estado de RocksDB), debe especificar la ruta al JAR del programa utilizado para activar el punto de guardado . De lo contrario, encontrará una excepción ClassNotFoundException :

$ ./bin/flink savepoint \
      --dispose <savepointPath> \
      --jarfile <jarFile>

Activar el procesamiento de Savepoint a través de la operación Savepoint no solo elimina los datos del almacenamiento, sino que también hace que Flink limpie los metadatos asociados con Savepoint .

terminar trabajo

Detenga el trabajo con gracia para crear el punto de guardado final

Esta es una forma más elegante de finalizar un trabajo de transmisión en ejecución y, por lo tanto, el flujo desde el origen hasta el receptor . Cuando el usuario solicite detener el trabajo, se solicitará a todas las fuentes que envíen la última barrera del punto de control , activando así el punto de control , y después de completar con éxito el punto de control , completarán la finalización del trabajo llamando a cancelar () .

$ ./bin/flink stop \
      --savepointPath /tmp/flink-savepoints \
      $JOB_ID

Suspendiendo el trabajo "cca7bc1061d61cf15238e92312c2fc20" con un punto de guardado.

Punto de guardado completado. Ruta: archivo:/tmp/flink-savepoints/savepoint-cca7bc-bb1e257f0dab

Si state.savepoints.dir no está configurado , la carpeta del punto de guardado debe especificarse con --savepointPath .

Si se especifica el indicador --drain , MAX_WATERMARK se emitirá antes de la última barrera del punto de control . Esto activará todos los temporizadores de tiempo de eventos registrados, borrando cualquier estado en espera de una marca de agua específica, como ventanas. El trabajo se ejecutará hasta que todas las fuentes se apaguen correctamente. Esto permite que el trabajo termine de procesar todos los datos en tránsito para que, cuando se detenga, se puedan procesar los datos posteriores al punto de guardado.

Si desea finalizar el trabajo de forma permanente, use el indicador --drain . No use --drain si desea reanudar el trabajo más tarde , ya que esto puede generar resultados erróneos.

cancelar trabajo

La cancelación de un trabajo se puede hacer con la operación cancelar:

$ ./bin/flink cancel $JOB_ID

Cancelando trabajo cca7bc1061d61cf15238e92312c2fc20.

Trabajo cancelado cca7bc1061d61cf15238e92312c2fc20.

El estado del trabajo correspondiente pasará de "En ejecución" a "Cancelado". Cualquier cálculo se detendrá.

Iniciar un trabajo desde un punto de guardado

Se puede iniciar un trabajo desde un punto de guardado mediante la acción ejecutar (y ejecutar la aplicación ).

$ ./bin/flink run \
     --detached \
     --fromSavepoint /tmp/flink-savepoints/savepoint-cca7bc-bb1e257f0dab \
     ./examples/streaming/StateMachineExample.jar

Parece que este comando es idéntico al comando de ejecución inicial, excepto por el parámetro --fromSavepoint, que se usa para hacer referencia al estado de un trabajo detenido anteriormente, lo que generará una nueva ID de trabajo que se puede usar para trabajos de mantenimiento .

De forma predeterminada, intentamos hacer coincidir todo el estado del punto de guardado con el trabajo que se envía. Si desea permitir la omisión de estados de punto de guardado que no se pueden restaurar, puede configurar el indicador --allowNonRestoredState . Si un operador que formaba parte del programa se eliminó del programa cuando se activó el punto de guardado y aún desea utilizar el punto de guardado, debe permitirlo.

$ ./bin/flink run \
      --fromSavepoint <savepointPath> \
      --allowNonRestoredState ...

Esto es útil si su programa elimina operadores que formaban parte de los puntos de guardado.

Tres modos de envío de trabajos

modelo

describir

características

Sesión

modelo

El modo Seesion creará un clúster de Flink de acuerdo con los parámetros de recursos que establezca y todos los trabajos se enviarán a este clúster para que se ejecuten. El clúster no se liberará automáticamente una vez que el trabajo termine de ejecutarse.

Por ejemplo, si ocurre una excepción en un trabajo y se cierra un Administrador de tareas , todos los demás trabajos que se ejecutan en el Administrador de tareas fallarán. Además, dado que solo hay un administrador de trabajos en el mismo clúster , a medida que aumenta la cantidad de trabajos, la presión sobre el administrador de trabajos aumentará en consecuencia.

Ventajas: al enviar trabajos, la sobrecarga de tiempo causada por la asignación de recursos es menor que en otros modos.

Desventajas: dado que todos los trabajos se ejecutan en el clúster, habrá competencia por los recursos e interacción entre los trabajos.

Según las características anteriores, este modo es adecuado para implementar trabajos que requieren un tiempo de inicio corto y un tiempo de ejecución relativamente corto.

Clúster por trabajo

modelo

Cuando se usa el modo de clúster por trabajo , cada vez que se envía un trabajo de Flink , YARN iniciará un nuevo clúster de Flink para el trabajo y luego ejecutará el trabajo. Cuando el trabajo termine de ejecutarse o se cancele, también se liberará el clúster de Flink al que pertenece el trabajo.

Ventajas: aislamiento de recursos entre trabajos, el comportamiento anormal de un trabajo no afectará a otros trabajos. Debido a que cada trabajo tiene una correspondencia uno a uno con un Administrador de trabajos , no habrá problema de que un Administrador de trabajos se sobrecargue debido a la ejecución de varios trabajos .

Desventaja: cada vez que se ejecuta un trabajo, se debe iniciar un clúster de Flink dedicado y la sobrecarga de iniciar el trabajo es mayor.

En base a las características anteriores, este modo suele ser adecuado para trabajos de larga duración.

Modo de aplicación

Al usar el modo de aplicación, cada vez que se envía una aplicación de Flink (una aplicación contiene uno o más trabajos), YARN iniciará un nuevo clúster de Flink para la aplicación . Cuando la Aplicación finaliza o se cancela, también se liberará el clúster de Flink al que pertenece la Aplicación .

La diferencia entre este modo y el modo Por trabajo es que el método main() en el paquete JAR correspondiente a la Aplicación se ejecutará en el Administrador de trabajos en el clúster .

Si el paquete JAR enviado contiene varios trabajos, estos trabajos se ejecutarán en el clúster al que pertenece la aplicación .

Ventajas: Puede reducir la carga del cliente al enviar trabajos.

Desventajas: cada vez que se ejecuta una aplicación Flink , se debe iniciar un clúster de Flink dedicado y el tiempo dedicado a iniciar la aplicación será mayor.

Tres modos para enviar y ver tareas

Enviar y ver tareas en modo Sesión

  • Ejecute el siguiente comando para iniciar la sesión de YARN.
yarn-session.sh --detached
  • Ejecute el siguiente comando para enviar el trabajo.
flink run /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar

Nota: este artículo usa el ejemplo TopSpeedWindowing proporcionado por Flink, que es un trabajo de transmisión de larga duración.
Una vez que el envío se haya realizado correctamente, se devolverá el ID de aplicación de YARN del trabajo de Flink enviado. Se devuelve información similar a la siguiente. 

  • Ejecute el siguiente comando para ver el estado del trabajo.
flink list -t yarn-session -Dyarn.application.id=<application_XXXX_YY>

También puede ver el estado del trabajo a través de la interfaz de usuario web.

  • Ejecute el siguiente comando para detener el trabajo.
flink cancel -t yarn-session -Dyarn.application.id=<application_XXXX_YY> <jobId>

Envíe y vea trabajos en el modo de clúster por trabajo

  •  Ejecute el siguiente comando para enviar el trabajo.
flink run -t yarn-per-job --detached /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar

Una vez que el envío se haya realizado correctamente, se devolverá el ID de aplicación de YARN del trabajo de Flink enviado. Se devuelve información similar a la siguiente. 

  • Ejecute el siguiente comando para ver el estado del trabajo.
flink list -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY>

Tenga en cuenta que <application_XXXX_YY> en el ejemplo de este artículo es el Id. de aplicación devuelto después de que se ejecuta el trabajo.
También puede ver el estado del trabajo a través de la interfaz de usuario web.Para obtener más información, consulte Visualización del estado del trabajo a través de la interfaz de usuario web.

  • Ejecute el siguiente comando para detener el trabajo.
flink cancel -t yarn-per-job -Dyarn.application.id=<application_XXXX_YY> <jobId>

Modo de aplicación para enviar y ver trabajos

  • Ejecute el siguiente comando para enviar el trabajo.
flink run-application -t yarn-application /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar

Una vez que el envío se haya realizado correctamente, se devolverá el ID de aplicación de YARN del trabajo de Flink enviado. Se devuelve información similar a la siguiente. 

  • Ejecute el siguiente comando para ver el estado del trabajo.
flink list -t yarn-application -Dyarn.application.id=<application_XXXX_YY>

También puede ver el estado del trabajo a través de la interfaz de usuario web.Para obtener más información, consulte Visualización del estado del trabajo a través de la interfaz de usuario web.

  • Ejecute el siguiente comando para detener el trabajo.
flink cancel -t yarn-application -Dyarn.application.id=<application_XXXX_YY> <jobId>

Supongo que te gusta

Origin blog.csdn.net/victory0508/article/details/131437236
Recomendado
Clasificación