

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Wartung und Fehlerbehebung für Flink-Jobs auf Amazon EMR auf EKS
<a name="jobruns-flink-troubleshooting"></a>

In den folgenden Abschnitten wird beschrieben, wie Sie Ihre lang laufenden Flink-Jobs verwalten können. Außerdem finden Sie Anleitungen zur Behebung einiger häufig auftretender Probleme mit Flink-Jobs.

# Wartung von Flink-Anwendungen
<a name="jobruns-flink-maintain"></a>

**Topics**
+ [Upgrade-Modi](#jobruns-flink-upgrademode)

Flink-Anwendungen sind in der Regel so konzipiert, dass sie über lange Zeiträume wie Wochen, Monate oder sogar Jahre ausgeführt werden können. Wie alle Services mit langer Laufzeit müssen auch Flink-Streaming-Anwendungen gewartet werden. Dies beinhaltet Fehlerbehebungen, Verbesserungen und die Migration zu einem Flink-Cluster einer späteren Version.

Wenn sich die Spezifikation für `FlinkDeployment`- und `FlinkSessionJob`-Ressourcen ändert, müssen Sie die laufende Anwendung aktualisieren. Zu diesem Zweck stoppt der Operator den laufenden Auftrag (sofern er nicht bereits unterbrochen wurde) und stellt ihn erneut mit der neuesten Spezifikation und, bei statusbehafteten Anwendungen, mit dem Status der vorherigen Ausführung bereit.

Benutzer steuern mit der `upgradeMode`-Einstellung von `JobSpec`, wie der Status verwaltet werden soll, wenn statusbehaftete Anwendungen beendet und wiederhergestellt werden.

## Upgrade-Modi
<a name="jobruns-flink-upgrademode"></a>

Optionale Einführung

**Zustandslos**  
Zustandslose Anwendungen werden aus dem Status „Leer“ aktualisiert.

**Letzter Status**  
Schnelle Upgrades in jedem Anwendungsstatus (auch bei fehlgeschlagenen Aufträgen) erfordern keinen fehlerfreien Auftrag, da immer der letzte erfolgreiche Prüfpunkt verwendet wird. Eine manuelle Wiederherstellung kann erforderlich sein, wenn HA-Metadaten verloren gehen. Um die Zeit zu begrenzen, in der der Auftrag möglicherweise auf den letzten Prüfpunkt zurückgreifen kann, können Sie `kubernetes.operator.job.upgrade.last-state.max.allowed.checkpoint.age` konfigurieren. Wenn der Prüfpunkt älter als der konfigurierte Wert ist, wird stattdessen ein Savepoint für fehlerfreie Aufträge verwendet. Dies wird im Sitzungsmodus nicht unterstützt. 

**Savepoint**  
Verwenden Sie Savepoint für Upgrades, was maximale Sicherheit bietet und die Möglichkeit bietet, als Point zu dienen. backup/fork Der Savepoint wird während des Upgrade-Prozesses erstellt. Beachten Sie, dass der Flink-Auftrag ausgeführt werden muss, damit der Savepoint erstellt werden kann. Wenn sich der Job in einem fehlerhaften Zustand befindet, wird der letzte Checkpoint verwendet (es sei denn, kubernetes.operator.job.upgrade). last-state-fallback.enabled ist auf false gesetzt). Wenn der letzte Prüfpunkt nicht verfügbar ist, schlägt das Upgrade des Auftrags fehl.

# Fehlerbehebung
<a name="jobruns-flink-troubleshoot"></a>

In diesem Abschnitt wird beschrieben, wie Sie Probleme mit Amazon EMR in EKS beheben. Informationen zur Behebung allgemeiner Probleme mit Amazon EMR finden Sie unter [Fehlerbehebung eines Clusters](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-troubleshoot.html) im *Verwaltungshandbuch von Amazon EMR*.
+ [Problembehandlung bei Jobs, die PersistentVolumeClaims (PVC) verwenden](permissions-for-pvc.md)
+ [Fehlerbehebung von Amazon EMR im vertikalen Auto Scaling von EKS](troubleshooting-vas.md)
+ [Fehlerbehebung beim Spark-Operator in Amazon EMR in EKS](troubleshooting-sparkop.md)

## Fehlerbehebung für Apache Flink auf Amazon EMR in EKS
<a name="jobruns-flink-troubleshooting-apache-flink"></a>

### Bei der Installation des Helm-Charts wurde keine Ressourcenzuweisung gefunden
<a name="w2aac21c21b7b7b3"></a>

Bei der Installation des Helm-Charts wird möglicherweise die folgende Fehlermeldung angezeigt.

```
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].
```

Um diesen Fehler zu beheben, installieren Sie cert-manager, um das Hinzufügen der Webhook-Komponente zu ermöglichen. Sie müssen cert-manager die Installation auf jedem Amazon-EKS-Cluster durchführen, den Sie verwenden.

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

### AWS-Service Fehler: Zugriff verweigert
<a name="jobruns-flink-troubleshooting-access-denied"></a>

Wenn Sie einen *access denied* Fehler sehen, vergewissern Sie sich, dass die IAM-Rolle für `operatorExecutionRoleArn` in der `values.yaml`-Helm-Chart-Datei über die richtigen Berechtigungen verfügt. Stellen Sie außerdem sicher, dass die in Ihrer `FlinkDeployment`-Spezifikation unter `executionRoleArn` angegebene IAM-Rolle über die richtigen Berechtigungen verfügt.

### `FlinkDeployment` steckt fest
<a name="jobruns-flink-troubleshooting-stuck"></a>

Wenn Ihr `FlinkDeployment` im angehaltenen Zustand stehen bleibt, führen Sie die folgenden Schritte aus, um das Löschen der Bereitstellung zu erzwingen:

1. Bearbeiten Sie den Bereitstellungslauf.

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

1. Entfernen Sie diesen Finalizer.

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

1. Löschen Sie die Bereitstellung.

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

### AWSBadRequestException S3a-Problem beim Ausführen einer Flink-Anwendung in einem Opt-In AWS-Region
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Wenn Sie eine Flink-Anwendung in einem [Opt-In](https://docs.aws.amazon.com/controltower/latest/userguide/opt-in-region-considerations.html) ausführen AWS-Region, werden möglicherweise die folgenden Fehler angezeigt:

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

Verwenden Sie die folgende Konfiguration in Ihrer `FlinkDeployment` Definitionsdatei, um diese Fehler zu beheben.

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

Wir empfehlen außerdem, den Anbieter für SDKv2 Anmeldeinformationen zu verwenden:

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

Wenn Sie den Anbieter für SDKv1 Anmeldeinformationen verwenden möchten, stellen Sie sicher, dass Ihr SDK Ihre Opt-in-Region unterstützt. Weitere Informationen finden Sie im [aws-sdk-java GitHub Repository](https://github.com/aws/aws-sdk-java).

Wenn Sie `S3 AWSBadRequestException` bei der Ausführung von Flink SQL-Anweisungen in einer Opt-in-Region erhalten, stellen Sie sicher, dass Sie die Konfiguration `fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME` in Ihrer Flink-Konfigurationsspezifikation festlegen.

### S3A, AWSBad RequestException wenn Sie einen Flink-Sitzungsjob in CN-Regionen ausführen
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Bei den Amazon EMR-Versionen 6.15.0 — 7.2.0 können die folgenden Fehlermeldungen auftreten, wenn Sie einen Flink-Sitzungsjob in CN-Regionen ausführen. Dazu gehören China (Peking) und 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":{}}]}
```

Es besteht ein Bewusstsein für dieses Problem. Das Team arbeitet daran, die Flink-Operatoren für all diese Release-Versionen zu patchen. Bevor wir den Patch fertigstellen, müssen Sie zur Behebung dieses Fehlers jedoch das Flink-Operator-Helmdiagramm herunterladen, es entpacken (die komprimierte Datei extrahieren) und Konfigurationsänderungen im Helmdiagramm vornehmen.

Die spezifischen Schritte sind die folgenden:

1. Wechseln Sie zu Ihrem lokalen Ordner für das Helm-Diagramm, ändern Sie insbesondere die Verzeichnisse in, und führen Sie die folgende Befehlszeile aus, um das Helmdiagramm abzurufen und zu entpacken (zu extrahieren).

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

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

1. Gehen Sie in den Helmchart-Ordner und suchen Sie die `templates/flink-operator.yaml` Datei.

1. Suchen Sie die `flink-operator-config` ConfigMap und fügen Sie die folgende `fs.s3a.endpoint.region` Konfiguration in der hinzu`flink-conf.yaml`. Beispiel:

   ```
   {{- 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. Installieren Sie das lokale Helmdiagramm und führen Sie Ihren Job aus.