

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Uso delle policy di ripetizione dei processi
<a name="jobruns-using-retry-policies"></a>

Nella versione 6.9.0 e successive di Amazon EMR su EKS, puoi impostare una policy di ripetizione per le esecuzioni dei processi. Con le policy di ripetizione, il pod driver di un processo viene riavviato in automatico in caso di errori o se viene eliminato. Ciò incrementa la resilienza agli errori dei processi di streaming Spark di lunga durata.

## Impostazione della policy di ripetizione per un processo
<a name="setting-retry-policy"></a>

Per configurare una politica di riprova, fornisci un `RetryPolicyConfiguration` campo utilizzando l'[StartJobRun](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html)API. Di seguito è mostrato un esempio di `retryPolicyConfiguration`:

```
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`è disponibile solo dalla versione AWS CLI 1.27.68 in poi. Per aggiornare il file AWS CLI alla versione più recente, vedere [Installazione o aggiornamento della versione più recente](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) di AWS CLI

Configura il campo `maxAttempts` con il numero massimo di volte per cui desideri che il pod driver del processo venga riavviato in caso di errore o di eliminazione. L'intervallo di esecuzione tra due tentativi di ripetizione del driver del processo è un intervallo di ripetizione esponenziale di (10 secondi, 20 secondi, 40 secondi...) limitato a 6 minuti, come descritto nella [Documentazione di Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy).

**Nota**  
Ogni esecuzione aggiuntiva del driver del processo verrà fatturata come un'ulteriore esecuzione del processo e sarà soggetta ai [Prezzi di Amazon EMR su EKS](https://aws.amazon.com/emr/pricing/#Amazon_EMR_on_Amazon_EKS).

### Valori di configurazione della policy di ripetizione
<a name="retry-config"></a>
+ **Policy di ripetizione predefinita per un processo:** `StartJobRun` include una policy di ripetizione impostata su 1 tentativo massimo per impostazione predefinita. Puoi configurare la policy di ripetizione in base alle tue necessità.
**Nota**  
Se `maxAttempts` di `retryPolicyConfiguration` è impostato su 1, in caso di errori non verrà effettuato alcun nuovo tentativo di apertura del pod driver.
+ **Disabilitazione della politica di nuovi tentativi per un processo:** per disabilitare una politica di nuovi tentativi, imposta il valore massimo di tentativi su 1. retryPolicyConfiguration 

  ```
  "retryPolicyConfiguration": {
      "maxAttempts": 1
  }
  ```
+ **Imposta maxAttempts per un processo nell'intervallo valido:** la chiamata di `StartJobRun` avrà esito negativo se il valore `maxAttempts` non rientra nell'intervallo valido. L'intervallo `maxAttempts` valido è compreso tra 1 e 2.147.483.647 (numero intero a 32 bit), l'intervallo supportato per l'impostazione della configurazione `backOffLimit` di Kubernetes. Per ulteriori informazioni, consulta [Policy degli errori backoff dei pod](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy) nella Documentazione di Kubernetes. Se il valore `maxAttempts` non è valido, viene restituito il seguente messaggio di errore:

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

## Recupero di uno stato della policy di ripetizione per un processo
<a name="retrieve-policy"></a>

È possibile visualizzare lo stato dei nuovi tentativi di esecuzione di un lavoro con and. [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) APIs Non appena richiedi un processo con una configurazione di policy di ripetizione abilitata, le risposte di `ListJobRun` e `DescribeJobRun` conterranno lo stato della policy di ripetizione nel campo `RetryPolicyExecution`. Inoltre, la risposta di `DescribeJobRun` conterrà il valore `RetryPolicyConfiguration` inserito nella richiesta `StartJobRun` del processo.

**Esempi di risposte**

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

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

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

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

------

Questi campi non saranno visibili quando la policy di ripetizione è disabilitata nel processo, come descritto di seguito in [Valori di configurazione della policy di ripetizione](#retry-config). 

## Monitoraggio di un processo con una policy di ripetizione
<a name="monitoring-retry"></a>

Quando si abilita una politica di nuovi tentativi, viene generato un CloudWatch evento per ogni job driver creato. Per sottoscrivere questi eventi, impostate una regola di CloudWatch evento utilizzando il seguente comando:

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

L'evento restituirà informazioni su `newDriverPodName`, timestamp `newDriverCreatedAt`, `previousDriverFailureMessage` e `currentAttemptCount` sui driver dei processi. Questi eventi non verranno creati se la policy di ripetizione è disabilitata.

Per ulteriori informazioni su come monitorare il lavoro con CloudWatch gli eventi, consulta[Monitora i lavori con Amazon CloudWatch Events](monitoring.md#monitoring-cloudwatch-events).

## Ricerca di log per driver ed executor
<a name="finding-logs"></a>

I nomi dei pod driver seguono il formato `spark-<job id>-driver-<random-suffix>`. Lo stesso valore `random-suffix` viene aggiunto ai nomi dei pod dell'executor generati dal driver. Utilizzando questo valore `random-suffix`, puoi trovare i log di un driver e degli executor associati. `random-suffix` è presente solo se la [policy di ripetizione è abilitata](#retry-config) per il processo; in caso contrario, `random-suffix` è assente.

Per ulteriori informazioni sulla modalità di configurazione di processi con la configurazione di monitoraggio per la creazione di log, consulta [Eseguire un'applicazione Spark](getting-started.md#getting-started-run-spark-app).