本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用作業提交器分類
概觀
Amazon EMR on EKS StartJobRun 請求會建立作業提交器 Pod (也稱為 job-runner Pod) 以產生 Spark 驅動程式。您可以使用 emr-job-submitter分類來設定節點選取器、新增容錯、自訂記錄,以及對任務提交器 Pod 進行其他修改。
emr-job-submitter 分類下提供下列設定:
-
jobsubmitter.node.selector.[selectorKey] -
將 新增至任務提交器 Pod 的節點選取器,並以金鑰
selectorKey和 值做為組態值。例如,您可以將jobsubmitter.node.selector.identifier設定為 ,myIdentifier而任務提交者 Pod 會有節點選擇器,其中包含索引鍵identifier和值myIdentifier。這可用來指定任務提交器 Pod 可以放置在哪個節點上。要新增多個節點選取器索引鍵,請使用此字首設定多個組態。 -
jobsubmitter.label.[labelKey] -
將 新增至任務提交者 Pod 的標籤,並以金鑰
labelKey和 值做為組態值。若要新增多個標籤,請使用此字首設定多個組態。 -
jobsubmitter.annotation.[annotationKey] -
將 新增至任務提交器 Pod 的註釋,並以金鑰
annotationKey和 值做為組態值。若要新增多個註釋,請使用此字首設定多個組態。 -
jobsubmitter.node.toleration.[tolerationKey] -
將容錯
新增至任務提交器 Pod。根據預設,不會將任何容錯新增至 Pod。公差的金鑰將是 tolerationKey,而公差的值將是組態值。如果組態值設定為非空白字串,則運算子將為Equals。如果組態值設定為"",則運算子將為Exists。 -
jobsubmitter.node.toleration.[tolerationKey].[effect] -
將容錯效果新增至字首
tolerationKey。新增容錯時,此欄位為必要欄位。效果欄位的允許值為NoExecute、NoSchedule和PreferNoSchedule。 -
jobsubmitter.node.toleration.[tolerationKey].[tolerationSeconds] -
將 tolerationSeconds 新增至字首
tolerationKey。選用欄位。僅適用於效果為 時NoExecute。 -
jobsubmitter.scheduler.name -
設定任務提交器 Pod 的自訂schedulerName。
-
jobsubmitter.logging -
啟用或停用任務提交器 Pod 上的記錄。將此設定為
DISABLED記錄容器時,會從任務提交器 Pod 中移除,這會停用 中指定的此 Pod 的任何記錄monitoringConfiguration,例如s3MonitoringConfiguration或cloudWatchMonitoringConfiguration。當此設定未設定或設定為任何其他值時,會啟用任務提交器 Pod 上的記錄。 -
jobsubmitter.logging.image -
設定要用於任務提交器 Pod 上記錄容器的自訂映像。
-
jobsubmitter.logging.request.cores -
為任務提交者 Pod 上的記錄容器設定 CPUs 數量的自訂值,以 CPU 單位為單位。根據預設,這會設定為 100 公尺。
-
jobsubmitter.logging.request.memory -
設定任務提交者 Pod 上記錄容器的記憶體量自訂值,以位元組為單位。根據預設,這會設定為 200Mi。MB 是類似於 MB 的度量單位。
-
jobsubmitter.container.image -
設定任務提交者 Pod 容器的自訂映像
job-runner。 -
jobsubmitter.container.image.pullPolicy -
設定任務提交器 Pod 容器的 imagePullPolicy
。
我們建議將任務提交者 Pod 放置在隨需執行個體上。如果任務提交者 Pod 執行的執行個體發生 Spot 執行個體中斷,則將任務提交者 Pod 放置在 Spot 執行個體上可能會導致任務失敗。您也可以將任務提交者 Pod 放在單一可用區域中,或使用套用至節點的任何 Kubernetes 標籤。
作業提交器分類範例
本節內容
適用於作業提交器 Pod 的具有隨需節點放置的 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
StartJobRun 任務提交器 Pod 具有單一可用區節點置放和 Amazon EC2 執行個體類型置放的請求
"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.selector.topology.kubernetes.io/zone": "Availability Zone", "jobsubmitter.node.selector.node.kubernetes.io/instance-type":"m5.4xlarge" } } ] }
StartJobRun 具有任務提交器 Pod 的標籤、註釋和自訂排程器的請求
"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.label.label1": "value1", "jobsubmitter.label.label2": "value2", "jobsubmitter.annotation.ann1": "value1", "jobsubmitter.annotation.ann2": "value2", "jobsubmitter.scheduler.name": "custom-scheduler" } } ] }
StartJobRun 將容錯套用至具有索引鍵 dedicated、值 graviton_machines、效果 NoExecute和 60 秒之任務提交者 Pod tolerationSeconds的請求
"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.toleration.dedicated":"graviton_machines", "jobsubmitter.node.toleration.dedicated.effect":"NoExecute", "jobsubmitter.node.toleration.dedicated.tolerationSeconds":"60" } } ] }
StartJobRun 任務提交者 Pod 停用記錄的 請求
"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.logging": "DISABLED" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }
StartJobRun 具有任務提交器 Pod 的自訂記錄容器映像、CPU 和記憶體的 請求
"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" } } }
StartJobRun 具有自訂任務提交者容器映像和提取政策的請求
"configurationOverrides": { "applicationConfiguration": [ { "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" } } ] }