

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

# 用户指南
<a name="studio-emr-user-guide"></a>

本节介绍数据科学家和数据工程师如何从 Studio 或 Studio Classic 启动、发现、连接或终止 Amazon EMR 集群。

在用户列出或启动集群之前，管理员必须在 Studio 环境中配置必要的设置。有关管理员如何配置 Studio 环境以允许 Amazon EMR 集群的自配置和列表，请参阅 [管理员指南](studio-emr-admin-guide.md)。

**Topics**
+ [支持从 Studio 或 Studio Classic 连接到 Amazon EMR 集群的映像和内核](#studio-notebooks-emr-cluster-connect-kernels)
+ [自带映像](#studio-notebooks-emr-byoi)
+ [从 Studio 或 Studio Classic 启动 Amazon EMR 集群](studio-notebooks-launch-emr-cluster-from-template.md)
+ [从 Studio 或 Studio Classic 列出 Amazon EMR 集群](discover-emr-clusters.md)
+ [从 Studi SageMaker o 或 Studio Classic 连接到 Amazon EMR 集群](connect-emr-clusters.md)
+ [从 Studio 或 Studio Classic 终止 Amazon EMR 集群](terminate-emr-clusters.md)
+ [从 Studio 或 Studio Classic 访问 Spark UI](studio-notebooks-access-spark-ui.md)

## 支持从 Studio 或 Studio Classic 连接到 Amazon EMR 集群的映像和内核
<a name="studio-notebooks-emr-cluster-connect-kernels"></a>

随附以下图像和内核 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/)，该 JupyterLab 扩展程序[使用](https://livy.apache.org/) Apache Livy 通过[SparkMagic](https://github.com/jupyter-incubator/sparkmagic)库连接到远程 Spark（Amazon EMR）集群。
+ **对于 Studio 用户：** SageMaker 分发版是用于数据科学的 Docker 环境，用作 JupyterLab笔记本实例的默认映像。所有版本的 [SageMaker AI 发行](https://github.com/aws/sagemaker-distribution)版都`sagemaker-studio-analytics-extension`已预装。
+ **对于 Studio Classic 用户：**以下映像预装了 `sagemaker-studio-analytics-extension`：
  + DataScience — Python 3 内核
  + DataScience 2.0 — Python 3 内核
  + DataScience 3.0 — Python 3 内核
  + SparkAnalytics 1.0 — SparkMagic 还有内 PySpark 核
  + SparkAnalytics 2.0 — SparkMagic 还有内 PySpark 核
  + SparkMagic — SparkMagic 和内 PySpark 核
  + PyTorch 1.8 — Python 3 内核
  + TensorFlow 2.6 — Python 3 内核
  + TensorFlow 2.11 — Python 3 内核

要使用其他内置映像或您自己的映像连接到 Amazon EMR 集群，请按照[自带映像](#studio-notebooks-emr-byoi)中的说明进行操作。

## 自带映像
<a name="studio-notebooks-emr-byoi"></a>

要在 Studio 或 Studio Classic 中使用自己的映像并允许您的笔记本电脑连接到 Amazon EMR 集群，请在内核中安装以下[sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/)扩展程序。它支持通过库将 SageMaker Studio 或 Studio Classic 笔记本电脑连接到 Spark（Amazon EMR）集群。[SparkMagic](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-magics.html)

```
pip install sparkmagic
pip install sagemaker-studio-sparkmagic-lib
pip install sagemaker-studio-analytics-extension
```

此外，要在连接 Amazon EMR 时使用 [Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html) 身份验证，您必须安装 kinit 客户端。根据您的操作系统，安装 kinit 客户端的命令可能会有所不同。要自带 Ubuntu（基于 Debian）映像，请使用 `apt-get install -y -qq krb5-user` 命令。

有关在 SageMaker Studio 或 Studio Classic 中自[带图片的更多信息，请参阅自带 SageMaker 图片](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html)。

# 从 Studio 或 Studio Classic 启动 Amazon EMR 集群
<a name="studio-notebooks-launch-emr-cluster-from-template"></a>

数据科学家和数据工程师可以使用管理员设置的模板从 Studio 或 Studio Class CloudFormation ic 中自行配置 Amazon EMR 集群。在用户启动集群之前，管理员必须在 Studio 环境中配置必要的设置。有关管理员如何配置 Studio 环境以允许自配置 Amazon EMR 集群的信息，请参阅 [在 Service Catalog 中配置亚马逊 EMR CloudFormation 模板](studio-notebooks-set-up-emr-templates.md)。

从 Studio 或 Studio Classic 配置新的 Amazon EMR 集群：

1. 在 Studio 或 Studio Classic UI 的左侧面板中，选择左侧导航菜单中的**数据**节点。向下导航至 **Amazon EMR 集群**。这将打开一个页面，列出您可以从 Studio 或 Studio Classic 访问的 Amazon EMR 集群。

1. 选择右上角的**创建**按钮。这会打开一个新的模式，列出可供您使用的集群模板。

1. 选择一个集群模板，方法是选择模板名称，然后选择**下一步**。

1. 输入集群的详细信息，如集群名称和管理员设置的任何特定可配置参数，然后选择**创建集群**。集群的创建可能需要几分钟时间。  
![\[从 Studio 或 Studio Classic 创建 Amazon EMR 集群。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-cluster-creation.png)

集群配置完成后，Studio 或 Studio Classic UI 会显示*集群已成功创建*消息。

要连接到集群，请参阅[从 Studi SageMaker o 或 Studio Classic 连接到 Amazon EMR 集群](connect-emr-clusters.md)。

# 从 Studio 或 Studio Classic 列出 Amazon EMR 集群
<a name="discover-emr-clusters"></a>

数据科学家和数据工程师可以从 Studio 发现并连接到 Amazon EMR 集群。Amazon EMR 集群可能与 Studio 位于同一个 AWS 账户中，也可能位于不同的 AWS 账户中。

在用户列出或连接到集群之前，管理员必须在 Studio 环境中配置必要的设置。有关管理员如何配置 Studio 环境以允许发现运行 Amazon EMR 集群的信息，请参阅 [管理员指南](studio-emr-admin-guide.md)。如果管理员[配置了跨账户发现 Amazon EMR 集群](studio-notebooks-configure-discoverability-emr-cluster.md)，则可以查看集群的综合列表。该列表包括 Studio 使用的 AWS 账户中的集群，以及来自您已被授予访问权限的远程账户的集群。

从 Studio 查看可用的 Amazon EMR 集群列表：

1. 在 Studio UI 的左侧导航菜单中，向下滚动到 **EMR Clusters**。这将打开一个页面，列出您可以访问的 Amazon EMR 集群。

   列表显示处于以下阶段的集群：**引导**、**启动**、**运行**、**等待**。您可以使用筛选器图标，根据集群的当前状态缩小显示集群的范围。

1. 选择要连接的特定**运行**集群，然后参考 [从 Studi SageMaker o 或 Studio Classic 连接到 Amazon EMR 集群](connect-emr-clusters.md)。

# 从 Studi SageMaker o 或 Studio Classic 连接到 Amazon EMR 集群
<a name="connect-emr-clusters"></a>

数据科学家和数据工程师可以直接从 Studio 用户界面发现并连接到 Amazon EMR 集群。开始之前，请确保已按照 [步骤 4：设置权限以启用从 Studio 列出和启动 Amazon EMR 集群](studio-notebooks-set-up-emr-templates.md#studio-emr-permissions) 部分所述配置了必要的权限。这些权限赋予 Studio 创建、启动、查看、访问和终止集群的能力。

您可以直接从 Studio 用户界面将 Amazon EMR 集群连接到新的 JupyterLab 笔记本电脑，也可以选择在正在运行 JupyterLab 的应用程序的笔记本中启动连接。

**重要**  
您只能发现并连接到从私有空间启动的 Studio Classic 应用程序的 Amazon EMR 集群。 JupyterLab 确保 Amazon EMR 集群与您的 Studio 环境位于同一 AWS 区域。您的 JupyterLab 空间必须使用 SageMaker 分发图片版本`1.10`或更高版本。

## 使用 Studio UI 连接到 Amazon EMR 集群
<a name="connect-emr-clusters-ui-options"></a>

要使用 Studio 或 Studio Classic 用户界面连接到您的集群，您可以从中访问的集群列表中启动连接[从 Studio 或 Studio Classic 列出 Amazon EMR 集群](discover-emr-clusters.md)，也可以从 SageMaker Studio 或 Studio Classic 中的笔记本启动连接。

**要通过 Studio 用户界面将 Amazon EMR 集群连接到新 JupyterLab 笔记本电脑，请执行以下操作：**

1. 在 Studio UI 的左侧面板中，选择左侧导航菜单中的**数据**节点。向下导航至 **Amazon EMR 应用程序和集群**。这将打开一个页面，列出可以从 Studio 的 **Amazon EMR 集群**标签访问的 Amazon EMR 集群。
**注意**  
如果您或您的管理员配置了允许跨账户访问 Amazon EMR 集群的权限，您就可以查看已授予 Studio 访问权限的所有账户的集群综合列表。

1. 选择要连接到新笔记本的 Amazon EMR 集群，然后选择**附加到笔记本**。这将打开一个显示 JupyterLab 空间列表的模态窗口。

1. 
   + 选择要从中启动 JupyterLab应用程序的空间，然后选择 “**打开笔记本**”。这会从你选择的空间启动 JupyterLab 应用程序并打开一个新的笔记本。
**注意**  
Studio Classic 用户需要选择映像和内核。有关支持的映像列表，请参阅[支持从 Studio 或 Studio Classic 连接到 Amazon EMR 集群的映像和内核](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels)或[自带映像](studio-emr-user-guide.md#studio-notebooks-emr-byoi)。
   + 或者，您也可以选择模式窗口顶部的**创建新空间**按钮，创建一个新的专用空间。输入空间名称，然后选择**创建空间并打开笔记本**。这将创建一个具有默认实例类型和最新 SageMaker 发行映像的私有空间，启动 JupyterLab应用程序并打开新的笔记本。

1. 如果您选择的集群不使用 Kerberos、LDAP 或[运行时角色]()身份验证，Studio 会提示您选择凭证类型。从 **Http 基本身份验证**或**没有凭证**中进行选择，然后输入您的凭证（如果适用）。

   如果您选择的集群支持运行时角色，请选择 Amazon EMR 集群在运行作业时可承担的 IAM 角色名称。
**重要**  
要成功将 JupyterLab 笔记本连接到支持运行时角色的 Amazon EMR 集群，您必须先将运行时角色列表与您的域或用户配置文件相关联，如中所述。[在 Studio 中为 Amazon EMR 集群访问配置 IAM 运行时角色](studio-notebooks-emr-cluster-rbac.md)未完成此步骤将无法建立连接。

   选择后，连接命令会弹出笔记本的第一个单元格，并启动与 Amazon EMR 集群的连接。

   连接成功后会显示一条消息，确认连接以及 Spark 应用程序的启动。

**或者，您可以从 JupyterLab 或 Studio Classic 笔记本电脑连接到集群。**

1. 选择笔记本顶部的**集群**按钮。这会打开一个模式窗口，列出处于 `Running` 状态、可以访问的 Amazon EMR 集群。您可以在 **Amazon EMR 集群**选项卡中的 `Running` Amazon EMR 集群。
**注意**  
对于 Studio Classic 用户来说，只有在使用来自 [支持从 Studio 或 Studio Classic 连接到 Amazon EMR 集群的映像和内核](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels) 或 [自带映像](studio-emr-user-guide.md#studio-notebooks-emr-byoi) 的内核时，**集群**才会显示。如果您在笔记本顶部未看到**集群**，请确保您的管理员已[配置了集群的可发现性](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-configure-discoverability-emr-cluster.html)并切换到支持的内核。

1. 选择要连接到的集群，然后选择**连接**。

1. 如果您将 Amazon EMR 集群配置为支持[运行时 IAM 角色](studio-notebooks-emr-cluster-rbac.md)，则可以从 **Amazon EMR 执行角色**下拉菜单中选择您的角色。
**重要**  
要成功将 JupyterLab 笔记本连接到支持运行时角色的 Amazon EMR 集群，您必须先将运行时角色列表与您的域或用户配置文件相关联，如中所述。[在 Studio 中为 Amazon EMR 集群访问配置 IAM 运行时角色](studio-notebooks-emr-cluster-rbac.md)未完成此步骤将无法建立连接。

   否则，如果您选择的集群不使用 Kerberos、LDAP 或运行时角色身份验证，Studio 或 Studio Classic 会提示您选择凭证类型。您可以选择 **HTTP 基本身份验证**或**没有凭证**。

1. Studio 添加并运行代码块到活动单元格以建立连接。该单元包含连接神奇命令，用于根据身份验证类型将笔记本连接到应用程序。

   连接成功后会显示一条消息，确认连接以及 Spark 应用程序的启动。

## 使用连接命令连接到 Amazon EMR 集群
<a name="connect-emr-clusters-manually"></a>

要建立与 Amazon EMR 集群的连接，可以在笔记本单元格中执行连接命令。

建立连接时，可以使用 [Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)、[Lightweight Directory Access Protocol (LDAP)](https://docs.aws.amazon.com/) 或[运行时 IAM 角色](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-emr-cluster-rbac.html)身份验证。您选择的验证方法取决于集群配置。

您可以参考此示例[在启用 Kerberos 的 Amazon EMR 集群上使用网络负载均衡器访问 Apache Livy](https://aws.amazon.com/blogs/big-data/access-apache-livy-using-a-network-load-balancer-on-a-kerberos-enabled-amazon-emr-cluster/) 来设置使用 Kerberos 身份验证的 Amazon EMR 集群。或者，您可以在 [a sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub ws-samples/ 存储库中使用 Kerberos 或 LDAP 身份验证来浏览 CloudFormation 示例模板。

如果您的管理员启用了跨账户访问权限，则无论您的 Studio Classic 应用程序和集群位于 AWS 同一个账户还是不同的账户中，您都可以从 Studio Classic 笔记本电脑连接到您的 Amazon EMR 集群。

对于以下每种身份验证类型，请使用指定命令从 Studio 或 Studio Classic 笔记本连接到集群。
+ **Kerberos**

  如果您需要跨账户的 Amazon EMR 访问权限，请附加 `--assumable-role-arn` 参数。如果您使用 HTTPS 连接到集群，请附加 `--verify-certificate` 参数。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Kerberos --language python 
  [--assumable-role-arn EMR_access_role_ARN ] 
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **LDAP**

  如果您需要跨账户的 Amazon EMR 访问权限，请附加 `--assumable-role-arn` 参数。如果您使用 HTTPS 连接到集群，请附加 `--verify-certificate` 参数。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Basic_Access --language python 
  [--assumable-role-arn EMR_access_role_ARN ]
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **NoAuth**

  如果您需要跨账户的 Amazon EMR 访问权限，请附加 `--assumable-role-arn` 参数。如果您使用 HTTPS 连接到集群，请附加 `--verify-certificate` 参数。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type None --language python
  [--assumable-role-arn EMR_access_role_ARN ]
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **运行时系统 IAM 角色**

  如果您需要跨账户的 Amazon EMR 访问权限，请附加 `--assumable-role-arn` 参数。如果您使用 HTTPS 连接到集群，请附加 `--verify-certificate` 参数。

  有关使用运行时系统 IAM 角色连接到 Amazon EMR 集群的更多信息，请参阅[在 Studio 中为 Amazon EMR 集群访问配置 IAM 运行时角色](studio-notebooks-emr-cluster-rbac.md)。

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Basic_Access \
  --emr-execution-role-arn arn:aws:iam::studio_account_id:role/emr-execution-role-name
  [--assumable-role-arn EMR_access_role_ARN]
  [--verify-certificate /home/user/certificateKey.pem]
  ```

## 通过 HTTPS 连接到 Amazon EMR 集群。
<a name="connect-emr-clusters-ssl"></a>

如果您已将 Amazon EMR 集群配置为启用过境加密，并将 Apache Livy 服务器配置为 HTTPS，而且希望 Studio 或 Studio Classic 使用 HTTPS 与 Amazon EMR 通信，则需要配置 Studio 或 Studio Classic 以访问证书键。

对于自签名证书或本地证书颁发机构 (CA) 签名证书，您可以通过两个步骤完成此操作：

1. 使用以下选项之一，将证书的 PEM 文件下载到本地文件系统：
   + Jupyter 的内置文件上传功能。
   + 笔记本单元。
   + (仅限 Studio Classic 用户）生命周期配置 (LCC) 脚本。

     有关如何使用 LCC 脚本的信息，请参阅[使用生命周期配置脚本自定义笔记本实例](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)。

1. 在连接命令的 `--verify-certificate` 参数中，通过提供证书的路径来启用证书的验证。

   ```
   %sm_analytics emr connect --cluster-id cluster_id \
   --verify-certificate /home/user/certificateKey.pem ...
   ```

对于公共 CA 颁发的证书，请将 `--verify-certificate` 参数设置为 `true` 来设置证书验证。

或者，您可以通过将 `--verify-certificate` 参数设置为 `false` 来禁用证书验证。

您可以在[使用连接命令连接到 Amazon EMR 集群](#connect-emr-clusters-manually)中找到可用于连接到 Amazon EMR 集群的命令列表。

# 从 Studio 或 Studio Classic 终止 Amazon EMR 集群
<a name="terminate-emr-clusters"></a>

下面的步骤演示了如何从 Studio 或 Studio Classic 笔记本终止 Amazon EMR 集群。

**要终止处于 `Running` 状态的集群，请导航至可用的 Amazon EMR 集群列表。**

1. 在 Studio UI 中，向下滚动到左侧导航菜单中的**数据**节点。

1. 向下导航至 **EMR Clusters** 节点。这将打开一个页面，列出您可以访问的 Amazon EMR 集群。

1. 选择要终止的集群名称，然后选择**终止**。

1. 这将打开一个确认窗口，通知您在终止后，集群上所有待处理的工作或数据将永久丢失。再次选择**终止**进行确认。

# 从 Studio 或 Studio Classic 访问 Spark UI
<a name="studio-notebooks-access-spark-ui"></a>

以下各节提供了从 SageMaker AI Studio 或 Studio Classic 笔记本电脑访问 Spark 用户界面的说明。通过 Spark UI，您可以监控和调试从 Studio 或 Studio Classic 笔记本提交到 Amazon EMR 上运行的 Spark Jobs。SSH 隧道和预签名 URLs 是访问 Spark 界面的两种方式。

## 为 Spark UI 访问设置 SSH 隧道
<a name="studio-notebooks-emr-ssh-tunneling"></a>

要设置 SSH 隧道以访问 Spark UI，请按照此部分中的两个选项之一进行操作。

设置 SSH 隧道的选项：
+ [选项 1：使用本地端口转发设置到主节点的 SSH 隧道](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel-local.html)
+ [选项 2，第 1 部分：使用动态端口转发设置到主节点的 SSH 隧道](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel.html)

  [选项 2，第 2 部分：配置代理设置以查看主节点上托管的网站。](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-proxy.html)

有关查看托管在 Amazon EMR 上的 Web 界面的更多信息，请参阅[查看 Amazon EMR 集群上托管的 Web 界面](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html)。您也可以访问 Amazon EMR 控制台以访问 Spark UI。

**注意**  
即使您无法使用预签名 URLs ，也可以设置 SSH 隧道。

## 预签名 URLs
<a name="studio-notebooks-emr-spark-ui-presigned-urls"></a>

要创建可以 SageMaker 从 Studio 或 Studio Classic 笔记本电脑访问 Amazon EMR 上的 Spark 用户界面的一键式 URLs 操作，您必须启用以下 IAM 权限。选择适用于您的选项：
+ **对于与 SageMaker Studio 或 Studio Classic 笔记本同一个账户的 Amazon EMR 集群：向 Studio 或 St SageMaker udio Classic IAM 执行角色添加以下权限。**
+ **对于位于不同账户（不是 SageMaker Studio 或 Studio Classic 笔记本电脑）中的 Amazon EMR 集群：将以下权限添加到您为其创建的跨账户角色中。[从 Studio 或 Studio Classic 列出 Amazon EMR 集群](discover-emr-clusters.md)**

**注意**  
在以下区域，您可以通过控制台访问预签名 URLs ：  
美国东部（弗吉尼亚州北部）区域
美国西部（北加利福尼亚）区域
加拿大（中部）区域
欧洲地区（法兰克福）区域
欧洲地区（斯德哥尔摩）区域
欧洲地区（爱尔兰）区域
欧洲地区（伦敦）区域
欧洲地区（巴黎）区域
亚太地区（东京）区域
亚太地区（首尔）区域
亚太地区（悉尼）区域
亚太地区（孟买）区域
亚太地区（新加坡）区域
南美洲（圣保罗）

 以下策略允许访问您的执行角色 URLs 的预签名。

```
{
        "Sid": "AllowPresignedUrl",
        "Effect": "Allow",
        "Action": [
            "elasticmapreduce:DescribeCluster",
            "elasticmapreduce:ListInstanceGroups",
            "elasticmapreduce:CreatePersistentAppUI",
            "elasticmapreduce:DescribePersistentAppUI",
            "elasticmapreduce:GetPersistentAppUIPresignedURL",
            "elasticmapreduce:GetOnClusterAppUIPresignedURL"
        ],
        "Resource": [
            "arn:aws:elasticmapreduce:region:account-id:cluster/*"
        ]
}
```