View a markdown version of this page

使用任务提交者分类 - Amazon EMR

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

使用任务提交者分类

概述

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.identifiermyIdentifier,任务提交者窗格将有一个带有键identifier和值myIdentifier的节点选择器。这可用于指定作业提交者容器组可以放在哪些节点上。要添加多个节点选择器键,可使用此前缀设置多个配置。

jobsubmitter.label.[labelKey]

将密钥labelKey和值作为配置值添加到作业提交者窗格的标签中。要添加多个标签,请使用此前缀设置多个配置。

jobsubmitter.annotation.[annotationKey]

将键annotationKey和值作为配置值添加到作业提交者窗格的注释中。要添加多个注释,请使用此前缀设置多个配置。

jobsubmitter.node.toleration.[tolerationKey]

向作业提交者窗格添加容忍度。默认情况下,Pod 中不添加容忍度。容差的键将是tolerationKey,容差的值将是配置值。如果将配置值设置为非空字符串,则运算符将Equals设置为非空字符串。如果将配置值设置为"",则运算符将设置为Exists

jobsubmitter.node.toleration.[tolerationKey].[effect]

为前缀tolerationKey添加容忍效果。添加容差时此字段为必填字段。效果字段的允许值为 NoExecuteNoSchedule、和PreferNoSchedule

jobsubmitter.node.toleration.[tolerationKey].[tolerationSeconds]

在前缀中添加容忍秒数。tolerationKey可选字段。仅在效果为时适用NoExecute

jobsubmitter.scheduler.name

为作业提交者窗格设置自定义 SchedulerName。

jobsubmitter.logging

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

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为作业提交者 pod 的容器设置。

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

任务提交者分类示例

StartJobRun 为任务提交者 Pod 请求按需型节点放置

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 实例类型放置

"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请求时对任务提交者 pod 应用容忍度dedicated,密钥、值graviton_machinesNoExecute、效果和 60 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在作业提交者窗格中禁用日志记录的情况下请求

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