使用 EMR 笔记本时的注意事项 - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 EMR 笔记本时的注意事项

在使用 EMR 笔记本 创建集群和开发解决方案时,请考虑以下要求。

集群要求

  • 启用 Amazon EMR 阻止公有访问 – 通过对集群进行入站访问,集群用户能够执行笔记本内核。确保只有授权用户才能访问集群。我们强烈建议您将阻止公有访问保持启用状态,并将入站 SSH 流量仅限于可靠来源。有关更多信息,请参阅 使用 Amazon EMR 阻止公有访问使用安全组控制网络流量

  • 使用可兼容的集群 – 附加到笔记本的集群必须满足以下要求:

    • 仅支持使用 Amazon EMR 创建的集群。您可以在 Amazon EMR 中单独创建集群,然后附加 EMR 笔记本,也可以在创建 EMR 笔记本 时创建可兼容的集群。

    • 仅支持使用 Amazon EMR 发布版本 5.18.0 及更高版本创建的集群。请参阅 集群发布版本的功能差异

    • 不支持使用带 AMD EPYC 处理器的 Amazon EC2 实例(例如 m5a.* 和 r5a.* 实例类型)创建的集群。

    • SetVisibleToAllUsers 设置为 true 时创建的集群不支持 EMR 笔记本。默认情况下,SetVisibleToAllUsersfalse

    • 必须在 EC2-VPC 内启动集群。支持公有和私有子网。不支持 EC2-Classic 平台。

    • 启动的集群必须安装有 Hadoop、Spark 和 Livy。可以安装其他应用程序,但 EMR 笔记本 目前仅支持 Spark 集群。

    • 不支持使用 Kerberos 身份验证的集群。

    • 与 AWS Lake Formation 集成的集群仅支持安装笔记本范围的库。不支持在集群上安装内核和库。

    • 不支持具有多个主节点的集群。

集群发布版本的功能差异

我们强烈建议您将 EMR 笔记本 与使用 Amazon EMR 发布版本 5.30.0 或更高版本(不包括 6.0.0)创建的集群结合使用。对于这些集群版本,EMR 笔记本 在附加的 Amazon EMR 集群上运行内核。内核和库可直接安装到集群主节点上。将 EMR 笔记本 与这些集群版本结合使用具有以下好处:

  • 提高了性能 – 笔记本内核在具有所选 EC2 实例类型的集群上运行。早期版本在无法调整大小、访问或自定义的专用实例上运行内核。

  • 能够添加和自定义内核 – 您可以使用 condapip 连接到集群来安装内核包。此外,支持在笔记本单元中使用终端命令来安装 pip。在早期版本中,仅预安装的内核可用(Python、PySpark、Spark 和 SparkR)。有关更多信息,请参阅在集群主节点上安装内核和 Python 库

  • 能够安装 Python 库 – 您可以使用 condapip 在集群主节点上安装 Python 库。我们建议使用 conda。对于早期版本,仅支持适用于 PySpark 的笔记本范围的库

集群版本支持的 EMR 笔记本 功能
集群发布版本 适用于 PySpark 的笔记本范围的库 集群上的内核安装 主节点上的 Python 库安装

版本 5.18.0 之前的版本

不支持 EMR 笔记本

5.18.0–5.25.0

5.26.0–5.29.0

5.30.0

6.0.0

同时附加的笔记本的限制

创建支持笔记本的集群时,请考虑集群主节点的 EC2 实例类型。此 EC2 实例的内存限制决定了可以同时准备好在集群上运行代码和查询的笔记本的数量。

主节点 EC2 实例类型 笔记本数量

*.medium

2

*.large

4

*.xlarge

8

*.2xlarge

16

*.4xlarge

24

*.8xlarge

24

*.16xlarge

24

Jupyter Notebook 和 Python 版本

EMR 笔记本 运行 Jupyter Notebook 版本 6.0.2 和 Python 3.6.5,而不管附加的集群的 Amazon EMR 发布版如何。

如果在 Amazon S3 中指定一个加密位置来存储笔记本文件,则必须将 EMR 笔记本 的服务角色设置为密钥用户。默认服务角色为 EMR_Notebooks_DefaultRole。如果您使用 AWS KMS 密钥进行加密,请参阅《AWS Key Management Service Developer Guide》中的使用 AWS KMS 中的密钥策略以及有关添加密钥用户的支持文章