View a markdown version of this page

使用任务提交者分类 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

使用任务提交者分类

概述

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

jobsubmitter.label.[labelKey]

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

jobsubmitter.annotation.[annotationKey]

将密钥annotationKey和值作为配置值添加到任务提交者 pod 的注释中。要添加多个注释,请使用此前缀设置多个配置。

jobsubmitter.node.toleration.[tolerationKey]

为任务提交者窗格添加容忍度。默认情况下,不向 pod 添加容差。容忍度的密钥将是tolerationKey,容忍度的值将是配置值。如果将配置值设置为非空字符串,则运算符将为。Equals如果配置值设置为"",则操作员将设置为Exists。

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

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

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

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

jobsubmitter.scheduler.name

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

jobsubmitter.logging

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

jobsubmitter.logging.image

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

jobsubmitter.logging.request.cores

为作业提交者容器组上的日志记录容器设置 CPU 数量自定义值(以 CPU 单元为单位)。默认情况下,这设置为 100m。

jobsubmitter.logging.request.memory

为作业提交者容器组上的日志记录容器设置内存量自定义值(以字节为单位)。默认情况下,这设置为 200Mi。mebibyte 是一种类似于 megabyte 的度量单位。

jobsubmitter.container.image

为任务提交者 pod 的容器设置自定义镜像。job-runner

jobsubmitter.container.image.pullPolicy

PullPolicy为任务提交者 pod 的容器设置镜像。

jobsubmitter.gracefulTermination

当此配置设置为时false,任务运行器 pod 创建驱动程序 pod 后,它会继续运行,监视驱动程序 pod,并在任务生命周期内定期记录驱动程序状态。当此配置设置为时true,任务运行器 pod 将在启动 Spark 驱动程序 pod 后立即终止。这意味着任务运行器 pod 消耗 CPU 和内存的时间更短,从而降低了运行任务的成本,但任务运行器日志不再可用。对于 7.14.0 之前的亚马逊 EMR 版本及对于emr-spark-8.0.0,此配置默认为。false对于 Amazon EMR 7.14.0 版本和后续的 7.x 版本emr-spark-8.1.0及更高版本,此配置默认为,true这样任务无需额外配置即可从减少的资源使用中受益。

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

任务提交者分类示例

StartJobRun请求为任务提交者 pod 放置 On-Demand 节点

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 施加容忍度的请求,使用专用密钥、值 graviton_machines、效果NoExecute和 60 秒的容忍秒数

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