

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Maintenance et résolution des problèmes liés aux tâches Flink sur Amazon EMR sur EKS
<a name="jobruns-flink-troubleshooting"></a>

Les sections suivantes expliquent comment gérer vos tâches Flink de longue durée et fournissent des conseils sur la manière de résoudre certains problèmes courants liés aux tâches Flink.

# Maintenance des applications Flink
<a name="jobruns-flink-maintain"></a>

**Topics**
+ [Modes de mise à niveau](#jobruns-flink-upgrademode)

Les applications Flink sont généralement conçues pour fonctionner pendant de longues périodes (plusieurs semaines, mois, voire plusieurs années). Comme pour tous les services de longue durée, les applications de streaming Flink doivent faire l’objet d’une maintenance. Cela inclut des corrections de bogues, des améliorations et la migration vers un cluster Flink exécutant une version plus récente.

L’évolution des spécifications pour les ressources `FlinkDeployment` et `FlinkSessionJob` implique de mettre à niveau l’application en cours d’exécution. Pour ce faire, l’opérateur arrête la tâche en cours d’exécution (à moins qu’elle soit déjà suspendue) et la redéploie avec les dernières spécifications et, pour les applications avec état, l’état de l’exécution précédente.

Les utilisateurs choisissent comment gérer l’état lorsque les applications avec état s’arrêtent et sont restaurées avec le paramètre `upgradeMode` défini sur `JobSpec`.

## Modes de mise à niveau
<a name="jobruns-flink-upgrademode"></a>

Introduction optionnelle

**Applications sans état**  
Les applications sans état sont mises à niveau à partir de l’état vide.

**Dernier état**  
Les mises à niveau rapides, quel que soit l’état de l’application (même pour les tâches ayant échoué), ne nécessitent pas une tâche saine, car elles utilisent toujours le dernier point de contrôle réussi. Une récupération manuelle peut être nécessaire en cas de perte de métadonnées de haute disponibilité. Pour limiter l’ancienneté du dernier point de contrôle utilisé pour la récupération, configurez le paramètre `kubernetes.operator.job.upgrade.last-state.max.allowed.checkpoint.age`. Si le point de contrôle est plus ancien que la valeur configurée, un point de sauvegarde sera utilisé à la place pour les tâches saines. Cette fonctionnalité n’est pas prise en charge en mode session. 

**Points de sauvegarde**  
Utilisez le point de sauvegarde pour la mise à niveau, offrant ainsi une sécurité maximale et la possibilité de servir de backup/fork point. Le point de sauvegarde sera créé lors de la mise à niveau. Notez que la tâche Flink doit être en cours d’exécution pour que le point de sauvegarde puisse être créé. Si la tâche n'est pas fonctionnelle, le dernier point de contrôle sera utilisé (sauf kubernetes.operator.job.upgrade). last-state-fallback.enabled est défini sur false). Si le dernier point de contrôle n’est pas disponible, la mise à niveau de la tâche échouera.

# Résolution des problèmes
<a name="jobruns-flink-troubleshoot"></a>

Cette section explique comment résoudre les problèmes liés à Amazon EMR on EKS. Pour plus d'informations sur la manière de résoudre les problèmes généraux liés à Amazon EMR, consultez la rubrique [Résolution des problèmes liés à un cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-troubleshoot.html) dans le *Guide de gestion d'Amazon EMR*.
+ [Résolution des problèmes liés à l'utilisation de PersistentVolumeClaims (PVC)](permissions-for-pvc.md)
+ [Résolution des problèmes de mise à l'échelle automatique verticale d'Amazon EMR on EKS](troubleshooting-vas.md)
+ [Résolution des problèmes liés à l'opérateur Spark d'Amazon EMR on EKS](troubleshooting-sparkop.md)

## Résoudre les problèmes liés à Apache Flink sur Amazon EMR sur EKS
<a name="jobruns-flink-troubleshooting-apache-flink"></a>

### Le mappage des ressources est introuvable lors de l'installation des Charts de Helm
<a name="w2aac21c21b7b7b3"></a>

Le message d'erreur suivant peut s'afficher lorsque vous installez les Charts 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].
```

Pour résoudre cette erreur, installez cert-manager afin de pouvoir intégrer le composant webhook. Vous devez installer cert-manager sur chaque cluster Amazon EKS que vous utilisez.

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

### Service AWS erreur d'accès refusé
<a name="jobruns-flink-troubleshooting-access-denied"></a>

Si un message d'erreur *access denied* s'affiche, vérifiez que le rôle IAM pour `operatorExecutionRoleArn` dans le fichier `values.yaml` de Charts de Helm dispose des autorisations appropriées. Vérifiez également que le rôle IAM sous `executionRoleArn` dans votre spécification `FlinkDeployment` dispose des autorisations appropriées.

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

Si votre `FlinkDeployment` est bloqué à l'état arrêté, suivez les étapes suivantes pour forcer la suppression du déploiement :

1. Modifiez l'exécution du déploiement.

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

1. Supprimez ce finalisateur.

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

1. Supprimez le déploiement.

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

### AWSBadRequestException problème s3a lors de l'exécution d'une application Flink dans un opt-in Région AWS
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Si vous exécutez une application Flink dans le cadre d'un [opt-in Région AWS](https://docs.aws.amazon.com/controltower/latest/userguide/opt-in-region-considerations.html), les erreurs suivantes peuvent s'afficher :

```
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==)
```

Pour corriger ces erreurs, utilisez la configuration suivante dans votre fichier de `FlinkDeployment` définition.

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

Nous vous recommandons également d'utiliser le fournisseur SDKv2 d'informations d'identification :

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

Si vous souhaitez utiliser le fournisseur SDKv1 d'informations d'identification, assurez-vous que votre SDK prend en charge votre région d'adhésion. Pour plus d'informations, consultez le [aws-sdk-java GitHub référentiel](https://github.com/aws/aws-sdk-java).

`S3 AWSBadRequestException`Si vous exécutez des instructions SQL Flink dans une région optionnelle, assurez-vous de définir la configuration `fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME` dans vos spécifications de configuration Flink.

### S3A AWSBad RequestException lors de l'exécution d'une tâche de session Flink dans les régions CN
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Pour les versions 6.15.0 à 7.2.0 d'Amazon EMR, les messages d'erreur suivants peuvent s'afficher lorsque vous exécutez une tâche de session Flink dans les régions CN. Il s'agit notamment de la Chine (Pékin) et de la Chine (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":{}}]}
```

Il existe une prise de conscience de ce problème. L'équipe travaille à la correction des opérateurs Flink pour toutes ces versions. Toutefois, avant de terminer le correctif, pour corriger cette erreur, vous devez télécharger le diagramme de barre de l'opérateur Flink, le décompresser (extraire le fichier compressé) et apporter des modifications de configuration dans le graphique de barre.

Les étapes spécifiques sont les suivantes :

1. Accédez, en particulier, aux répertoires dans votre dossier local pour le graphique de barre, et exécutez la ligne de commande suivante pour extraire le graphique de barre et le décompresser (extraire).

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

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

1. Accédez au dossier Helm Chart et trouvez le `templates/flink-operator.yaml` fichier.

1. Recherchez `flink-operator-config` ConfigMap et ajoutez la `fs.s3a.endpoint.region` configuration suivante dans le`flink-conf.yaml`. Par exemple :

   ```
   {{- 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. Installez le tableau de bord local et exécutez votre tâche.