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
La solicitud de StartJobRun de Amazon EMR en EKS crea un pod de remitente de trabajos (también conocido como job-runner) para generar el controlador de Spark. Puede usar la clasificación emr-job-submitter para configurar los selectores de nodos para su pod de remitente de trabajos, así como configurar la imagen, la CPU y la memoria para el contenedor de registro del pod de remitente de trabajos.
Las siguientes configuraciones 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
y el valor como el valor de configuración para la configuración. Por ejemplo, puede establecerlabelKeyjobsubmitter.node.selector.identifierenmyIdentifiery el pod de remitentes de trabajos tendrá un valor de identificador clave demyIdentifier. Esto se puede usar para especificar en qué nodos se puede colocar el pod de remitente 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 pod de remitente de trabajos.
jobsubmitter.logging.request.cores-
Establece un valor personalizado para el número de CPU, en unidades de CPU, para el contenedor de registro del pod de remitente de trabajos. De forma predeterminada, se establece en 100 m.
jobsubmitter.logging.request.memory-
Establece un valor personalizado para la cantidad de memoria, en bytes, del contenedor de registro del pod de remitente de trabajos. De forma predeterminada, se establece en 200 Mi. Un mebibyte es una unidad de medida similar a un megabyte.
Recomendamos colocar los pods de remitente de trabajos en las instancias bajo demanda. Colocar los pods de remitente de trabajos en las instancias de spot podría provocar un error en el trabajo si la instancia en la que se ejecuta el pod de remitente de trabajos está sujeta a una interrupción de la instancia de spot. 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
En esta sección
Solicitud de StartJobRun con ubicación de nodos bajo demanda para el pod de remitente de trabajos
Solicitud de StartJobRun con colocación de nodos Single-AZ para el pod de remitente de trabajos
Solicitud de StartJobRun con imagen, CPU y memoria de contenedor de registro personalizados
Solicitud de StartJobRun con imagen de contenedor de registro personalizada
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
Solicitud de StartJobRun con colocación de tipos de instancia de Amazon EC2 y Single-AZ para el pod de remitente de trabajos
{ "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" } } } }
Solicitud de StartJobRun con imagen, CPU y memoria de contenedor de registro personalizados
{ "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" } } } }
Solicitud de StartJobRun con imagen de contenedor de registro personalizada
cat >spark-python-in-s3-nodeselector-custom-container-image-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.container.image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.11_custom_repo", "jobsubmitter.container.image.pullPolicy": "kubernetes pull policy" } } ], "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-custom-container-image-job-submitter.json