

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

# EMR Studio 功能、要求和限制
<a name="emr-studio-considerations"></a>

本主题包括使用 Amazon EMR Studio 时要考虑的事项，包括有关区域和工具、集群要求和技术限制的注意事项。

## 注意事项
<a name="emr-studio-considerations-general"></a>

使用 EMR Studio 时请考虑以下事项：
+ EMR Studio 提供以下版本： AWS 区域
  + 美国东部（俄亥俄州）(us-east-2)
  + 美国东部（弗吉尼亚州北部）(us-east-1)
  + 美国西部（北加利福尼亚）(us-west-1)
  + 美国西部（俄勒冈州）(us-west-2)
  + 非洲（开普敦）(af-south-1)
  + 亚太地区（香港）(ap-east-1)
  + 亚太地区（雅加达）（ap-southeast-3）\$1
  + 亚太地区（墨尔本）（ap-southeast-4）\$1
  + 亚太地区（孟买）(ap-south-1)
  + 亚太地区（大阪）（ap-northeast-3）\$1
  + 亚太地区（首尔）(ap-northeast-2)
  + 亚太地区（新加坡）(ap-southeast-1)
  + 亚太地区（悉尼）(ap-southeast-2)
  + 亚太地区（东京）(ap-northeast-1)
  + 加拿大（中部）(ca-central-1)
  + 欧洲地区（法兰克福）(eu-central-1)
  + 欧洲地区（爱尔兰）(eu-west-1) 
  + 欧洲地区（伦敦）(eu-west-2)
  + 欧洲地区（米兰）(eu-south-1)
  + 欧洲（巴黎）（eu-west-3）
  + 欧洲（西班牙）(eu-south-2)
  + 欧洲地区（斯德哥尔摩）(eu-north-1)
  + 欧洲（苏黎世）（eu-central-2）\$1
  + 以色列（特拉维夫）(il-central-1)\$1
  + 中东（阿联酋）（me-central-1）\$1
  + 南美洲（圣保罗）（sa-east-1）
  + AWS GovCloud (美国东部) (gov-us-east-1)
  + AWS GovCloud (美国西部) (gov-us-west-1)

  \$1 这些区域不支持实时 Spark UI。
+ 要让用户为工作区配置在 Ama EC2 zon 上运行的新 EMR 集群，您可以将 EMR Studio 与一组集群模板相关联。管理员可以使用 Service Catalog 定义集群模板，并且可以选择用户或组是可以访问 Studio 中的集群模板，还是不能访问集群模板。
+ 当您定义对存储在 Amazon S3 中的笔记本文件或从中读取密钥的访问权限时 AWS Secrets Manager，请使用 Amazon EMR 服务角色。这些权限不支持会话策略。
+ 您可以创建多个 EMR 工作室来控制对不同的 EMR 集群的访问。 VPCs
+ 使用在 AWS CLI EKS 集群上设置 Amazon EMR。然后，您可以使用 Studio 界面通过托管式终端节点将集群附加到 Workspaces，以运行 Notebook 任务。
+ 在 Amazon EMR 中使用可信身份传播时，还需要注意一些其他事项，这些事项也同样适用于 EMR Studio。有关更多信息，请参阅 [Amazon EMR 与 Identity Center 集成的注意事项和限制](emr-idc-considerations.md)。
+ EMR Studio 不支持以下 Python 魔术命令：
  + `%alias`
  + `%alias_magic`
  + `%automagic`
  + `%macro`
  + `%%js`
  + `%%javascript`
  + 使用 `%configure` 修改 `proxy_user`
  + 使用 `%env` 或 `%set_env` 修改 `KERNEL_USERNAME`
+ EKS 集群上的 Amazon EMR 不支持 EMR Studio 的 SparkMagic 命令。
+ 要在 Notebook 单元格中编写多行 Scala 语句，请确保除最后一行以外的所有其他行均以句点结束。下面的示例对多行 Scala 语句使用了正确的句法。

  ```
  val df = spark.sql("SELECT * from table_name).
          filter("col1=='value'").
          limit(50)
  ```
+ 为了提高可能会在 Amazon EMR 中使用的非控制台应用程序的安全性，应用程序托管域会注册到公共后缀列表（PSL）中。这些托管域的示例包括以下各项：`emrstudio-prod.us-east-1.amazonaws.com`、`emrnotebooks-prod.us-east-1.amazonaws.com`、`emrappui-prod.us-east-1.amazonaws.com`。为进一步增强安全性，如果您需要在默认域名中设置敏感 Cookie，我们建议您使用带 `__Host-` 前缀的 Cookie。这将有助于保护您的域，防范跨站点请求伪造（CSRF）攻击。有关更多信息，请参阅 *Mozilla 开发者网络*中的 [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 页面。
+ Amazon EMR Studio 工作空间和持久用户界面终端节点使用经过 FIPS 140 验证的加密模块 encryption-in-transit，这使得受监管的工作负载可以更轻松地采用该服务。有关 Persistent UI 端点的更多背景信息，请参阅[在 Amazon EMR 中查看持久性应用程序用户界面](https://docs.aws.amazon.com/emr/latest/ManagementGuide/app-history-spark-UI.html)。有关笔记本的更多背景信息，请参阅 [Amazon EMR Notebooks 概述](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks.html)。

## 已知问题
<a name="emr-studio-known-issues"></a>
+ 使用启用了可信身份传播的 IAM Identity Center 的 EMR Studio 只能与同样使用可信身份传播的 EMR 集群关联。
+ 在创建 Studio 之前，请确保在浏览器中禁用了 FoxyProxy 或 SwitchyOmega 等代理管理工具。当您选择 **Create Studio (创建 Studio)** 时，活动代理可能会导致错误，并导致出现 **Network Failure (网络故障)** 错误消息。
+ 由于超时问题，在 Amazon EMR on EKS 集群上运行的内核会无法启动。如果您在启动内核时遇到错误或问题，请关闭 Notebook 文件、关闭内核，然后重新打开 Notebook 文件。
+ 当您使用 Amazon EMR on EKS 集群时，**Restart kernel (重新启动内核)** 操作将无法按预期工作。在您选择 **Restart kernel (重新启动内核)** 后，请刷新 Workspace 以使重启生效。
+ 如果 Workspace 未附加到集群，则当 Studio 用户打开 Notebook 文件并尝试选择内核时会显示一条错误消息。您可以通过选择 **Ok (确定)** 忽略此错误消息，但您必须先将 Workspace 附加到集群并选择内核，然后才能运行 Notebook 代码。
+ 当您使用具有[安全配置](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html)的 Amazon EMR 6.2.0 来设置集群安全时，Workspace 界面显示为空白并且无法按预期工作。如果您要为集群的 EMRFS 配置数据加密或 Amazon S3 授权，我们建议您使用其他受支持的 Amazon EMR 版本。EMR Studio 适用于 Amazon EMR 版本 5.32.0（Amazon EMR 5.x 系列）和 6.2.0（Amazon EMR 6.x 系列）及更高版本。
+ 当您[调试 Amazon EC2 任务上运行的 Amazon EMR](emr-studio-debug.md#emr-studio-debug-ec2)时，指向集群上 Spark UI 的链接可能无法正常工作或无法显示。要重新生成链接，请创建一个新的 Notebook 单元格并运行`%%info`命令。
+ Jupyter Enterprise Gateway 不会在以下 Amazon EMR 发行版本中清理集群主节点上的空闲内核：5.32.0、5.33.0、6.2.0 和 6.3.0。空闲内核消耗计算资源，这可能会导致长时间运行的集群出现故障。您可以使用以下示例脚本为 Jupyter Enterprise Gateway 配置空闲内核清理。您可以[使用 SSH 连接到 Amazon EMR 集群主节点](emr-connect-master-node-ssh.md)，或以步骤的形式提交脚本。有关更多信息，请参阅[在 Amazon EMR 集群上运行命令和脚本](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html)。

  ```
  #!/bin/bash
  sudo tee -a /emr/notebook-env/conf/jupyter_enterprise_gateway_config.py << EOF
  c.MappingKernelManager.cull_connected = True
  c.MappingKernelManager.cull_idle_timeout = 10800
  c.MappingKernelManager.cull_interval = 300
  EOF
  sudo systemctl daemon-reload
  sudo systemctl restart jupyter_enterprise_gateway
  ```
+ 当您将自动终止策略与 Amazon EMR 版本 5.32.0、5.33.0、6.2.0 或 6.3.0 配合使用时，Amazon EMR 会将集群标记为空闲，即使您有活动的 Python3 内核，也有可能自动终止该集群。这是因为执行 Python3 内核不会在该集群上提交 Spark 作业。要将自动终止与 Python3 内核配合使用，我们建议您使用 Amazon EMR 版本 6.4.0 或更高版本。有关自动终止的更多信息，请参阅 [使用自动终止策略进行 Amazon EMR 集群清理](emr-auto-termination-policy.md)。
+ 当你习惯`%%display`在表格 DataFrame 中显示 Spark 时，很宽的表可能会被截断。您可以右键单击输出，然后选择 **Create New View for Output**（为输出创建新视图），以获取输出的可滚动视图。
+ 启动基于 Spark 的内核（例如 PySpark Spark 或 SparkR）会启动 Spark 会话，而在笔记本中运行单元会将该会话中的 Spark 作业排入队列。当您中断正在运行的单元格时，Spark 作业将继续运行。要停止 Spark 作业，您应该使用集群上的 Spark UI。有关如何连接到 Spark UI 的说明，请参阅 [使用 EMR Studio 调试应用程序和任务](emr-studio-debug.md)。
+ 在中以 root 用户身份使用 Amazon EMR Studio 工作空间 AWS 账户 会导致错误。`403: Forbidden`这是因为 Amazon EMR 中的 Jupyter Enterprise Gateway 配置不允许访问根用户。建议您不要使用根用户执行日常任务。有关其他身份验证选项，请参阅 [AWS Identity and Access Management for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-access-iam.html)。

## 功能限制
<a name="emr-studio-limitations"></a>

Amazon EMR Studio 不支持以下 Amazon EMR 功能：
+ 在使用指定 Kerberos 身份验证的安全配置创建的 EMR 集群上附加和运行任务
+ 具有多个主节点的集群
+ 使用基于 AWS Graviton2 的亚马逊 EC2 实例的集群 EMR 6.x 版本低于 6.9.0，5.x 版本低于 5.36.1 

使用可信身份传播的 Studio 不支持以下功能：
+ 在不使用模板的情况下创建 EMR 集群。
+ 使用 EMR Serverless 应用程序。
+ 启动 EKS 上的 Amazon EMR 集群。
+ 使用运行时系统角色。
+ 启用 SQL Explorer 或 Workspace 协作。

## EMR Studio 的 Service Limits
<a name="emr-studio-default-limits"></a>

下表呈现了 EMR Studio 的服务限制。


****  

| Item | 限制 | 
| --- | --- | 
| EMR Studio | 每个 AWS 账户最多 100 个 | 
| 子网 | 每个 EMR Studio 最多关联 5 个 | 
| IAM Identity Center 组 | 每个 EMR Studio 最多分配 5 个 | 
| IAM Identity Center 用户 | 每个 EMR Studio 最多分配 100 个 | 

# EMR Studio 的 VPC 和子网最佳实践
<a name="emr-studio-vpc-subnet-best-practices"></a>

使用以下最佳实践为 EMR Studio 设置带有子网的 Amazon Virtual Private Cloud （亚马逊 VPC）：
+ 您最多可以在 VPC 中指定五个子网与 Studio 关联。我们建议您在不同的可用区中提供多个子网，以便支持 Workspace 可用性，并为 Studio 用户提供跨不同可用区访问集群的权限。要了解有关使用 VPCs、子网和可用区的更多信息，请参阅*Amazon Virtual Private Cloud 用户*指南中的[VPCs 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。
+ 您指定的子网应能相互通信。
+ 要让用户将 Workspace 链接到公共托管的 Git 存储库，您应仅指定有权通过网络地址转换 (NAT) 访问互联网的私有子网。有关为 Amazon EMR 设置私有子网的更多信息，请参阅 [私有子网](emr-clusters-in-a-vpc.md#emr-vpc-private-subnet)。
+ 当您将 Amazon EMR on EKS 与 EMR Studio 配合使用时，您的 Studio 与用于注册虚拟集群的 Amazon EKS 集群之间必须有*至少一个公有子网*。否则，您的托管式终端节点将不会作为选项显示在 Studio Workspace 中。您可以创建 Amazon EKS 集群并将其与属于 Studio 的子网关联，或创建 Studio 并指定您的 EKS 集群子网。
+ 如果计划通过 EMR Studio 使用 Amazon EMR on EKS，请选择同一 VPC 作为您的 Amazon EKS 集群 Worker 节点。

# Amazon EMR 集群要求
<a name="emr-studio-cluster-requirements"></a>

**在亚马逊上运行的亚马逊 EMR 集群 EC2**

您为 EMR Studio 工作区创建的所有 EC2 在亚马逊上运行的 Amazon EMR 集群都必须满足以下要求。您使用 EMR Studio 界面创建的集群会自动满足这些要求。
+ 集群必须使用 Amazon EMR 5.32.0（Amazon EMR 5.x 系列）或 6.2.0（Amazon EMR 6.x 系列）及更高版本。您可以使用 Amazon EMR 控制台或软件开发工具包创建集群 AWS Command Line Interface，然后将其连接到 EMR Studio 工作区。Studio 用户也可以在创建 Amazon EMR Workspace 或在其中工作时预置和附加集群。有关更多信息，请参阅 [将计算资源附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md)。
+ 集群必须在 Amazon Virtual Private Cloud 中启动。不支持 EC2-Classic 平台。
+ 集群必须安装有 Spark、Livy 和 Jupyter Enterprise Gateway。如果您计划将集群用于 SQL Explorer，则应同时安装 Presto 和 Spark。
+ 要使用 SQL Explorer，集群必须使用 Amazon EMR 版本 5.34.0 或更高版本或者 6.4.0 或更高版本并安装了 Presto。如果要将 Glue 数据 AWS 目录指定为 Presto 的 Hive 元数据库，则必须在集群上对其进行配置。有关更多信息，请参阅[将 Presto 与 AWS Glue 数据目录结合使用](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html)。
+ 集群必须在网络地址转换 (NAT) 的私有子网中启动，公共托管的 Git 存储库与 EMR Studio 才能配合使用。

当您使用 EMR Studio 时，我们建议使用以下集群配置。
+ 将 Spark 会话的部署模式设置为集群模式。集群模式将应用程序主进程放置在核心节点上，而不是集群的主节点上。这样做可以减轻主节点的潜在内存压力。有关更多信息，请参阅 Apache Spark 文档中的[集群模式概述](https://spark.apache.org/docs/latest/cluster-overview.html)。
+ 如下面的示例配置所示，将 Livy 超时从默认的 1 小时更改为 6 小时。

  ```
  {
      "classification":"livy-conf",
          "Properties":{
              "livy.server.session.timeout":"6h",
              "livy.spark.deploy-mode":"cluster"
          }
  }
  ```
+ 创建包含多达 30 个实例的多样化实例队列，并在竞价型实例队列中选择多种实例类型。例如，您可以为 Spark 工作负载指定以下内存优化的实例类型：r5.2x、r5.4x、r5.8x、r5.12x、r5.16x、r4.2x、r4.4x、r4.8x、r4.12 等。有关更多信息，请参阅 [规划和配置 Amazon EMR 集群的实例集](emr-instance-fleet.md)。
+ 使用竞价型实例的容量优化分配策略，帮助 Amazon EMR 根据亚马逊提供的实时容量见解做出有效的实例选择。 EC2有关更多信息，请参阅 [实例集的分配策略](emr-instance-fleet.md#emr-instance-fleet-allocation-strategy)。
+ 在集群上启用托管式扩缩。将最大核心节点参数设置为您计划使用的最小持久性容量，并在竞价型实例上运行的充分多样化的任务队列上配置扩缩以节省成本。有关更多信息，请参阅 [在 Amazon EMR 中使用托管扩展](emr-managed-scaling.md)。

我们还会敦促您始终启用 Amazon EMR Block Public Access（阻止公开访问），同时限制入站 SSH 流量进入可信来源。对集群的入站访问允许用户在集群上运行 Notebook。有关更多信息，请参阅[使用 Amazon EMR 阻止公有访问](emr-block-public-access.md)和[使用 Amazon EMR 集群的安全组控制网络流量](emr-security-groups.md)。

**Amazon EMR on EKS 集群**

除了在亚马逊上运行的 EMR 集群外 EC2，您还可以使用在 EMR Studio 的 EKS 集群上设置和管理 Amazon EMR。 AWS CLI使用以下准则设置 Amazon EMR on EKS 集群：
+ 针对 Amazon EMR on EKS 集群创建托管式 HTTPS 终端节点。用户将 Workspace 附加到托管式终端节点。您用于注册虚拟集群的 Amazon Elastic Kubernetes Service (EKS) 集群必须具有私有子网才能启用托管式终端节点。
+ 如果您想使用公共托管的 Git 存储库，请使用具有至少一个私有子网和网络地址转换 (NAT) 的 Amazon EKS 集群。
+ 避免使用[亚马逊 EKS 优化的 Arm Amazon Linux AMIs](https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html#arm-ami)，EKS 托管终端节点上不支持亚马逊 EMR。
+ 避免使用 AWS Fargate仅限使用不支持的 Amazon EKS 集群。