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
In EMR Amazon nelle EKS versioni 6.9.0 e successive, puoi impostare una politica di nuovi tentativi per le tue esecuzioni di processo. 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
Per configurare una politica di nuovo tentativo, fornisci un RetryPolicyConfiguration
campo utilizzando il. StartJobRunAPI 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 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
Nota
Ogni ulteriore esecuzione di un job driver verrà fatturata come un'altra esecuzione e sarà soggetta ad Amazon EMR per quanto riguarda EKS i prezzi
Valori di configurazione della policy di ripetizione
-
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
diretryPolicyConfiguration
è 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 lavoro: per disabilitare una politica di nuovi tentativi, imposta il valore massimo di tentativi su 1. retryPolicyConfiguration
"retryPolicyConfiguration": { "maxAttempts": 1 }
-
Impostato maxAttempts per un lavoro all'interno dell'intervallo valido: la
StartJobRun
chiamata avrà esito negativo se ilmaxAttempts
valore non rientra nell'intervallo valido. L'intervallomaxAttempts
valido è compreso tra 1 e 2.147.483.647 (numero intero a 32 bit), l'intervallo supportato per l'impostazione della configurazionebackOffLimit
di Kubernetes. Per ulteriori informazioni, consulta Policy degli errori backoff dei podnella 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
È possibile visualizzare lo stato dei nuovi tentativi di lavoro con ListJobRuns
and DescribeJobRun
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
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.
Monitoraggio di un processo con una policy di ripetizione
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, consultaMonitora i lavori con Amazon CloudWatch Events.
Ricerca di log per driver ed executor
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 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 Esecuzione di un'applicazione Spark.