存储日志
要在 EMR Serverless 上监控作业进度并排除作业故障,请选择 EMR Serverless 存储和提供应用程序日志的方式。提交作业运行时,请指定托管存储、Amazon S3 和 Amazon CloudWatch 作为日志选项。
使用 CloudWatch,请指定要使用的日志类型和日志位置,或者接受默认类型和位置。有关 CloudWatch 日志的更多信息,请参阅 使用 Amazon CloudWatch 的 EMR Serverless 日志记录。对于托管存储和 S3 日志记录,下表列出了选择托管存储、Amazon S3 存储桶或两者时预期的日志位置和 UI 可用性。
| 选项 | 事件日志 | 容器日志 | 应用程序 UI |
|---|---|---|---|
|
托管存储 |
存储在托管存储中 |
存储在托管存储中 |
支持 |
|
托管存储和 S3 存储桶 |
存放在两个位置 |
存储在 S3 存储桶中 |
支持 |
|
Amazon S3 存储桶 |
存储在 S3 存储桶中 |
存储在 S3 存储桶中 |
不支持1 |
1 建议您保持选中托管存储。否则,您将无法使用内置应用程序 UI。
使用托管存储的 EMR Serverless 日志记录
默认情况下,EMR Serverless 将应用程序日志安全存储在 Amazon EMR 托管存储中,最长 30 天。
注意
如果关闭默认选项,Amazon EMR 将无法代表您对作业进行故障排除。示例:您无法从 EMR Serverless 控制台访问 Spark-UI。
要从 EMR Studio 关闭此选项,请取消选中提交作业页面的其他设置部分中的允许 AWS 保留日志 30 天复选框。
要从 AWS CLI 关闭此选项,请在提交作业运行时使用 managedPersistenceMonitoringConfiguration 配置。
{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }
如果您的 EMR Serverless 应用程序位于具有适用于 Amazon S3 的 VPC 端点的私有子网中,并且您附加了端点策略来控制访问,请为 EMR Serverless 添加以下权限以存储和提供应用程序日志。请将 Resource 替换为 Sample policies for private subnets that access Amazon S3 中可用区域表中的 AppInfo 存储桶。
此外,使用 aws:SourceVpc 条件键确保请求通过 VPC 端点所附加的 VPC 进行传输。
使用 Amazon S3 存储桶的 EMR Serverless 日志记录
在作业将日志数据发送到 Amazon S3 之前,请在作业运行时角色的权限策略中包含以下权限。将 替换为日志记录存储桶的名称。amzn-s3-demo-logging-bucket
要设置 Amazon S3 存储桶来存储来自 AWS CLI 的日志,请在启动作业运行时使用 s3MonitoringConfiguration 配置。为此,请在配置中提供以下 --configuration-overrides。
{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/" } } }
对于未启用重试的批处理作业,EMR Serverless 会将日志发送到以下路径:
'/applications/<applicationId>/jobs/<jobId>'
EMR Serverless 将 Spark 驱动程序日志存储在以下路径中
'/applications/<applicationId>/jobs/<jobId>/SPARK_DRIVER/'
EMR Serverless 将 Spark 执行程序日志存储在以下路径中
'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'
<EXECUTOR-ID> 是一个整数。
EMR Serverless 7.1.0 及更高版本支持流处理作业和批处理作业重试。如果您在启用重试的情况下运行作业,EMR Serverless 会自动在日志路径前缀中添加重试编号,以便更好地区分和跟踪日志。
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'
使用 Amazon CloudWatch 的 EMR Serverless 日志记录
向 EMR Serverless 应用程序提交作业时,请选择 Amazon CloudWatch 来存储应用程序日志。这样您就可以使用 CloudWatch 日志分析功能,如 CloudWatch Logs Insights 和 Live Tail。您还可以将日志从 CloudWatch 流式传输到其他系统(如 OpenSearch),以便进一步分析。
EMR Serverless 可实时记录驱动程序日志。您可以使用 CloudWatch Live Tail 功能或通过 CloudWatch CLI tail 命令实时访问日志。
默认情况下,EMR Serverless 禁用了 CloudWatch 日志记录。若要启用,请使用 AWS CLI 中的配置。
注意
Amazon CloudWatch 会实时发布日志,因此会占用更多工作线程资源。如果您选择较小的工作线程容量,可能会增加作业运行延迟。如果启用了 CloudWatch 日志记录,建议您选择更大的工作线程容量。如果每秒事务数(TPS)速率对于 PutLogEvents 来说太低,日志发布也可能会受到限制。CloudWatch 节流配置对所有服务是全局性的,包括 EMR Serverless。有关更多信息,请参阅 AWS re:post 上的如何确定 CloudWatch Logs 的节流情况?
使用 CloudWatch 进行日志记录所需的权限
在作业将日志数据发送到 Amazon CloudWatch 之前,请在作业运行时角色的权限策略中包含以下权限。
AWS CLI
要设置 Amazon CloudWatch 来存储来自 AWS CLI 的 EMR Serverless 日志,请在启动作业运行时使用 cloudWatchLoggingConfiguration 配置。为此,请提供以下配置覆盖。或者,还请提供日志组名称、日志流前缀名称、日志类型和加密密钥 ARN。
如果未指定可选值,CloudWatch 将使用默认日志流 /applications/ 将日志发布到默认日志组 applicationId/jobs/jobId/worker-type/aws/emr-serverless。
EMR Serverless 7.1.0 及更高版本支持流处理作业和批处理作业重试。如果作业启用了重试,EMR Serverless 会自动在日志路径前缀中添加重试编号,以便更好地区分和跟踪日志。
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'
下面展示了使用 EMR Serverless 的默认设置开启 Amazon CloudWatch 日志记录所需的最低配置:
{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }
以下示例显示了在为 EMR Serverless 开启 Amazon CloudWatch 日志记录时指定的所有必需和可选配置。示例下方还列出了支持的 logTypes 值。
{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }
默认情况下,EMR Serverless 仅将驱动程序 stdout 和 stderr 日志发布到 CloudWatch。如果需要其他日志,请在 logTypes 字段中指定容器角色和相应的日志类型。
以下列表显示了为 logTypes 配置指定的受支持工作线程类型:
- Spark
-
-
SPARK_DRIVER : ["STDERR", "STDOUT"] -
SPARK_EXECUTOR : ["STDERR", "STDOUT"]
-
- Hive
-
-
HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"] -
TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]
-