View a markdown version of this page

使用 Amazon EMR 容器默认分类 - Amazon EMR

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

使用 Amazon EMR 容器默认分类

概述

可在 emr-containers-defaults 分类下进行以下设置:

job-start-timeout

默认情况下,如果作业无法启动,则会超时,并在 SUBMITTED 状态下等待 15 分钟。此配置会更改作业超时前等待的秒数。

executor.logging

启用或禁用执行器 pod 上的日志记录。当将其设置为 DISABLED时,日志容器将从执行器 pod 中移除,这将禁用对中指定的这些 pod 的任何日志记录monitoringConfiguration,例如s3MonitoringConfigurationcloudWatchMonitoringConfiguration。当未设置此设置或设置为任何其他值时,将启用对执行器 pod 的登录。

logging.image

设置用于驱动程序和执行程序容器组上的日志记录容器的自定义映像。

logging.request.cores

为驱动程序和执行程序容器组上的日志记录容器设置 CPU 数量自定义值(以 CPU 单元为单位)。默认情况下,不设置此值。

logging.request.memory

为驱动程序和执行程序容器组上的日志记录容器设置内存量自定义值(以字节为单位)。默认情况下,这设置为 512Mi。mebibyte 是一种类似于 megabyte 的度量单位。

logging.eventLog.dir

使用此配置启用永久应用程序用户界面并将 Spark 事件日志保存到您自己的 S3 位置。设置logging.eventLog.dir为事件日志的 S3 路径。在 monitoringConfiguration 中,将 persistentAppUI 设置为 ENABLED。使用spark.eventLog.dir时不要设置logging.eventLog.dir;这两种配置不兼容。如果设置了该配置,spark.eventLog.dir则该配置优先,并且日志容器无法复制 Spark 事件日志。这意味着您指定的 S3 位置将logging.eventLog.dir不会接收事件日志,永久应用程序用户界面也将无法运行。

任务提交者分类示例

具有自定义任务超时的 StartJobRun请求

{ "name": "spark-python", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "job-start-timeout": "1800" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } }

StartJobRun禁用执行器 pod 日志记录的请求

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "executor.logging": "DISABLED" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }

StartJobRun使用驱动程序和执行器 pod 的自定义日志容器镜像、CPU 和内存进行请求

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "logging.image": "YOUR_ECR_IMAGE_URL", "logging.request.memory": "200Mi", "logging.request.cores": "0.5" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }
注意

如果 Fluentd 日志容器遇到内存不足 (OOM) 错误,请增加该值。logging.request.memory例如,将其设置为以1Gi向日志容器分配更多内存并防止 OOM 问题。

StartJobRun使用 Spark 事件日志请求 Amazon S3 目标

以下示例将 Spark 事件日志保存到您自己的 Amazon S3 存储桶中,同时还启用了永久应用程序用户界面。该persistentAppUI设置为ENABLED默认值。

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-containers-defaults", "properties": { "logging.eventLog.dir": "s3://my-bucket/event-logs/" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED" } }
注意

使用时请勿spark.eventLog.dirspark-defaults分类中设置logging.eventLog.dir。这两种配置不兼容。如果设置了该配置,spark.eventLog.dir则该配置优先,并且日志容器无法复制 Spark 事件日志。这意味着您指定的 S3 位置将logging.eventLog.dir不会接收事件日志,永久应用程序用户界面也将无法运行。