작업 제출자 분류 사용
개요
Amazon EMR on EKS StartJobRun
요청은 Spark 드라이버를 생성하기 위해 작업 제출자 포드(job-runner 포드라고도 함)를 생성합니다. emr-job-submitter
분류를 사용하여 작업 제출자 포드의 노드 선택기를 구성할 수 있습니다.
emr-job-submitter
분류에서 사용할 수 있는 설정은 다음과 같습니다.
jobsubmitter.node.selector.[
labelKey
]-
키와 값을 구성의 구성 값으로 사용하여 작업 제출자 포드의 노드 선택기에 추가합니다. 예를 들어labelKey
jobsubmitter.node.selector.identifier
를myIdentifier
로 설정하면 작업 제출자 포드에서 노드 선택기의 키 식별자 값은myIdentifier
입니다. 여러 노드 선택기 키를 추가하려면 이 접두사를 사용하여 여러 구성을 설정합니다.
모범 사례로, 작업 제출자 포드에서는 스팟 인스턴스가 아닌 온디맨드 인스턴스에 노드를 배치하는 것이 좋습니다. 작업 제출자 포드에서 스팟 인스턴스가 중단되면 작업이 실패하기 때문입니다. 작업 제출자 포드를 단일 가용 영역에 배치하거나 노드에 적용된 Kubernetes 레이블을 사용할 수도 있습니다.
작업 제출자 분류 예제
이 섹션의 내용
작업 제출자 포드의 온디맨드 노드 배치를 포함한 StartJobRun
요청
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
작업 제출자 포드의 단일 AZ 노드 배치를 포함한 StartJobRun
요청
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
작업 제출자 포드의 단일 AZ 및 Amazon EC2 인스턴스 유형 배치를 포함한 StartJobRun
요청
{ "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" } } } }