

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

# 使用作業提交器分類
<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 中移除，這會停用 中指定的此 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](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`和 60 秒之任務提交者 Pod `tolerationSeconds`的請求](#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`和 60 秒之任務提交者 Pod `tolerationSeconds`的請求
<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"
      }
    }
  ]
}
```