通过 EMR Studio 使用 EMR Serverless 运行交互式工作负载 - Amazon EMR

通过 EMR Studio 使用 EMR Serverless 运行交互式工作负载

借助 EMR Serverless 交互式应用程序,您可以使用 EMR Studio 中托管的笔记本通过 EMR Serverless 运行 Spark 交互式工作负载。

概述

交互式应用程序是启用了交互式功能的 EMR Serverless 应用程序。借助 Amazon EMR Serverless 交互式应用程序,您可以使用 Amazon EMR Studio 中管理的 Jupyter Notebook 执行交互式工作负载。这有助于数据工程师、数据科学家和数据分析师使用 EMR Studio 对 Amazon S3 和 Amazon DynamoDB 等数据存储中的数据集进行交互式分析。

EMR Serverless 中的交互式应用程序的用例包括:

  • 数据工程师使用 EMR Studio 中的 IDE 体验来创建 ETL 脚本。该脚本从本地摄取数据,转换之后进行分析,并将数据存储在 Amazon S3 中。

  • 数据科学家使用笔记本探索数据集,训练机器学习(ML)模型来检测数据集中的异常。

  • 数据分析师探索数据集,创建脚本,生成日常报告,以更新业务控制面板等应用程序。

先决条件

要在 EMR Serverless 中使用交互式工作负载,必须满足以下要求:

  • Amazon EMR 6.14.0 及更高版本支持 EMR Serverless 交互式应用程序。

  • 要访问交互式应用程序、执行提交的工作负载以及从 EMR Studio 运行交互式笔记本,您需要特定的权限和角色。有关更多信息,请参阅 交互式工作负载所需的权限

交互式工作负载所需的权限

除了访问 EMR Serverless 所需的基本权限之外,还必须为您的 IAM 身份或角色配置其他权限:

访问交互式应用程序

为 EMR Studio 设置用户和工作区权限。有关更多信息,请参阅《Amazon EMR 管理指南》中的配置 EMR Studio 用户权限

执行您通过 EMR Serverless 提交的工作负载

设置作业运行时角色。有关更多信息,请参阅 创建作业运行时角色

从 EMR Studio 运行交互式笔记本

将以下附加权限添加到 Studio 用户的 IAM 策略:

  • emr-serverless:AccessInteractiveEndpoints:授予访问和连接您指定为 Resource 的交互式应用程序的权限。从 EMR Studio 工作区附加到 EMR Serverless 应用程序需要此权限。

  • iam:PassRole:授予访问您计划在附加到应用程序时使用的 IAM 执行角色的权限。从 EMR Studio 工作区附加到 EMR Serverless 应用程序需要相应的 PassRole 权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessInteractiveAccess", "Effect": "Allow", "Action": "emr-serverless:AccessInteractiveEndpoints", "Resource": "arn:aws:emr-serverless:Region:account:/applications/*" }, { "Sid": "EMRServerlessRuntimeRoleAccess", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "interactive-execution-role-ARN", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } } ] }

配置交互式应用程序

使用以下高级步骤,从 AWS Management Console 中的 Amazon EMR Studio 创建具有交互功能的 EMR Serverless 应用程序。

  1. 按照 开始使用 Amazon EMR Serverless 中的步骤创建应用程序。

  2. 然后,从 EMR Studio 启动一个工作区,将其作为计算选项附加到 EMR Serverless 应用程序。有关更多信息,请参阅 EMR Serverless 入门文档步骤 2 中的交互式工作负载选项卡。

将应用程序附加到 Studio 工作区时,如果应用程序尚未运行,则会自动触发启动。您也可以预先启动应用程序,在将其附加到工作区之前准备就绪。

交互式应用程序的注意事项

  • Amazon EMR 6.14.0 及更高版本支持 EMR Serverless 交互式应用程序。

  • EMR Studio 是唯一与 EMR Serverless 交互式应用程序集成的客户端。EMR Serverless 交互式应用程序不支持以下 EMR Studio 功能:工作区协作、SQL Explorer 和笔记本的编程执行。

  • 只有 Spark 引擎支持交互式应用程序。

  • 交互式应用程序支持 Python 3、PySpark 和 Spark Scala 内核。

  • 您可以在单个交互式应用程序上运行多达 25 个并发笔记本。

  • 没有端点或 API 接口支持具有交互式应用程序的自托管 Jupyter Notebook。

  • 为了获得最佳的启动体验,建议您为驱动程序和执行程序配置预初始化容量,并预先启动应用程序。预先启动应用程序时,确保其在附加到工作区时已经准备就绪。

    aws emr-serverless start-application \ --application-id your-application-id
  • 默认情况下,已为应用程序启用 autoStopConfig。这将在空闲 30 分钟后关闭应用程序。您可以将此配置作为 create-applicationupdate-application 请求的一部分进行更改。

  • 使用交互式应用程序时,建议您配置内核、驱动程序和执行程序的预初始化容量来运行笔记本。每个 Spark 交互式会话都需要一个内核和一个驱动程序,因此 EMR Serverless 会为每个预初始化的驱动程序维护预初始化的内核工作线程。默认情况下,即使不为驱动程序指定任何预初始化容量,EMR Serverless 也会在整个应用程序中保留一个内核工作线程的预初始化容量。每个内核工作程序使用 4 个 vCPU 和 16GB 内存。有关当前定价信息,请参阅 Amazon EMR 定价页面。

  • 您的 AWS 账户 中必须有足够的 vCPU 服务配额才能运行交互式工作负载。如果不运行支持 Lake Formation 的工作负载,建议至少使用 24 个 vCPU。如果运行,建议至少使用 28 个 vCPU。

  • 如果笔记本内核空闲时间超过 60 分钟,EMR Serverless 会自动终止内核。EMR Serverless 会根据笔记本会话期间完成的最后一项活动计算内核空闲时间。目前无法修改内核空闲超时设置。

  • 要在交互式工作负载中启用 Lake Formation,请在创建 EMR Serverless 应用程序时将 runtime-configuration 对象中 spark-defaults 分类下的配置 spark.emr-serverless.lakeformation.enabled 设置为 true。要了解有关在 EMR Serverless 中启用 Lake Formation 的更多信息,请参阅在 Amazon EMR 中启用 Lake Formation