

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Manutenção e solução de problemas para trabalhos do Flink no Amazon EMR no EKS
<a name="jobruns-flink-troubleshooting"></a>

As seções a seguir descrevem como manter seus trabalhos de execução prolongada do Flink e fornecem orientações sobre como solucionar alguns problemas comuns em trabalhos do Flink.

# Manutenção de aplicações do Flink
<a name="jobruns-flink-maintain"></a>

**Topics**
+ [Modos de atualização](#jobruns-flink-upgrademode)

As aplicações do Flink costumam ser projetadas para execuções por longos períodos, como semanas, meses ou até anos. Como acontece com todos os serviços de execução prolongada, as aplicações de streaming do Flink precisam de manutenção. Isso inclui correções de erros, melhorias e migração para um cluster do Flink de uma versão mais recente.

Quando o arquivo spec muda para os recursos `FlinkDeployment` e `FlinkSessionJob`, você precisa atualizar a aplicação em execução. Para isso, o operador interrompe o trabalho em execução (a menos que já esteja suspenso) e o reimplanta com o arquivo spec mais recente e, em aplicações com estado, o estado da execução anterior.

Os usuários controlam como gerenciar o estado quando aplicações com estado param e são restauradas com a configuração `upgradeMode` do `JobSpec`.

## Modos de atualização
<a name="jobruns-flink-upgrademode"></a>

Introdução opcional

**Sem estado**  
Atualizações de aplicações sem estado começando do estado vazio.

**Último estado**  
Atualizações rápidas em qualquer estado da aplicação (mesmo em trabalhos com falha) não exigem um trabalho íntegro, pois sempre usam o ponto de verificação bem-sucedido mais recente. A recuperação manual pode ser necessária se os metadados de HA forem perdidos. Para limitar o tempo em que o trabalho pode efetuar fallback ao escolher o ponto de verificação mais recente, você pode configurar `kubernetes.operator.job.upgrade.last-state.max.allowed.checkpoint.age`. Se o ponto de verificação for mais antigo que o valor configurado, um ponto de salvamento será usado para trabalhos íntegros. Isso não é compatível com o modo Sessão. 

**Ponto de salvamento**  
Use o ponto de salvamento para atualização, fornecendo máxima segurança e possibilidade de servir como ponto. backup/fork O ponto de salvamento será criado durante o processo de atualização. Observe que o trabalho do Flink precisa estar em execução para permitir que o ponto de salvamento seja criado. Se o trabalho não estiver íntegro, o último ponto de verificação será usado (a menos que kubernetes.operator.job.upgrade). last-state-fallback.enabled está definido como false). Se o ponto de verificação mais recente não estiver disponível, a atualização do trabalho falhará.

# Solução de problemas
<a name="jobruns-flink-troubleshoot"></a>

Esta seção descreve como solucionar problemas com o Amazon EMR no EKS. Para obter informações sobre como solucionar problemas gerais com o Amazon EMR, consulte [Troubleshoot a cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-troubleshoot.html) no *Guia de gerenciamento do Amazon EMR*.
+ [Solução de problemas de trabalhos que usam PersistentVolumeClaims (PVC)](permissions-for-pvc.md)
+ [Solução de problemas de escalabilidade automática vertical do Amazon EMR no EKS](troubleshooting-vas.md)
+ [Solução de problemas do operador do Spark do Amazon EMR no EKS](troubleshooting-sparkop.md)

## Solução de problemas do Apache Flink para Amazon EMR no EKS
<a name="jobruns-flink-troubleshooting-apache-flink"></a>

### Mapeamento de recursos não encontrado ao instalar o chart do Helm
<a name="w2aac21c21b7b7b3"></a>

Você pode encontrar a mensagem de erro apresentada a seguir ao instalar o chart do 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 esse erro, instale o cert-manager para habilitar a adição do componente webhook. Você deve instalar o cert-manager em cada cluster do Amazon EKS que usa.

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

### AWS service (Serviço da AWS) erro de acesso negado
<a name="jobruns-flink-troubleshooting-access-denied"></a>

Se você ver um erro*access denied* , confirme se o perfil do IAM para `operatorExecutionRoleArn` no arquivo `values.yaml` do chart do Helm tem as permissões corretas. Além disso, certifique-se de que o perfil do IAM em `executionRoleArn` na sua especificação de `FlinkDeployment` tenha as permissões corretas.

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

Se seu `FlinkDeployment` ficar em um estado preso, use as etapas a seguir para forçar a exclusão da implantação:

1. Edite a execução da implantação.

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

1. Remova este finalizador.

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

1. Exclua a implantação.

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

### AWSBadRequestException problema s3a ao executar um aplicativo Flink em um opt-in Região da AWS
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Se você executar um aplicativo Flink em um [opt-in Região da AWS](https://docs.aws.amazon.com/controltower/latest/userguide/opt-in-region-considerations.html), poderá ver os seguintes erros:

```
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 corrigir esses erros, use a configuração a seguir no arquivo `FlinkDeployment` de definição.

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

Também recomendamos que você use o provedor de SDKv2 credenciais:

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

Se você quiser usar o provedor de SDKv1 credenciais, certifique-se de que seu SDK seja compatível com sua região de inscrição. Para obter mais informações, consulte o [aws-sdk-java GitHub repositório.](https://github.com/aws/aws-sdk-java)

Se você obtiver o erro `S3 AWSBadRequestException` ao executar instruções SQL do Flink em uma região de ingresso, certifique-se de definir a configuração `fs.s3a.endpoint.region: OPT_IN_AWS_REGION_NAME` na especificação de configuração do Flink.

### S3A AWSBad RequestException ao executar um trabalho de sessão do Flink em regiões CN
<a name="jobruns-flink-troubleshooting-optin-region"></a>

Nas versões 6.15.0 à 7.2.0 do Amazon EMR, você pode encontrar as mensagens de erro a seguir ao executar um trabalho de sessão do Flink nas regiões da China. Estes incluem China (Pequim) e 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":{}}]}
```

Esse problema é conhecido. A equipe está trabalhando na correção dos operadores do Flink em todas essas versões de lançamento. No entanto, antes de concluirmos o patch, para corrigir esse erro, você precisa baixar o chart do Helm do operador do Flink, descompactá-lo (extrair o arquivo compactado) e fazer alterações na configuração do chart do Helm.

As etapas especificas são as seguintes:

1. Altere, especificamente, os diretórios da sua pasta local do chart do Helm e execute a linha de comando a seguir para extrair o chart do Helm e descompactá-lo (extraí-lo).

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

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

1. Vá até a pasta do chart do Helm e encontre o arquivo `templates/flink-operator.yaml`.

1. Localize `flink-operator-config` ConfigMap e adicione a seguinte `fs.s3a.endpoint.region` configuração no`flink-conf.yaml`. Por exemplo:

   ```
   {{- 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 o chart do Helm local e execute o trabalho.