

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用任务提交者分类
<a name="emr-eks-job-submitter"></a>

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

Amazon EMR on EKS `StartJobRun` 请求会创建一个 *job-submitter* Pod（也称为 *job-runner* Pod）来生成 Spark 驱动程序。您可以使用`emr-job-submitter`分类来配置节点选择器、添加容忍度、自定义日志记录以及对作业提交者窗格进行其他修改。

可在 `emr-job-submitter` 分类下进行以下设置：

** `jobsubmitter.node.selector.[selectorKey]` **  
添加到作业提交者 pod 的节点选择器中，并使用键*selectorKey*和值作为配置值。例如，您可以将设置` jobsubmitter.node.selector.identifier`为`myIdentifier`，任务提交者窗格将有一个带有键`identifier`和值`myIdentifier`的节点选择器。这可用于指定作业提交者容器组可以放在哪些节点上。要添加多个节点选择器键，可使用此前缀设置多个配置。

** `jobsubmitter.label.[labelKey]` **  
将密钥*labelKey*和值作为配置值添加到作业提交者窗格的标签中。要添加多个标签，请使用此前缀设置多个配置。

** `jobsubmitter.annotation.[annotationKey]` **  
将键*annotationKey*和值作为配置值添加到作业提交者窗格的注释中。要添加多个注释，请使用此前缀设置多个配置。

** `jobsubmitter.node.toleration.[tolerationKey]` **  
向作业提交者窗格添加[容忍度](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)。默认情况下，Pod 中不添加容忍度。容差的键将是*tolerationKey*，容差的值将是配置值。如果将配置值设置为非空字符串，则运算符将`Equals`设置为非空字符串。如果将配置值设置为`""`，则运算符将设置为`Exists`。

** `jobsubmitter.node.toleration.[tolerationKey].[effect]` **  
为前缀*tolerationKey*添加容忍效果。添加容差时此字段为必填字段。效果字段的允许值为` NoExecute``NoSchedule`、和`PreferNoSchedule`。

** `jobsubmitter.node.toleration.[tolerationKey].[tolerationSeconds]` **  
在前缀中添加容忍秒数。*tolerationKey*可选字段。仅在效果为时适用`NoExecute`。

** `jobsubmitter.scheduler.name` **  
为作业提交者窗格设置自定义 SchedulerName。

** `jobsubmitter.logging` **  
在作业提交者窗格上启用或禁用日志记录。将其设置为` DISABLED`时，日志容器将从作业提交者容器中移除，这将禁用中指定的此 pod 的任何日志记录`monitoringConfiguration`，例如`s3MonitoringConfiguration`或`cloudWatchMonitoringConfiguration`。如果此设置未设置或设置为任何其他值，则会启用作业提交者窗格上的登录功能。

** `jobsubmitter.logging.image` **  
设置用于作业提交者容器组上的日志记录容器的自定义映像。

** `jobsubmitter.logging.request.cores` **  
为作业提交者窗格上的日志容器的 CPUs数量设置自定义值（以 CPU 为单位）。默认情况下，这设置为 **100m**。

** `jobsubmitter.logging.request.memory` **  
为作业提交者容器组上的日志记录容器设置内存量自定义值（以字节为单位）。默认情况下，这设置为 **200Mi**。mebibyte 是一种类似于 megabyte 的度量单位。

** `jobsubmitter.container.image` **  
为作业提交者 pod 的`job-runner`容器设置自定义镜像。

** `jobsubmitter.container.image.pullPolicy` **  
[imagePullPolicy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)为作业提交者 pod 的容器设置。

我们建议将作业提交者容器组放在按需型实例上。如果作业提交者容器组运行的实例遭遇竞价型实例中断，则在竞价型实例上放置作业提交者容器组可能会导致作业失败。您也可以[将任务提交者容器放在单个可用区中，或者使用应用于节点的任何 Kubernetes 标签](#emr-eks-job-submitter-ex-ec2)。

## 任务提交者分类示例
<a name="emr-eks-job-submitter-examples"></a>

**Topics**
+ [`StartJobRun` 为任务提交者 Pod 请求按需型节点放置](#emr-eks-job-submitter-ex-od)
+ [`StartJobRun`为任务提交者容器请求单可用区节点放置和 Amazon EC2 实例类型放置](#emr-eks-job-submitter-ex-ec2)
+ [`StartJobRun`使用标签、注释和作业提交者 pod 的自定义调度器进行请求](#emr-eks-job-submitter-label-annotation-scheduler)
+ [`StartJobRun`请求时对任务提交者 pod 应用容忍度`dedicated`，密钥、值`graviton_machines``NoExecute`、效果和 60 `tolerationSeconds` 秒](#emr-eks-job-submitter-tolerations)
+ [`StartJobRun`在作业提交者窗格中禁用日志记录的情况下请求](#emr-eks-job-submitter-logging-disabled)
+ [`StartJobRun`使用任务提交者 pod 的自定义日志容器镜像、CPU 和内存进行请求](#emr-eks-job-submitter-custom)
+ [`StartJobRun`使用自定义任务提交者容器镜像和拉取策略进行请求](#emr-eks-job-submitter-custom-container)

### `StartJobRun` 为任务提交者 Pod 请求按需型节点放置
<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`为任务提交者容器请求单可用区节点放置和 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`请求时对任务提交者 pod 应用容忍度`dedicated`，密钥、值`graviton_machines``NoExecute`、效果和 60 `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`在作业提交者窗格中禁用日志记录的情况下请求
<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"
      }
    }
  ]
}
```