Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de políticas de reintento de trabajos
En Amazon, EMR en EKS las versiones 6.9.0 y posteriores, puedes establecer una política de reintentos para las ejecuciones de tus trabajos. Las políticas de reintento hacen que un pod controlador de tareas se reinicie automáticamente si se elimina o se produce un error. Esto hace que los trabajos de streaming Spark de larga duración sean más resilientes a errores.
Establecer una política de reintento para un trabajo
Para configurar una política de reintentos, debe proporcionar un RetryPolicyConfiguration
campo mediante. StartJobRunAPI A continuación, se muestra un ejemplo de 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
solo está disponible a partir de la AWS CLI versión 1.27.68. Para actualizarla AWS CLI a la última versión, consulte Instalación o actualización de la última versión de AWS CLI
Configure el campo maxAttempts
con el número máximo de veces que desee que se reinicie el pod controlador de trabajos en caso de que se elimine o se produzca un error. El intervalo de ejecución entre dos intentos de reintento del controlador de tareas es un intervalo de reintento exponencial de (10 segundos, 20 segundos, 40 segundos...) limitado a 6 minutos, tal como se describe en la documentación de Kubernetes
nota
Cada ejecución adicional del controlador de tareas se facturará como otra ejecución de tareas y estará sujeta a los EKSprecios de EMR Amazon
Vuelva a intentar los valores de configuración de la política
-
Política de reintento predeterminada para un trabajo:
StartJobRun
incluye una política de reintento establecida en un intento máximo de forma predeterminada. Puede configurar la política de reintento como desee.nota
Si
maxAttempts
deretryPolicyConfiguration
se establece en 1, significa que no se llevará a cabo ningún reintento para que aparezca el pod controlador en caso de error. -
Inhabilitar la política de reintentos para un trabajo: para deshabilitar una política de reintentos, establece el valor máximo de intentos en 1. retryPolicyConfiguration
"retryPolicyConfiguration": { "maxAttempts": 1 }
-
maxAttempts Configúrelo para un trabajo dentro del rango válido: la
StartJobRun
llamada fallará si elmaxAttempts
valor está fuera del rango válido. El rango válido demaxAttempts
es de 1 a 2 147 483 647 (entero de 32 bits), el rango admitido por los ajustes de configuración de KubernetesbackOffLimit
. Para obtener más información, consulte Política de retroceso de errores de podsen la documentación de Kubernetes. Si el valor maxAttempts
no es válido, se devuelve el siguiente mensaje de error:{ "message": "Retry policy configuration's parameter value of maxAttempts is invalid" }
Recuperación del estado de una política de reintento de un trabajo
Puede ver el estado de los reintentos de un trabajo con la tecla ListJobRuns
y DescribeJobRun
APIs. Una vez que solicite un trabajo con una configuración de política de reintento habilitada, las respuestas ListJobRun
y DescribeJobRun
contendrán el estado de la política de reintentos en el campo RetryPolicyExecution
. Además, la respuesta DescribeJobRun
contendrá la RetryPolicyConfiguration
que se ingresó en la solicitud de StartJobRun
del trabajo.
Respuestas de ejemplo
Estos campos no estarán visibles cuando la política de reintento esté deshabilitada en el trabajo, tal como se describe en Vuelva a intentar los valores de configuración de la política.
Supervisión de un trabajo con una política de reintento
Al activar una política de reintentos, se genera un CloudWatch evento para cada controlador de trabajo que se cree. Para suscribirse a estos eventos, configure una regla de CloudWatch eventos mediante el siguiente comando:
aws events put-rule \ --name cwe-test \ --event-pattern '{"detail-type": ["EMR Job Run New Driver Attempt"]}'
El evento devolverá información sobre el newDriverPodName
, la marca de tiempo de newDriverCreatedAt
, previousDriverFailureMessage
y los currentAttemptCount
de los controladores del trabajo. Estos eventos no se crearán si la política de reintento está deshabilitada.
Para obtener más información sobre cómo supervisar su trabajo con CloudWatch eventos, consulteSupervisa los trabajos con Amazon CloudWatch Events.
Búsqueda de registros para controladores y ejecutores
Los nombres de los pods controladores siguen el formato spark-<job
id>-driver-<random-suffix>
. El mismo random-suffix
se agrega a los nombres de los pods ejecutores que genera el controlador. Al usar este random-suffix
, puede buscar los registros de un controlador y sus ejecutores asociados. El random-suffix
solo está presente si la política de reintento está habilitada para el trabajo; de lo contrario, el random-suffix
está ausente.
Para obtener más información sobre cómo configurar los trabajos con la configuración de supervisión del registro, consulte Ejecutar una aplicación de Spark.