Administración de las ejecuciones de trabajos con la AWS CLI - Amazon EMR

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.

Administración de las ejecuciones de trabajos con la AWS CLI

En esta página se explica cómo administrar las ejecuciones de tareas con la AWS Command Line Interface (AWS CLI).

Opciones para configurar una ejecución de trabajo

Utilice las siguientes opciones para configurar los parámetros de ejecución del trabajo:

  • --execution-role-arn: debe proporcionar un rol de IAM que se utilice para ejecutar trabajos. Para obtener más información, consulte Uso de roles de ejecución de trabajos con Amazon EMR en EKS.

  • --release-label: puede implementar Amazon EMR en EKS con las versiones 5.32.0, 6.2.0 y posteriores de Amazon EMR. Amazon EMR en EKS no es compatible con las versiones de lanzamiento anteriores de Amazon EMR. Para obtener más información, consulte Versiones de Amazon EMR en EKS.

  • --job-driver: el controlador de trabajo se utiliza para proporcionar información sobre el trabajo principal. Se trata de un campo de tipo unión en el que solo puede pasar uno de los valores del tipo de trabajo que desee ejecutar. Los tipos de trabajo admitidos son:

    • Envío de trabajos de Spark: se usa para ejecutar un comando a través de spark-submit. Puede usar este tipo de trabajo para ejecutar Scala, PySpark, SparkR, SparkSQL y cualquier otro trabajo compatible mediante Spark Submit. Este tipo de trabajo tiene los siguientes parámetros:

      • Entrypoint: es la referencia del HCFS (sistema de archivos compatible con Hadoop) al archivo jar/py principal que quiere ejecutar.

      • EntryPointArguments: se trata de un conjunto de argumentos que desea pasar a su archivo jar o py principal. Debería manejar la lectura de estos parámetros mediante su código de punto de entrada. Cada argumento de la matriz debe estar separado con una coma. EntryPointArguments no pueden contener corchetes ni paréntesis, como (), {} o [].

      • SparkSubmitParameters: son los parámetros de Spark adicionales que desea enviar al trabajo. Use este parámetro para anular las propiedades predeterminadas de Spark, como la memoria del controlador o el número de ejecutores, como —conf o —class. Para obtener más información, consulte Launching Applications with spark-submit.

    • Trabajos de Spark SQL: se utilizan para ejecutar un archivo de consulta SQL a través de Spark SQL. Puede usar este tipo de trabajo para ejecutar trabajos de SparkSQL. Este tipo de trabajo tiene los siguientes parámetros:

  • --configuration-overrides: puede anular las configuraciones predeterminadas de las aplicaciones suministrando un objeto de configuración. Puede utilizar una sintaxis abreviada para proporcionar la configuración o hacer referencia al objeto de configuración en un archivo JSON. Los objetos de configuración se componen de una clasificación, propiedades y configuraciones anidadas opcionales. Las propiedades se componen de la configuración que se desea anular en ese archivo. Es posible especificar varias clasificaciones para varias aplicaciones en un solo objeto JSON. Las clasificaciones de configuración disponibles varían según la versión de Amazon EMR. Para ver una lista de las clasificaciones de configuración que están disponibles para cada versión de Amazon EMR, consulte Versiones de Amazon EMR en EKS.

    Si pasa la misma configuración en una aplicación de anulación y en los parámetros de envío de Spark, prevalecerán los parámetros de envío de Spark. A continuación se muestra la lista completa de prioridades de configuración, en orden de mayor a menor.

    • Configuración proporcionada al crear SparkSession.

    • Configuración proporcionada como parte de sparkSubmitParameters mediante —conf.

    • Configuración proporcionada como parte de las anulaciones de aplicaciones.

    • Configuraciones optimizadas elegidas por Amazon EMR para la versión.

    • Configuraciones de código abierto predeterminadas para la aplicación.

    Para supervisar las ejecuciones de trabajos con Amazon CloudWatch o Amazon S3, debe proporcionar los detalles de configuración de CloudWatch. Para obtener más información, consulte Configure una ejecución de trabajo para utilizar registros de Amazon S3 y Configurar una ejecución de trabajo para usar Registros de Amazon CloudWatch. Si el bucket de S3 o el grupo de registros de CloudWatch no existe, Amazon EMR lo crea antes de cargar los registros en el bucket.

  • Para obtener una lista adicional de las opciones de configuración de Kubernetes, consulte Propiedades de Spark en Kubernetes.

    Las siguientes configuraciones de Spark no son compatibles.

    • spark.kubernetes.authenticate.driver.serviceAccountName

    • spark.kubernetes.authenticate.executor.serviceAccountName

    • spark.kubernetes.namespace

    • spark.kubernetes.driver.pod.name

    • spark.kubernetes.container.image.pullPolicy

    • spark.kubernetes.container.image

      nota

      Puede utilizar spark.kubernetes.container.image para imágenes de Docker personalizadas. Para obtener más información, consulte Personalización de las imágenes de Docker para Amazon EMR en EKS.

Configure una ejecución de trabajo para utilizar registros de Amazon S3

Para poder supervisar el progreso del trabajo y solucionar los errores, debe configurar los trabajos para que envíen la información de registro a Amazon S3, Registros de Amazon CloudWatch o ambos. Este tema le ayuda a empezar a publicar registros de aplicaciones en Amazon S3 en los trabajos que se lanzan con Amazon EMR en EKS.

Política de IAM de los registros de S3

Antes de que sus trabajos puedan enviar datos de registro a Amazon S3, se deben incluir los siguientes permisos en la política de permisos del rol de ejecución del trabajo. Sustituya DOC-EXAMPLE-BUCKET-LOGGING por el nombre de su bucket de registro.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING", "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING/*", ] } ] }
nota

Amazon EMR en EKS también puede crear un bucket de Amazon S3. Si no hay ningún bucket de Amazon S3 disponible, incluya el permiso “s3:CreateBucket” en la política de IAM.

Una vez que haya otorgado a su rol de ejecución los permisos adecuados para enviar registros a Amazon S3, los datos de registro se envían a las siguientes ubicaciones de Amazon S3 cuando s3MonitoringConfiguration se transfiere a la sección monitoringConfiguration de una solicitud start-job-run, como se muestra en Administración de las ejecuciones de trabajos con la AWS CLI.

  • Registros del controlador: /logUri/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr.gz/stdout.gz)

  • Registros del controlador: /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderr.gz/stdout.gz)

  • Registros del ejecutor: /logUri/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr.gz/stdout.gz)

Configurar una ejecución de trabajo para usar Registros de Amazon CloudWatch

Para supervisar el progreso de los trabajos y solucionar errores, debe configurar los trabajos para que envíen la información de registro a Amazon S3, Registros de Amazon CloudWatch o ambos. Este tema le ayudará a comenzar a utilizar Registros de CloudWatch en las trabajos que se lanzan mediante Amazon EMR en EKS. Para obtener más información acerca de CloudWatch Logs, consulte Supervisión de archivos de registro en la Guía del usuario de Amazon CloudWatch.

Política de IAM de Registros de CloudWatch

Para que sus trabajos envíen datos de registro a Registros de CloudWatch, se deben incluir los siguientes permisos en la política de permisos del rol de ejecución de trabajos. Sustituya my_log_group_name y my_log_stream_prefix por los nombres de su grupo de registro y flujo de registro de CloudWatch, respectivamente. Amazon EMR en EKS crea el grupo de registros y el flujo de registros si no existen, siempre y cuando el ARN del rol de ejecución tenga los permisos adecuados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
nota

Amazon EMR en EKS también puede crear un flujo de registro. Si no existe ningún flujo de registro, la política de IAM debe incluir el permiso "logs:CreateLogGroup".

Una vez que haya otorgado a su rol de ejecución los permisos adecuados, la aplicación envía sus datos de registro a Registros de CloudWatch cuando cloudWatchMonitoringConfiguration se transfiere a la sección monitoringConfiguration de una solicitud start-job-run, como se muestra en Administración de las ejecuciones de trabajos con la AWS CLI.

En la API StartJobRun, log_group_name es el nombre del grupo de registros de CloudWatch y log_stream_prefix es el prefijo del nombre del flujo de registro de CloudWatch. Puede consultar y buscar estos registros en la AWS Management Console.

  • Registros del controlador: logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr/stdout)

  • Registros del controlador: logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderrstdout)

  • Registros del ejecutor: logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr/stdout)

Enumerar ejecuciones de trabajos

Puede ejecutar list-job-run para mostrar los estados de las ejecuciones de los trabajos, como se muestra en el siguiente ejemplo.

aws emr-containers list-job-runs --virtual-cluster-id <cluster-id>

Describir una ejecución de trabajo

Puede ejecutar describe-job-run para obtener más detalles sobre el trabajo, como el estado, los detalles del estado y el nombre del trabajo, tal como se muestra en el siguiente ejemplo.

aws emr-containers describe-job-run --virtual-cluster-id cluster-id --id job-run-id

Cancelar una ejecución de trabajo

Puede ejecutar cancel-job-run para cancelar los trabajos en ejecución, tal como se muestra en el siguiente ejemplo.

aws emr-containers cancel-job-run --virtual-cluster-id cluster-id --id job-run-id