从 SageMaker Studio 或 Studio Classic 连接到 Amazon EMR 集群 - Amazon SageMaker AI

从 SageMaker Studio 或 Studio Classic 连接到 Amazon EMR 集群

数据科学家和数据工程师可以直接从 Studio 用户界面发现并连接到 Amazon EMR 集群。开始之前,请确保已按照 步骤 4:设置权限以启用从 Studio 列出和启动 Amazon EMR 集群 部分所述配置了必要的权限。这些权限赋予 Studio 创建、启动、查看、访问和终止集群的能力。

您可以直接从 Studio UI 将 Amazon EMR 集群连接到新的 JupyterLab Notebook,也可以选择在运行中的 JupyterLab 应用程序的笔记本中启动连接。

重要

您只能为从专用空间启动的 JupyterLab 和 Studio Classic 应用程序发现和连接 Amazon EMR 集群。确保 Amazon EMR 集群与您的 Studio 环境位于同一 AWS 区域。您的 JupyterLab 空间必须使用 1.10 或更高版本的 SageMaker Distribution 映像。

使用 Studio UI 连接到 Amazon EMR 集群

要使用 Studio 或 Studio Classic 用户界面连接集群,可以从 从 Studio 或 Studio Classic 列出 Amazon EMR 集群 中访问的集群列表或 SageMaker Studio 或 Studio Classic 中的笔记本启动连接。

从 Studio UI 将 Amazon EMR 集群连接到新的 JupyterLab Notebook:
  1. 在 Studio UI 的左侧面板中,选择左侧导航菜单中的数据节点。向下导航至 Amazon EMR 应用程序和集群。这将打开一个页面,列出可以从 Studio 的 Amazon EMR 集群标签访问的 Amazon EMR 集群。

    注意

    如果您或您的管理员配置了允许跨账户访问 Amazon EMR 集群的权限,您就可以查看已授予 Studio 访问权限的所有账户的集群综合列表。

  2. 选择要连接到新笔记本的 Amazon EMR 集群,然后选择附加到笔记本。这会打开一个模式窗口,显示您的 JupyterLab 空间列表。

    • 选择要启动 JupyterLab 应用程序的空间,然后选择打开笔记本。这将从您选择的空间启动一个 JupyterLab 应用程序,并打开一个新笔记本。

      注意

      Studio Classic 用户需要选择映像和内核。有关支持的映像列表,请参阅支持从 Studio 或 Studio Classic 连接到 Amazon EMR 集群的映像和内核自带映像

    • 或者,您也可以选择模式窗口顶部的创建新空间按钮,创建一个新的专用空间。输入空间名称,然后选择创建空间并打开笔记本。这会创建一个具有默认实例类型和最新 SageMaker 分发映像的专用空间,启动 JupyterLab 应用程序,并打开一个新笔记本。

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

    如果您选择的集群支持运行时角色,请选择 Amazon EMR 集群在运行作业时可承担的 IAM 角色名称。

    重要

    要将 JupyterLab Notebook 成功连接到支持运行时角色的 Amazon EMR 集群,首先必须将运行时角色列表与域或用户配置文件关联起来,如 在 Studio 中为 Amazon EMR 集群访问配置 IAM 运行时角色 所述。未完成此步骤将无法建立连接。

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

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

或者,也可以通过 JupyterLab 或 Studio Classic 笔记本连接到集群。
  1. 选择笔记本顶部的集群按钮。这会打开一个模式窗口,列出处于 Running 状态、可以访问的 Amazon EMR 集群。您可以在 Amazon EMR 集群选项卡中的 Running Amazon EMR 集群。

    注意

    对于 Studio Classic 用户来说,只有在使用来自 支持从 Studio 或 Studio Classic 连接到 Amazon EMR 集群的映像和内核自带映像 的内核时,集群才会显示。如果您在笔记本顶部未看到集群,请确保您的管理员已配置了集群的可发现性并切换到支持的内核。

  2. 选择要连接到的集群,然后选择连接

  3. 如果您将 Amazon EMR 集群配置为支持运行时 IAM 角色,则可以从 Amazon EMR 执行角色下拉菜单中选择您的角色。

    重要

    要将 JupyterLab Notebook 成功连接到支持运行时角色的 Amazon EMR 集群,首先必须将运行时角色列表与域或用户配置文件关联起来,如 在 Studio 中为 Amazon EMR 集群访问配置 IAM 运行时角色 所述。未完成此步骤将无法建立连接。

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

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

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

使用连接命令连接到 Amazon EMR 集群

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

建立连接时,可以使用 KerberosLightweight Directory Access Protocol (LDAP)运行时 IAM 角色身份验证。您选择的验证方法取决于集群配置。

您可以参考此示例在启用 Kerberos 的 Amazon EMR 集群上使用网络负载均衡器访问 Apache Livy 来设置使用 Kerberos 身份验证的 Amazon EMR 集群。或者,您也可以探索在 aws-samples/sagemaker-studio-emr GitHub 存储库中使用 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 运行时角色

    %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 集群。

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

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

  1. 使用以下选项之一,将证书的 PEM 文件下载到本地文件系统:

  2. 在连接命令的 --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 集群中找到可用于连接到 Amazon EMR 集群的命令列表。