Uso de la clasificación de remitentes de trabajos
Informació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 configurar los selectores de nodos para su pod de remitentes trabajos con la clasificación emr-job-submitter
.
La siguiente configuración está disponible 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 establecerlabelKey
jobsubmitter.node.selector.identifier
enmyIdentifier
y el pod de remitentes de trabajos tendrá un valor de identificador clave demyIdentifier
. Para agregar varias claves de selección de nodos, defina varias configuraciones con este prefijo.
Como práctica recomendada, recomendamos que los pods de remitente de trabajos coloquen los nodos en las instancias bajo demanda y no en las instancias de spot. Esto se debe a que un trabajo fallará si el pod de remitente de trabajos se ve afectado por interrupciones de instancias 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 colocación de tipos de instancia de Amazon EC2 y Single-AZ para el pod de remitente 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
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" } } } }