Uso de la clasificación de remitentes de trabajos - 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.

Uso de la clasificación de remitentes de trabajos

Descripción general

El módulo Amazon EMR on EKS StartJobRun request crea un módulo de envío de trabajos (también conocido como módulo job-runner) para generar el controlador Spark. Puedes usar la emr-job-submitter clasificación para configurar los selectores de nodos para el módulo de envío de trabajos, así como configurar la imagen y la memoria para el contenedor de CPU registro del módulo de envío de trabajos.

Los siguientes ajustes están disponibles en la clasificación: emr-job-submitter

jobsubmitter.node.selector.[labelKey]

Agrega al selector de nodos del pod de remitente de trabajos, con la clave labelKey y el valor como el valor de configuración para la configuración. Por ejemplo, puede establecer jobsubmitter.node.selector.identifier en myIdentifier y el pod de remitentes de trabajos tendrá un valor de identificador clave de myIdentifier. Esto se puede usar para especificar en qué nodos se puede colocar el módulo de presentación de trabajos. Para agregar varias claves de selección de nodos, defina varias configuraciones con este prefijo.

jobsubmitter.logging.image

Establece una imagen personalizada que se utilizará en el contenedor de registro del módulo de envío de trabajos.

jobsubmitter.logging.request.cores

Establece un valor personalizado para el númeroCPUs, en CPU unidades, del contenedor de registro del módulo de envío de trabajos. De forma predeterminada, está establecido en 100 m.

jobsubmitter.logging.request.memory

Establece un valor personalizado para la cantidad de memoria, en bytes, del contenedor de registro del módulo de envío de trabajos. De forma predeterminada, está establecido en 200 MB. Un mebibyte es una unidad de medida similar a un megabyte.

Recomendamos colocar los módulos de presentación de trabajos en las instancias bajo demanda. Colocar los módulos de envío de trabajos en las instancias puntuales podría provocar un error en el trabajo si la instancia en la que se ejecuta el módulo de envío de trabajos está sujeta a una interrupción de la instancia puntual. También puede colocar el pod de remitente de trabajos en una única zona de disponibilidad o utilizar cualquier etiqueta de Kubernetes que se aplique a los nodos.

Ejemplos de clasificación de remitentes de trabajos

Solicitud de StartJobRun con ubicación de nodos bajo demanda para el pod de remitente de trabajos

cat >spark-python-in-s3-nodeselector-job-submitter.json << EOF { "name": "spark-python-in-s3-nodeselector", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py", "sparkSubmitParameters": "--conf spark.driver.cores=5 --conf spark.executor.memory=20G --conf spark.driver.memory=15G --conf spark.executor.cores=6" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.dynamicAllocation.enabled":"false" } }, { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.selector.eks.amazonaws.com/capacityType": "ON_DEMAND" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } } EOF aws emr-containers start-job-run --cli-input-json file:///spark-python-in-s3-nodeselector-job-submitter.json

Solicitud de StartJobRun con colocación de nodos Single-AZ para el pod de remitente de trabajos

cat >spark-python-in-s3-nodeselector-job-submitter-az.json << EOF { "name": "spark-python-in-s3-nodeselector", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py", "sparkSubmitParameters": "--conf spark.driver.cores=5 --conf spark.executor.memory=20G --conf spark.driver.memory=15G --conf spark.executor.cores=6" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.dynamicAllocation.enabled":"false" } }, { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.selector.topology.kubernetes.io/zone": "Availability Zone" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } } EOF aws emr-containers start-job-run --cli-input-json file:///spark-python-in-s3-nodeselector-job-submitter-az.json

StartJobRunsolicitud con ubicación de tipo EC2 instancia Single-AZ y de tipo Amazon para el pod de remitente del trabajo

{ "name": "spark-python-in-s3-nodeselector", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py", "sparkSubmitParameters": "--conf spark.driver.cores=5 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=20G --conf spark.driver.memory=15G --conf spark.executor.cores=6 --conf spark.sql.shuffle.partitions=1000" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.dynamicAllocation.enabled":"false", } }, { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.selector.topology.kubernetes.io/zone": "Availability Zone", "jobsubmitter.node.selector.node.kubernetes.io/instance-type":"m5.4xlarge" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } }

StartJobRunsolicitud con contenedor de registro personalizadoCPU, imagen y memoria

{ "name": "spark-python", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.logging.image": "YOUR_ECR_IMAGE_URL", "jobsubmitter.logging.request.memory": "200Mi", "jobsubmitter.logging.request.cores": "0.5" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } }