

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejecutar una aplicación de Flink
<a name="jobruns-flink-kubernetes-operator-run-application"></a>

A partir de Amazon EMR 6.13.0, puede ejecutar una aplicación Fink con el operador Flink Kubernetes en el modo de aplicación de Amazon EMR en EKS. Además, a partir de Amazon EMR 6.15.0, puede ejecutar una aplicación de Flink en el modo de sesiones. En esta página, se explican los dos métodos con los que puede ejecutar una aplicación de Flink con Amazon EMR en EKS.

**Topics**

**nota**  
Debe tener un bucket de Amazon S3 creado para almacenar los metadatos de alta disponibilidad cuando envíe su trabajo de Flink. Si no desea usar esta característica, puede desactivarla. Está habilitada de forma predeterminada.

**Requisito previo**: antes de poder ejecutar una aplicación de Flink con el operador de Flink Kubernetes, complete los pasos indicados en [Configuración del operador de Kubernetes de Flink para Amazon EMR en EKS](jobruns-flink-kubernetes-operator-setup.md) y [Instalación del operador de Kubernetes](jobruns-flink-kubernetes-operator-getting-started.md#jobruns-flink-kubernetes-operator-getting-started-install-operator).

------
#### [ Application mode ]

A partir de Amazon EMR 6.13.0, puede ejecutar una aplicación Fink con el operador Flink Kubernetes en el modo de aplicación de Amazon EMR en EKS.

1. Cree un archivo `basic-example-app-cluster.yaml` de definición de `FlinkDeployment` como en el siguiente ejemplo. Si ha activado y utilizado una de las [opciones opcionales Regiones de AWS](https://docs.aws.amazon.com/controltower/latest/userguide/opt-in-region-considerations.html), asegúrese de eliminar los comentarios y configurar la configuración. `fs.s3a.endpoint.region`

   ```
   apiVersion: flink.apache.org/v1beta1
   kind: FlinkDeployment
   metadata:
     name: basic-example-app-cluster
   spec:
     flinkConfiguration:
       taskmanager.numberOfTaskSlots: "2"
       #fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME
       state.checkpoints.dir: CHECKPOINT_S3_STORAGE_PATH
       state.savepoints.dir: SAVEPOINT_S3_STORAGE_PATH 
     flinkVersion: v1_17
     executionRoleArn: JOB_EXECUTION_ROLE_ARN
     emrReleaseLabel: "emr-6.13.0-flink-latest" # 6.13 or higher
     jobManager:
       storageDir: HIGH_AVAILABILITY_STORAGE_PATH
       resource:
         memory: "2048m"
         cpu: 1
     taskManager:
       resource:
         memory: "2048m"
         cpu: 1
     job:
       # if you have your job jar in S3 bucket you can use that path as well
       jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar
       parallelism: 2
       upgradeMode: savepoint
       savepointTriggerNonce: 0
     monitoringConfiguration:    
       cloudWatchMonitoringConfiguration:
          logGroupName: LOG_GROUP_NAME
   ```

1. Envíe la implementación de Flink con el siguiente comando. Esto también creará un objeto de `FlinkDeployment` llamado `basic-example-app-cluster`.

   ```
   kubectl create -f basic-example-app-cluster.yaml -n <NAMESPACE>
   ```

1. Acceda a la interfaz de usuario de Flink.

   ```
   kubectl port-forward deployments/basic-example-app-cluster 8081 -n NAMESPACE
   ```

1. Abra `localhost:8081` para ver sus trabajos de Flink de forma local.

1. Limpie el trabajo. Recuerde limpiar los artefactos de S3 que se crearon para este trabajo, como los puntos de control, la alta disponibilidad y los metadatos de puntos guardados y los registros. CloudWatch

[Para obtener más información sobre cómo enviar solicitudes a Flink a través del operador de Kubernetes de Flink, consulte los ejemplos de operadores de Flink Kubernetes en la carpeta de.](https://github.com/apache/flink-kubernetes-operator/tree/main/examples) `apache/flink-kubernetes-operator` GitHub

------
#### [ Session mode ]

A partir de Amazon EMR 6.15.0, puede ejecutar una aplicación Fink con el operador Flink Kubernetes en el modo de sesiones de Amazon EMR en EKS.

1. Cree un archivo de definición `FlinkDeployment` denominado `basic-example-app-cluster.yaml` como en el siguiente ejemplo. Si activaste y usaste una de las [opciones opcionales Regiones de AWS](https://docs.aws.amazon.com/controltower/latest/userguide/opt-in-region-considerations.html), asegúrate de quitar los comentarios y configurar la configuración. `fs.s3a.endpoint.region`

   ```
   apiVersion: flink.apache.org/v1beta1
   kind: FlinkDeployment
   metadata:
     name: basic-example-session-cluster
   spec:
     flinkConfiguration:
       taskmanager.numberOfTaskSlots: "2"
       #fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME
       state.checkpoints.dir: CHECKPOINT_S3_STORAGE_PATH
       state.savepoints.dir: SAVEPOINT_S3_STORAGE_PATH
     flinkVersion: v1_17
     executionRoleArn: JOB_EXECUTION_ROLE_ARN
     emrReleaseLabel: "emr-6.15.0-flink-latest"
     jobManager:
       storageDir: HIGH_AVAILABILITY_S3_STORAGE_PATH
       resource:
         memory: "2048m"
         cpu: 1
     taskManager:
       resource:
         memory: "2048m"
         cpu: 1
     monitoringConfiguration:    
       s3MonitoringConfiguration:
          logUri: 
       cloudWatchMonitoringConfiguration:
          logGroupName: LOG_GROUP_NAME
   ```

1. Envíe la implementación de Flink con el siguiente comando. Esto también creará un objeto de `FlinkDeployment` llamado `basic-example-session-cluster`.

   ```
   kubectl create -f basic-example-app-cluster.yaml -n NAMESPACE
   ```

1. Utilice el siguiente comando para confirmar que el clúster de sesión `LIFECYCLE` sea `STABLE`:

   ```
   kubectl get flinkdeployments.flink.apache.org basic-example-session-cluster -n NAMESPACE
   ```

   La salida debería tener un aspecto similar al siguiente ejemplo:

   ```
   NAME                              JOB STATUS   LIFECYCLE STATE
   basic-example-session-cluster                          STABLE
   ```

1. Cree un archivo de recursos de definición personalizado para un `FlinkSessionJob` con el nombre `basic-session-job.yaml` y el siguiente contenido:

   ```
   apiVersion: flink.apache.org/v1beta1
   kind: FlinkSessionJob
   metadata:
     name: basic-session-job
   spec:
     deploymentName: basic-session-deployment
     job:
       # If you have your job jar in an S3 bucket you can use that path.
       # To use jar in S3 bucket, set 
       # OPERATOR_EXECUTION_ROLE_ARN (--set emrContainers.operatorExecutionRoleArn=$OPERATOR_EXECUTION_ROLE_ARN)
       # when you install Spark operator
       jarURI: https://repo1.maven.org/maven2/org/apache/flink/flink-examples-streaming_2.12/1.16.1/flink-examples-streaming_2.12-1.16.1-TopSpeedWindowing.jar
       parallelism: 2
       upgradeMode: stateless
   ```

1. Envíe la sesión de trabajo de Flink con el siguiente comando. Esto también creará el objeto de `FlinkSessionJob` con el nombre`basic-session-job`.

   ```
   kubectl apply -f basic-session-job.yaml -n $NAMESPACE
   ```

1. Utilice el siguiente comando para confirmar que el clúster de sesión `LIFECYCLE` sea `STABLE` y que `JOB STATUS` sea `RUNNING`:

   ```
   kubectl get flinkdeployments.flink.apache.org basic-example-session-cluster -n NAMESPACE
   ```

   La salida debería tener un aspecto similar al siguiente ejemplo:

   ```
   NAME                              JOB STATUS   LIFECYCLE STATE
   basic-example-session-cluster     RUNNING      STABLE
   ```

1. Acceda a la interfaz de usuario de Flink.

   ```
   kubectl port-forward deployments/basic-example-session-cluster 8081 -n NAMESPACE
   ```

1. Abra `localhost:8081` para ver sus trabajos de Flink de forma local.

1. Limpie el trabajo. Recuerde limpiar los artefactos de S3 que se crearon para este trabajo, como los puntos de control, la alta disponibilidad y los metadatos de puntos guardados y los registros. CloudWatch

------