

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

# 通过 EMR Studio 使用 EMR Serverless 运行交互式工作负载
<a name="interactive-workloads"></a>

借助 EMR Serverless 交互式应用程序，可使用 EMR Studio 中托管的 Notebook 通过 EMR Serverless 运行 Spark 交互式工作负载。

## 概述
<a name="interactive-overview"></a>

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

EMR Serverless 中的交互式应用程序的用例包括：
+ 数据工程师使用 EMR Studio 中的 IDE 体验来创建 ETL 脚本。该脚本从本地摄取数据，转换之后进行分析，并将数据存储在 Amazon S3 中。
+ 数据科学家使用 Notebook 探索数据集，训练机器学习（ML）模型来检测数据集中的异常。
+ 数据分析师探索数据集，创建脚本，生成日常报告，以更新业务控制面板等应用程序。

## 先决条件
<a name="interactive-prereqs"></a>

要在 EMR Serverless 中使用交互式工作负载，应满足以下要求：
+ Amazon EMR 6.14.0 及更高版本支持 EMR Serverless 交互式应用程序。
+ 要访问交互式应用程序、执行提交的工作负载以及从 EMR Studio 运行交互式 Notebook，您需要特定的权限和角色。有关更多信息，请参阅[交互式工作负载所需的权限](#interactive-permissions)。

## 交互式工作负载所需的权限
<a name="interactive-permissions"></a>

除了[访问 EMR Serverless 所需的基本权限](setting-up.md#setting-up-iam)之外，请为您的 IAM 身份或角色配置其他权限：

**访问交互式应用程序**  
为 EMR Studio 设置用户和 Workspace 权限。有关更多信息，请参阅《Amazon EMR 管理指南》**中的[配置 EMR Studio 用户权限](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-user-permissions.html)。

**执行您通过 EMR Serverless 提交的工作负载**  
设置作业运行时角色。有关更多信息，请参阅[创建作业运行时角色](getting-started.md#gs-runtime-role)。

**从 EMR Studio 运行交互式 Notebook**  
将以下附加权限添加到 Studio 用户的 IAM 策略：  
+ **`emr-serverless:AccessInteractiveEndpoints`**：授予访问和连接您指定为 `Resource` 的交互式应用程序的权限。从 EMR Studio Workspace 附加到 EMR Serverless 应用程序需要此权限。
+ **`iam:PassRole`**：授予访问您计划在附加到应用程序时使用的 IAM 执行角色的权限。从 EMR Studio Workspace 附加到 EMR Serverless 应用程序需要相应的 `PassRole` 权限。  
****  

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

## 配置交互式应用程序
<a name="interactive-configure"></a>

使用以下高级步骤，从 AWS 管理控制台中的 Amazon EMR Studio 创建具有交互功能的 EMR Serverless 应用程序。

1. 按照 [开始使用 Amazon EMR Serverless](getting-started.md) 中的步骤创建应用程序。

1. 然后，从 EMR Studio 启动一个 Workspace，将其作为计算选项附加到 EMR Serverless 应用程序。有关更多信息，请参阅 [EMR Serverless 入门](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-job-run-console)文档步骤 2 中的**交互式工作负载**选项卡。

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

## 交互式应用程序的注意事项
<a name="interactive-considerations"></a>
+ Amazon EMR 6.14.0 及更高版本支持 EMR Serverless 交互式应用程序。
+ EMR Studio 是唯一与 EMR Serverless 交互式应用程序集成的客户端。EMR Serverless 交互式应用程序不支持以下 EMR Studio 功能：Workspace 协作、SQL Explorer 和 Notebook 的编程执行。
+ 只有 Spark 引擎支持交互式应用程序。
+ 交互式应用程序支持 Python 3 PySpark 和 Spark Scala 内核。
+ 您可以在单个交互式应用程序上运行多达 25 个并发 Notebook。
+ 没有端点或 API 接口支持具有交互式应用程序的自托管 Jupyter Notebook。
+ 为了获得最佳的启动体验，建议您为驱动程序和执行程序配置预初始化容量，并预先启动应用程序。预先启动应用程序时，确保其在附加到 Workspace 时已经准备就绪。

  ```
  aws emr-serverless start-application \ 
  --application-id your-application-id
  ```
+ 默认情况下，已为应用程序启用 `autoStopConfig`。这将在空闲 30 分钟后关闭应用程序。您可以将此配置作为 `create-application` 或 `update-application` 请求的一部分进行更改。
+ 使用交互式应用程序时，建议您配置内核、驱动程序和执行程序的预初始化容量来运行笔记本。每个 Spark 交互式会话都需要一个内核和一个驱动程序，因此 EMR Serverless 会为每个预初始化的驱动程序维护预初始化的内核工作线程。默认情况下，即使不为驱动程序指定任何预初始化容量，EMR Serverless 也会在整个应用程序中保留一个内核工作线程的预初始化容量。每个内核工作程序使用 4 个 vCPU 和 16GB 内存。有关当前定价信息，请参阅 [Amazon EMR 定价](https://aws.amazon.com/emr/pricing/)页面。
+ 您的中必须有足够的 vCPU 服务配额 AWS 账户 才能运行交互式工作负载。如果不运行支持 Lake Formation 的工作负载，建议至少使用 24 个 vCPU。如果这样做，我们建议至少使用 28 个 vCPU。
+ 如果 Notebook 内核空闲时间超过 60 分钟，EMR Serverless 会自动终止内核。EMR Serverless 会根据 Notebook 会话期间完成的最后一项活动计算内核空闲时间。目前无法修改内核空闲超时设置。
+ 要在交互式工作负载中启用 Lake Formation，请在[创建 EMR Serverless 应用程序](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html)时将 `runtime-configuration` 对象中 `spark-defaults` 分类下的配置 `spark.emr-serverless.lakeformation.enabled` 设置为 `true`。要了解更多信息，请参阅 [Enabling Lake Formation in Amazon EMR](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html#emr-serverless-lf-enable-config)。