查看持久性应用程序用户界面 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

查看持久性应用程序用户界面

从 Amazon EMR 版本 5.25.0 开始,您可以使用集群的 Summary (摘要) 页面或控制台中的 Application user interfaces (应用程序用户界面) 选项卡连接到在集群外托管的持久性 Spark 历史记录服务器应用程序的详细信息。从 Amazon EMR 版本 5.30.1 开始,提供了 Tez UI 和 YARN 时间线服务器持久性应用程序界面。对持久性应用程序历史记录的一键式链接访问提供了以下好处:

  • 您可以快速分析活动的作业和作业历史记录并进行故障排除,而无需通过 SSH 连接来设置 Web 代理。

  • 您可以访问处于活动状态和终止状态的集群的应用程序历史记录和相关日志文件。日志在应用程序结束后的 30 天内均可用。

在 Amazon EMR 5.30.1 或 6.x 旧控制台中,在集群的 Application user interfaces(应用程序用户界面)选项卡或集群 Summary(摘要)页面上,选择 YARN timeline server(YARN 时间线服务器)、Tez UISpark history server(Spark 历史记录服务器)链接。

应用程序 UI 将在新的浏览器选项卡中打开。有关更多信息,请参阅监控和检测

您可以通过 Spark 历史记录服务器、YARN 时间线服务器和 Tez UI 上的链接来查看 YARN 容器日志。

注意

要从 Spark 历史记录服务器、YARN 时间线服务器和 Tez UI 访问 YARN 容器日志,您必须为集群启用 Amazon S3 日志记录。如果未启用日志记录,则指向 YARN 容器日志的链接将不起作用。

日志收集

要启用一键式访问持久性应用程序用户界面,Amazon EMR 需要收集两种类型的日志:

  • 应用程序事件日志 会收集到 EMR 系统存储桶中。通过使用 Amazon S3 托管密钥的服务器端加密 (SSE-S3) 对事件日志进行静态加密。如果您对集群使用私有子网,请确保在私有子网的 Amazon S3 策略的资源列表中包含 “arn:aws:s3:::prod.MyRegion.appinfo.src/*”。有关更多信息,请参阅私有子网的最小 Amazon S3 策略

  • YARN 容量日志收集到您拥有的 Amazon S3 存储桶中。您必须为集群启用日志记录才能访问 YARN 容器日志。有关更多信息,请参阅配置集群日志记录和调试

如果您出于隐私原因需要禁用此功能,则可在创建集群时使用引导脚本来停止守护程序,如以下示例所示。

aws emr create-cluster --name "Stop Application UI Support" --release-label emr-5.36.1 \ --applications Name=Hadoop Name=Spark --ec2-attributes KeyName=<myEMRKeyPairName> \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=1,InstanceType=m3.xlarge InstanceGroupType=TASK,InstanceCount=1,InstanceType=m3.xlarge \ --use-default-roles --bootstrap-actions Path=s3://region.elasticmapreduce/bootstrap-actions/run-if,Args=["instance.isMaster=true","echo Stop Application UI | sudo tee /etc/apppusher/run-apppusher; sudo systemctl stop apppusher || exit 0"]

运行此引导启动脚本后,Amazon EMR 不会将任何 Spark 历史记录服务器或 YARN 时间线服务器事件日志收集到 EMR 系统存储桶中。Application user interfaces (应用程序用户界面) 选项卡上没有可用的应用程序历史记录信息,并且您将不再能够从控制台访问所有应用程序用户界面。

大型 Spark 事件日志文件

在某些情况下,长时间运行的 Spark 作业(例如 Spark 流式处理)和大型作业(例如 Spark SQL 查询)可能会生成大型事件日志。使用大型事件日志,您可以快速耗尽计算实例上的磁盘空间,并在加载持久 UI 时遇到 OutOfMemory 错误。要避免这些问题,建议您启用 Spark 事件日志滚动和压缩功能。此功能在 Amazon EMR 版本 emr-6.1.0 及更高版本上可用。有关滚动和压缩的更多详细信息,请参阅 Spark 文档中的对滚动事件日志文件应用压缩

要激活 Spark 事件日志滚动和压缩功能,请启用以下 Spark 配置设置。

  • spark.eventLog.rolling.enabled – 根据大小启用事件日志滚动。默认情况下,此设置处于禁用状态。

  • spark.eventLog.rolling.maxFileSize – 激活滚动时,指定事件日志文件在滚动之前的最大大小。默认值为 128 MB。

  • spark.history.fs.eventLog.rolling.maxFilesToRetain – 指定要保留的非压缩事件日志文件的最大数量。默认情况下,会保留所有事件日志文件。设置为较小的数字以压缩较旧的事件日志。最小值为 1。

请注意,压缩会尝试排除具有过时事件日志文件的事件,如下所示。如果它确实丢弃了事件,则在 Spark 历史记录服务器 UI 上将看不到它们。

  • 已完成作业的事件以及相关阶段或任务事件。

  • 终止执行程序的事件。

  • 已完成 SQL 查询的事件,以及相关作业、阶段和任务事件。

启动启用滚动和压缩的集群
  1. 使用以下配置创建 spark-configuration.json 文件。

    [ { "Classification": "spark-defaults", "Properties": { "spark.eventLog.rolling.enabled": true, "spark.history.fs.eventLog.rolling.maxFilesToRetain": 1 } } ]
  2. 使用 Spark 滚动压缩配置创建集群,如下所示。

    aws emr create-cluster \ --release-label emr-6.6.0 \ --instance-type m4.large \ --instance-count 2 \ --use-default-roles \ --configurations file://spark-configuration.json

注意事项和限制

一键式访问持久性应用程序用户界面当前具有以下限制。

  • 当应用程序详细信息显示在 Spark 历史记录服务器 UI 上时,至少会有两分钟的延迟。

  • 仅当应用程序的事件日志目录位于 HDFS 中时,此功能才起作用。默认情况下,Amazon EMR 将事件日志存储在 HDFS 的目录中。如果您将默认目录更改为其它文件系统(例如 Amazon S3),则此功能将不起作用。

  • 此功能目前不适用于具有多个主节点的 EMR 集群或与 Amazon Lake Formation 集成的 EMR 集群。

  • 要启用一键式访问持久性应用程序用户界面,您必须有权对 Amazon EMR 执行 DescribeCluster 操作。如果您拒绝 IAM 委托人对此操作的权限,则传播权限更改所需的时间大约为 5 分钟。

  • 如果在正在运行的集群中重新配置应用程序,则将无法通过应用程序 UI 获取应用程序历史记录。

  • 对于每个 Amazon Web Services 账户,活动应用程序 UI 的默认限制为 200。

  • 您可以在以下区域通过该控制台访问应用程序 UI:美国东部(弗吉尼亚州北部)、美国西部(北加利福尼亚)、加拿大(中部)、欧洲地区(法兰克福、爱尔兰、伦敦、巴黎、斯德哥尔摩)、亚太地区(孟买、首尔、新加坡、悉尼和东京)、南美洲(圣保罗)、由光环新网运营的中国(北京)和由西云数据运营的中国(宁夏)。