

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á.

# Uso de políticas de repetição de trabalho
<a name="jobruns-using-retry-policies"></a>

Nas versões 6.9.0 e posteriores do Amazon EMR no EKS, você pode definir uma política de repetição para as execuções de trabalhos. As políticas de repetição fazem com que um pod do driver de trabalho seja reiniciado automaticamente se falhar ou for excluído. Isso torna os trabalhos de transmissão do Spark de execução prolongada mais resistentes a falhas.

## Definição de uma política de repetição para um trabalho
<a name="setting-retry-policy"></a>

Para configurar uma política de repetição, você fornece um `RetryPolicyConfiguration` campo usando a [StartJobRun](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html)API. Um exemplo de `retryPolicyConfiguration` é mostrado aqui:

```
aws emr-containers start-job-run \
--virtual-cluster-id cluster_id \
--name sample-job-name \
--execution-role-arn execution-role-arn \
--release-label emr-6.9.0-latest \
--job-driver '{
  "sparkSubmitJobDriver": {
    "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
    "entryPointArguments": [ "2" ],
    "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
  }
}' \
--retry-policy-configuration '{
    "maxAttempts": 5
  }' \
--configuration-overrides '{
  "monitoringConfiguration": {
    "cloudWatchMonitoringConfiguration": {
      "logGroupName": "my_log_group_name",
      "logStreamNamePrefix": "my_log_stream_prefix"
    },
    "s3MonitoringConfiguration": {
       "logUri": "s3://amzn-s3-demo-logging-bucket"
    }
  }
}'
```

**nota**  
`retryPolicyConfiguration`só está disponível a partir da versão AWS CLI 1.27.68. Para atualizar o AWS CLI para a versão mais recente, consulte [Instalando ou atualizando a versão mais recente do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

Configure o campo `maxAttempts` com o número máximo de vezes que você deseja que o pod do driver de trabalho seja reiniciado em casos de falhas ou exclusões. O intervalo de execução entre duas tentativas de repetição do driver de trabalho é um intervalo de repetição exponencial de (10 segundos, 20 segundos, 40 segundos...) que é limitado a seis minutos, conforme descrito na [documentação do Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy).

**nota**  
Cada execução adicional de um driver de trabalho será cobrada como outra execução de trabalho e estará sujeita aos [preços do Amazon EMR no EKS](https://aws.amazon.com/emr/pricing/#Amazon_EMR_on_Amazon_EKS).

### Valores de configuração da política de repetição
<a name="retry-config"></a>
+ **Política de repetição padrão para um trabalho:** `StartJobRun` inclui uma política de repetição definida como uma tentativa máxima, por padrão. Você pode configurar a política de repetição conforme desejado.
**nota**  
Se `maxAttempts` da `retryPolicyConfiguration` for definido como uma, significa que nenhuma nova tentativa será feita para ativar o pod do driver em caso de falha.
+ **Desabilitando a política de repetição de um trabalho:** para desativar uma política de repetição, defina o valor máximo de tentativas como 1. retryPolicyConfiguration 

  ```
  "retryPolicyConfiguration": {
      "maxAttempts": 1
  }
  ```
+ **Definição de maxAttempts para um trabalho dentro do intervalo válido:** a chamada `StartJobRun` falhará se o valor de `maxAttempts` estiver fora do intervalo válido. O intervalo válido de `maxAttempts` é de 1 a 2.147.483.647 (número inteiro de 32 bits), que corresponde ao intervalo compatível com a configuração `backOffLimit` do Kubernetes. Para obter mais informações, consulte [Pod backoff failure policy](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy) na documentação do Kubernetes. Se o valor de `maxAttempts` for inválido, a seguinte mensagem de erro será retornada:

  ```
  {
   "message": "Retry policy configuration's parameter value of maxAttempts is invalid"
  }
  ```

## Recuperação de um status da política de repetição para um trabalho
<a name="retrieve-policy"></a>

Você pode ver o status das tentativas de repetição de um trabalho com [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_ListJobRuns.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_ListJobRuns.html)o. [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DescribeJobRun.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DescribeJobRun.html) APIs Depois de solicitar um trabalho com uma configuração de política de repetição habilitada, as respostas `ListJobRun` e `DescribeJobRun` conterão o status da política de repetição no campo `RetryPolicyExecution`. Além disso, a resposta `DescribeJobRun` conterá a `RetryPolicyConfiguration` que foi inserida na solicitação `StartJobRun` para o trabalho.

**Exemplo de respostas**

------
#### [ ListJobRuns response ]

```
{
  "jobRuns": [
    ...
    ...
    "retryPolicyExecution" : {
      "currentAttemptCount": 2
    }
    ...
    ...
  ]
}
```

------
#### [ DescribeJobRun response ]

```
{
  ...
  ...
  "retryPolicyConfiguration": {
    "maxAttempts": 5
   },
   "retryPolicyExecution" : {
    "currentAttemptCount": 2
  },
  ...
  ...
}
```

------

Esses campos não ficarão visíveis quando a política de repetição estiver desabilitada no trabalho, conforme descrito abaixo em [Valores de configuração da política de repetição](#retry-config). 

## Monitoramento de um trabalho com uma política de repetição
<a name="monitoring-retry"></a>

Quando você ativa uma política de repetição, um CloudWatch evento é gerado para cada driver de trabalho criado. Para se inscrever nesses eventos, configure uma regra de CloudWatch evento usando o seguinte comando:

```
aws events put-rule \
--name cwe-test \
--event-pattern '{"detail-type": ["EMR Job Run New Driver Attempt"]}'
```

O evento retornará informações sobre o `newDriverPodName`, o carimbo de data/hora `newDriverCreatedAt`, a `previousDriverFailureMessage` e o `currentAttemptCount` dos drivers de trabalho. Esses eventos não serão criados se a política de repetição estiver desabilitada.

Para obter mais informações sobre como monitorar seu trabalho com CloudWatch eventos, consulte[Monitore trabalhos com a Amazon CloudWatch Events](monitoring.md#monitoring-cloudwatch-events).

## Descoberta de logs para drivers e executores
<a name="finding-logs"></a>

Os nomes dos pods de drivers seguem o formato `spark-<job id>-driver-<random-suffix>`. O mesmo `random-suffix` é adicionado aos nomes dos pods de executores que o driver gera. Ao usar esse `random-suffix`, você pode localizar logs de um driver e seus executores associados. O `random-suffix` estará presente somente se a [política de repetição estiver habilitada](#retry-config) para o trabalho. Caso contrário, o `random-suffix` estará ausente.

Para obter mais informações sobre como configurar trabalhos com uma configuração de monitoramento para o registro em log, consulte [Execução de uma aplicação do Spark](getting-started.md#getting-started-run-spark-app).