本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用作業提交器分類
概觀
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 中移除,這會停用 或s3MonitoringConfigurationmonitoringConfiguration中指定的此 Pod 的任何記錄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
。 -
jobsubmitter.gracefulTermination -
根據預設或將此組態設定為 時
false,在任務執行器 Pod 建立驅動程式 Pod 之後,它會繼續執行、監看驅動程式 Pod,並定期記錄任務生命週期的驅動程式狀態。當此組態設為 時true,工作執行器 Pod 會在啟動 Spark 驅動程式 Pod 後立即終止。這表示任務執行器 Pod 耗用 CPU 和記憶體的時間較短,但任務執行器日誌不再可用。
我們建議將任務提交者 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 秒tolerationSeconds的作業提交器 Pod
"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" } } ] }
StartJobRun 為任務提交器 Pod 啟用正常終止的請求
"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.gracefulTermination": "true" } } ] }