

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.

# Mantenimiento y solución de problemas para trabajos de Flink en Amazon EMR en EKS
<a name="jobruns-flink-troubleshooting"></a>

En las siguientes secciones, se explica cómo realizar un mantenimiento de los trabajos de Flink que llevan mucho tiempo funcionando y se proporcionan instrucciones sobre cómo solucionar algunos problemas comunes con trabajos de Flink.

# Mantenimiento de aplicaciones de Flink
<a name="jobruns-flink-maintain"></a>

**Topics**
+ [Modos de actualización](#jobruns-flink-upgrademode)

Las aplicaciones de Flink suelen estar diseñadas para ejecutarse durante largos periodos de tiempo, como semanas, meses o incluso años. Como ocurre con todos los servicios de larga duración, las aplicaciones de transmisión de Flink deben mantenerse. Esto incluye correcciones de errores, mejoras y migración a un clúster de Flink de una versión posterior.

Cuando cambien las especificaciones para los recursos `FlinkDeployment` y `FlinkSessionJob`, es necesario actualizar la aplicación en ejecución. Para ello, el operador detiene el trabajo en ejecución (a menos que ya esté suspendido) y lo vuelve a implementar con las especificaciones más recientes y, en el caso de las aplicaciones con estado, con el estado de la ejecución anterior.

Los usuarios controlan cómo administrar el estado en el que las aplicaciones con estado se detienen y se restauran con la configuración `upgradeMode` del `JobSpec`.

## Modos de actualización
<a name="jobruns-flink-upgrademode"></a>

Introducción opcional

**Sin estado**  
Las aplicaciones sin estado se actualizan desde un estado vacío.

**Último estado**  
Las actualizaciones rápidas en cualquier estado de la aplicación (incluso para trabajos con errores) no requieren un trabajo en buen estado, ya que siempre se utiliza el último punto de control correcto. Si se pierden los metadatos de alta disponibilidad, puede ser necesaria una recuperación manual. Para limitar el tiempo que el trabajo puede demorar al seleccionar el último punto de control, puede configurar `kubernetes.operator.job.upgrade.last-state.max.allowed.checkpoint.age`. Si el punto de control es anterior al valor configurado, se utilizará un punto de almacenamiento para los trabajos en buen estado. Esto no se admite en el modo de sesión. 

**Punto de almacenamiento**  
Utilice el punto de guardado para la actualización, que proporciona la máxima seguridad y la posibilidad de servir como punto. backup/fork El punto de almacenamiento se creará durante el proceso de actualización. Tenga en cuenta que el trabajo de Flink debe estar en ejecución para permitir la creación del punto de almacenamiento. Si el trabajo está en mal estado, se utilizará el último punto de control (a menos que sea kubernetes.operator.job.upgrade). last-state-fallback.enabled tiene el valor false). Si el último punto de control no está disponible, la actualización del trabajo fallará.

# Resolución de problemas
<a name="jobruns-flink-troubleshoot"></a>

En esta sección, se describe cómo solucionar problemas con Amazon EMR en EKS. Para obtener información sobre cómo solucionar problemas generales con Amazon EMR, consulte [Solucionar problemas de clústeres](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-troubleshoot.html) en la *Guía de administración de Amazon EMR*.
+ [Solución de problemas en trabajos que utilizan PersistentVolumeClaims (PVC)](permissions-for-pvc.md)
+ [Solución de problemas en el escalado automático vertical de Amazon EMR en EKS](troubleshooting-vas.md)
+ [Solución de problemas del operador de Spark de Amazon EMR en EKS](troubleshooting-sparkop.md)

## Solución de problemas de Apache Flink en Amazon EMR en EKS
<a name="jobruns-flink-troubleshooting-apache-flink"></a>

### No se encontró la asignación de recursos al instalar el gráfico de Helm
<a name="w2aac21c21b7b7b3"></a>

Es posible que aparezca el siguiente mensaje de error cuando instale el gráfico de Helm.

```
Error: INSTALLATION FAILED: pulling from host 1234567890.dkr.ecr.us-west-2.amazonaws.com failed with status code [manifests 6.13.0]: 403 Forbidden Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "flink-operator-serving-cert" namespace: "<the namespace to install your operator>" from "": no matches for kind "Certificate" in version "cert-manager.io/v1"

ensure CRDs are installed first, resource mapping not found for name: "flink-operator-selfsigned-issuer" namespace: "<the namespace to install your operator>" " from "": no matches for kind "Issuer" in version "cert-manager.io/v1"

ensure CRDs are installed first].
```

Para resolver este error, instale cert-manager para poder agregar el componente webhook. Debe instalar cert-manager en cada clúster de Amazon EKS que utilice.

```
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0
```

### Servicio de AWS error de acceso denegado
<a name="jobruns-flink-troubleshooting-access-denied"></a>

Si ve un error de tipo *access denied*, confirme que el rol de IAM incluido para `operatorExecutionRoleArn` en el archivo `values.yaml` de gráfico de Helm tiene los permisos correctos. Asegúrese también de que el rol de IAM asignado a `executionRoleArn` en su especificación `FlinkDeployment` tenga los permisos correctos.

### `FlinkDeployment` está atascada
<a name="jobruns-flink-troubleshooting-stuck"></a>

Si se bloquea la `FlinkDeployment`, siga estos pasos para forzar la eliminación de la implementación:

1. Edite la ejecución de la implementación.

   ```
   kubectl edit -n Flink Namespace flinkdeployments/App Name
   ```

1. Elimine este finalizador.

   ```
   finalizers:
     - flinkdeployments.flink.apache.org/finalizer
   ```

1. Elimine la implementación.

   ```
   kubectl delete -n Flink Namespace flinkdeployments/App Name
   ```

### AWSBadRequestException problema s3a al ejecutar una aplicación Flink de forma opcional Región de AWS
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Si ejecutas una aplicación de Flink de forma [opcional Región de AWS](https://docs.aws.amazon.com/controltower/latest/userguide/opt-in-region-considerations.html), es posible que veas los siguientes errores:

```
Caused by: org.apache.hadoop.fs.s3a.AWSBadRequestException: getFileStatus on 
s3://flink.txt: com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request 
(Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: ABCDEFGHIJKL; S3 Extended Request ID:
ABCDEFGHIJKLMNOP=; Proxy: null), S3 Extended Request ID: ABCDEFGHIJKLMNOP=:400 Bad Request: Bad Request 
(Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: ABCDEFGHIJKL; S3 Extended Request ID: ABCDEFGHIJKLMNOP=; Proxy: null)
```

```
Caused by: org.apache.hadoop.fs.s3a.AWSBadRequestException: getS3Region on flink-application: software.amazon.awssdk.services.s3.model.S3Exception: null 
(Service: S3, Status Code: 400, Request ID: ABCDEFGHIJKLMNOP, Extended Request ID: ABCDEFGHIJKLMNOPQRST==):null: null 
(Service: S3, Status Code: 400, Request ID: ABCDEFGHIJKLMNOP, Extended Request ID: AHl42uDNaTUFOus/5IIVNvSakBcMjMCH7dd37ky0vE6jhABCDEFGHIJKLMNOPQRST==)
```

Para corregir estos errores, utilice la siguiente configuración en el archivo de definición `FlinkDeployment`.

```
spec:
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "2"
    fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME
```

También le recomendamos que utilice el proveedor de SDKv2 credenciales:

```
fs.s3a.aws.credentials.provider: software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider
```

Si quieres usar el proveedor de SDKv1 credenciales, asegúrate de que tu SDK sea compatible con la región en la que has optado. Para obtener más información, consulta el [aws-sdk-java GitHub repositorio](https://github.com/aws/aws-sdk-java).

Si obtiene `S3 AWSBadRequestException` cuando ejecuta instrucciones SQL de Flink en una región opcional, asegúrese de establecer la configuración `fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME` en sus especificaciones de configuración de Flink.

### S3A AWSBad RequestException cuando se ejecuta un trabajo de sesión de Flink en regiones CN
<a name="jobruns-flink-troubleshooting-optin-region"></a>

En el caso de las versiones 6.15.0 a 7.2.0 de Amazon EMR, es posible que aparezca los siguientes mensajes de error al ejecutar un trabajo de sesión de Flink en las regiones de CN. Estas incluyen China (Pekín) y China (Ningxia):

```
Error:  {"type":"org.apache.flink.kubernetes.operator.exception.ReconciliationException","message":"org.apache.hadoop.fs.s3a.AWSBadRequestException: 
                    getFileStatus on s3://ABCDPath: software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: 
                    ABCDEFGH:null: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH","additionalMetadata":{},"throwableList":
                    [{"type":"org.apache.hadoop.fs.s3a.AWSBadRequestException","message":"getFileStatus on s3://ABCDPath: software.amazon.awssdk.services.s3.model.S3Exception: 
                    null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH:null: null (Service: S3, Status Code: 400, Request ID: ABCDEFGH, 
                    Extended Request ID: ABCDEFGH","additionalMetadata":{}},{"type":"software.amazon.awssdk.services.s3.model.S3Exception","message":"null (Service: S3, Status Code: 400, 
                    Request ID: ABCDEFGH, Extended Request ID: ABCDEFGH","additionalMetadata":{}}]}
```

Existe conciencia sobre este problema. El equipo está trabajando para parchear los operadores de Flink en todas estas versiones de lanzamiento. Sin embargo, antes de finalizar el parche, para corregir este error, necesita descargar el gráfico de Helm del operador de Flink, descomprimirlo (extraer el archivo comprimido) y realizar cambios de configuración en el gráfico de Helm.

A continuación se indican los pasos a seguir:

1. Cambie a su carpeta local para el gráfico de Helm, específicamente cambie los directorios a, y ejecute la siguiente línea de comandos para extraer el gráfico de Helm y descomprimirlo (extraerlo).

   ```
   helm pull oci://public.ecr.aws/emr-on-eks/flink-kubernetes-operator \
   --version $VERSION \
   --namespace $NAMESPACE
   ```

   ```
   tar -zxvf flink-kubernetes-operator-$VERSION.tgz
   ```

1. Vaya a la carpeta del gráfico de Helm y busque el archivo `templates/flink-operator.yaml`.

1. Busque `flink-operator-config` ConfigMap y añada la siguiente `fs.s3a.endpoint.region` configuración en. `flink-conf.yaml` Por ejemplo:

   ```
   {{- if .Values.defaultConfiguration.create }}
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: flink-operator-config
     namespace: {{ .Release.Namespace }}
     labels:
       {{- include "flink-operator.labels" . | nindent 4 }}
   data:
     flink-conf.yaml: |+
   fs.s3a.endpoint.region: {{ .Values.emrContainers.awsRegion }}
   ```

1. Instale el gráfico de Helm local y ejecute su trabajo.