使用 EMR Notebooks - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 EMR Notebooks

注意

EMR Notebooks 在新控制台中作为 Amazon EMR Studio Workspaces 提供。您仍然可以在旧控制台中使用现有笔记本,但无法在其中创建新笔记本。新控制台中的创建 Workspace 按钮将取代此功能。要访问或创建 Workspaces,EMR Notebooks 用户需要额外的 IAM 角色权限。有关更多信息,请参阅 Amazon EMR Notebooks are Amazon EMR Studio Workspaces in new console(Amazon EMR Notebooks 在新控制台中为 Amazon EMR Studio Workspaces)和 What's new in the console?(控制台中有哪些新功能?)

创建 EMR 笔记本后,在很短的时间内便可启动该笔记本。Notebooks (笔记本) 列表中的 Status (状态) 显示为 Starting (正在启动)。笔记本的状态为 Ready (就绪) 时,便可将其打开。如果您随笔记本一同创建了集群,则笔记本变为 Ready (就绪) 状态可能需要较长的时间。

提示

刷新浏览器或选择笔记本列表上方的刷新图标来刷新笔记本状态。

了解笔记本状态

EMR 笔记本可以在 Notebooks (笔记本) 列表中具有以下 Status (状态)

状态 含义

Ready (就绪)

您可以使用笔记本编辑器打开笔记本。笔记本的状态为 Ready (就绪) 时,您可以将其停止或删除。要更改集群,您必须先停止笔记本。如果处于 Ready (就绪) 状态的笔记本长时间空闲,它将自动停止。

Starting (正在启动)

正在创建笔记本并将其附加到集群。笔记本处于“Starting (正在启动)”状态时,您无法打开笔记本编辑器,也无法停止、删除它或更改集群。

Pending (待处理)

已创建笔记本,正在等待与待完成的集群集成。集群可能仍在预配置资源,也可能在响应其它请求。您可以在本地模式中使用笔记本打开笔记本编辑器。依赖于集群过程的任何代码均不会执行和失败。

Stopping (正在停止)

正在关闭笔记本或正在终止该笔记本附加到的集群。笔记本处于“Stopping (正在停止)”状态时,您无法打开笔记本编辑器,也无法停止、删除它或更改集群。

Stopped (已停止)

笔记本已关闭。只要集群仍在运行,您就可以在同一个集群上启动笔记本。您可以更改集群,也可以删除该集群。

Deleting (正在删除)

正在从可用集群列表中删除该集群。笔记本文件NotebookName.ipynb 会保留在 Amazon S3 中,并继续产生适用的存储费用。

使用笔记本编辑器

使用 EMR 笔记本的一项优势是,您可以直接从控制台启动 Jupyter 或 JupyterLab 中的笔记本。

对于 EMR Notebooks,从 Amazon EMR 控制台访问的笔记本编辑器就是您熟悉的开源 Jupyter notebook 编辑器或 JupyterLab。由于笔记本编辑器是在 Amazon EMR 控制台内启动的,与使用 Amazon EMR 集群上托管的笔记本相比,配置访问权限更高效。您无需将用户客户端配置为通过 SSH、安全组规则以及代理配置进行 Web 访问。如果用户具有足够的权限,他们只需在 Amazon EMR 控制台内打开笔记本编辑器即可。

一次只能有一个用户从 Amazon EMR 中打开 EMR 笔记本。如果其它用户尝试打开已打开的 EMR 笔记本,则会发生错误。

重要

Amazon EMR 为每个笔记本编辑器会话创建一个唯一的预签名 URL,该 URL 仅在短时间内有效。我们建议您不要共享笔记本编辑器 URL。这样做会产生安全风险,因为 URL 的收件人会采用您的权限来编辑笔记本并在 URL 的生命周期内运行笔记本代码。如果其他人需要访问笔记本,请通过权限策略向其用户提供权限,并确保 EMR Notebooks 的服务角色有权访问 Amazon S3 位置。有关更多信息,请参阅EMR 笔记本安全性和访问控制EMR Notebooks 的服务角色

为 EMR 笔记本打开笔记本编辑器
  1. Notebooks(笔记本)列表中选择 Status(状态)为 Ready(就绪)或 Pending(待处理)的笔记本。

  2. 选择 Open in JupyterLab (在 JupyterLab 中打开)Open in Jupyter (在 Jupyter 中打开)

    JupyterLab 或 Jupyter notebook 编辑器将在一个新的浏览器选项卡中打开。

  3. Kernel (内核) 菜单中,选择 Change kernel (选择内核),然后选择与您的编程语言相对应的内核。

    现在,您已准备就绪,可以从笔记本编辑器编写和运行代码了。

保存笔记本内容

在笔记本编辑器中执行操作时,笔记本单元内容和输出在 Amazon S3 中会自动定期保存到笔记本文件中。自上次编辑单元以来未进行任何更改的笔记本在编辑器的笔记本名称旁会显示 (autosaved) ([自动保存])。如果更改尚未保存,系统将显示 unsaved changes (未保存的更改)

您可以手动保存笔记本。从 File(文件)菜单中,选择 Save and Checkpoint(保存和检查点)或按 CTRL+S。这会在 Amazon S3 的笔记本文件夹中 checkpoints 文件夹下创建一个名为 NotebookName.ipynb 的文件。例如,s3://MyBucket/MyNotebookFolder/NotebookID/checkpoints/NotebookName.ipynb。该位置只保存最新的检查点文件。

更改集群

您可以更改已附加 EMR 笔记本的集群,无需更改笔记本本身的内容。您可以只针对状态为 Stopped (已停止) 的笔记本更改集群。

更改 EMR 笔记本的集群
  1. 如果要更改的笔记本正在运行中,请从 Notebooks (笔记本) 列表中选择该笔记本,然后选择 Stop (停止)

  2. 如果笔记本状态为 Stopped (已停止),请从 Notebooks (笔记本) 列表中选择该笔记本,然后选择 View details (查看详细信息)

  3. 选择 Change cluster (更改集群)

  4. 如果您有一个正在运行 Hadoop、Spark 和 Livy 且要向其附加笔记本的活动集群,保留其默认设置,然后从列表中选择一个集群。列表中只列出符合要求的集群。

    —或者—

    选择 Create a cluster (创建集群),然后选择集群选项。有关更多信息,请参阅集群要求

  5. Security groups (安全组) 选择一个选项,然后选择 Change cluster and start notebook (更改集群并启动笔记本)

删除笔记本和笔记本文件

使用 Amazon EMR 控制台删除 EMR 笔记本时,您将从可用笔记本列表中删除该笔记本。但是,笔记本文件会保留在 Amazon S3 中,并继续产生存储费用。

删除笔记本并删除关联文件
  1. 通过以下链接打开 Amazon EMR 控制台:https://console.aws.amazon.com/elasticmapreduce/

  2. 选择 Notebooks (笔记本),从列表中选择您的笔记本,然后选择 View details (查看详细信息)

  3. 选择 Notebook location (笔记本位置) 旁边的文件夹图标并复制采用格式 s3://MyNotebookLocationPath/NotebookID/URL

  4. 选择 Delete (删除)

    系统将从列表中删除该笔记本,您无法再查看笔记本详细信息。

  5. 有关说明,请参阅《Amazon Simple Storage Service 用户指南》中的如何从 S3 存储桶中删除文件夹?。从步骤 3 导航到存储桶和文件夹。

    —或者—

    如果您已安装 Amazon CLI,请打开命令提示符窗口并键入此段落末尾处的命令。将 Amazon S3 位置替换为您在上面复制的位置。务必使用有权限删除该 Amazon S3 位置的用户的访问密钥配置 Amazon CLI。有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的配置 Amazon CLI

    aws s3 rm s3://MyNotebookLocationPath/NotebookID

共享笔记本文件

每个 EMR 笔记本都作为名为 NotebookName.ipynb 的文件保存到 Amazon S3。只要笔记本文件与 EMR Notebooks 所基于的同一 Jupyter notebook 版本兼容,您就可以将该笔记本作为 EMR 笔记本进行打开。

打开来自其它用户的笔记本文件的最简单方法是,将来自其它用户的 *.ipynb 文件保存到您的本地文件系统,然后使用 Jupyter 和 Jupyterlab 编辑器中的上载功能。

您可以通过此过程使用其它人共享的 EMR 笔记本、Jupyter 社区中共享的笔记本,或还原从控制台删除的笔记本(如果您仍具有该笔记本文件)。

将不同的笔记本文件用作 EMR 笔记本的基础
  1. 继续操作之前,针对要使用的所有笔记本关闭笔记本编辑器,然后停止笔记本(如果是 EMR 笔记本)。

  2. 创建一个 EMR 笔记本并为其输入一个名称。您为该笔记本输入的名称将是您需要替换的文件的名称。新文件名称必须与此文件名称完全匹配。

  3. 记下您为该笔记本选择的 Amazon S3 位置。您替换的文件位于路径和文件名采用以下格式的文件夹中:s3://MyNotebookLocation/NotebookID/MyNotebookName.ipynb

  4. 停止笔记本。

  5. 使用完全相同的名称将 Amazon S3 位置中的旧笔记本文件替换为新的笔记本文件。

    以下适用于 Amazon S3 的 Amazon CLI 命令将保存在名为 SharedNotebook.ipynb 的本地计算机上的文件替换为名为 MyNotebook、ID 为 e-12A3BCDEFJHIJKLMNO45PQRST 的 EMR Notebooks,并使用 Amazon S3 中指定的 MyBucket/MyNotebooksFolder 创建。有关使用 Amazon S3 控制台复制和替换文件的信息,请参阅《Amazon Simple Storage Service 用户指南》中的上传、下载和管理对象

    aws s3 cp SharedNotebook.ipynb s3://MyBucket/MyNotebooksFolder/-12A3BCDEFJHIJKLMNO45PQRST/MyNotebook.ipynb