

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用作業提交器分類
<a name="emr-eks-job-submitter"></a>

## 概觀
<a name="emr-eks-job-submitter-overview"></a>

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}}]` **  
將[容錯](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)新增至任務提交器 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 中移除，這會停用 或 `s3MonitoringConfiguration` `monitoringConfiguration`中指定的此 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](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)。

我們建議將任務提交者 Pod 放置在隨需執行個體上。如果任務提交器 Pod 執行的執行個體發生 Spot 執行個體中斷，則將任務提交器 Pod 放置在 Spot 執行個體上可能會導致任務失敗。您也可以[將任務提交者 Pod 放在單一可用區域中，或使用套用至節點的任何 Kubernetes 標籤](#emr-eks-job-submitter-ex-ec2)。

## 作業提交器分類範例
<a name="emr-eks-job-submitter-examples"></a>

**Topics**
+ [適用於作業提交器 Pod 的具有隨需節點放置的 `StartJobRun` 請求](#emr-eks-job-submitter-ex-od)
+ [`StartJobRun` 任務提交器 Pod 具有單一可用區節點置放和 Amazon EC2 執行個體類型置放的請求](#emr-eks-job-submitter-ex-ec2)
+ [`StartJobRun` 具有任務提交器 Pod 的標籤、註釋和自訂排程器的請求](#emr-eks-job-submitter-label-annotation-scheduler)
+ [`StartJobRun` 請求，將容錯套用至具有索引鍵 `dedicated`、值 `graviton_machines`、效果 `NoExecute`和 `tolerationSeconds`為 60 秒的任務提交者 Pod](#emr-eks-job-submitter-tolerations)
+ [`StartJobRun` 任務提交者 Pod 停用記錄的 請求](#emr-eks-job-submitter-logging-disabled)
+ [`StartJobRun` 具有任務提交器 Pod 的自訂記錄容器映像、CPU 和記憶體的 請求](#emr-eks-job-submitter-custom)
+ [`StartJobRun` 具有自訂任務提交者容器映像和提取政策的 請求](#emr-eks-job-submitter-custom-container)

### 適用於作業提交器 Pod 的具有隨需節點放置的 `StartJobRun` 請求
<a name="emr-eks-job-submitter-ex-od"></a>

```
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 執行個體類型置放的請求
<a name="emr-eks-job-submitter-ex-ec2"></a>

```
"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 的標籤、註釋和自訂排程器的請求
<a name="emr-eks-job-submitter-label-annotation-scheduler"></a>

```
"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`和 `tolerationSeconds`為 60 秒的任務提交者 Pod
<a name="emr-eks-job-submitter-tolerations"></a>

```
"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 停用記錄的 請求
<a name="emr-eks-job-submitter-logging-disabled"></a>

```
"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 和記憶體的 請求
<a name="emr-eks-job-submitter-custom"></a>

```
"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` 具有自訂任務提交者容器映像和提取政策的 請求
<a name="emr-eks-job-submitter-custom-container"></a>

```
"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}}"
      }
    }
  ]
}
```