Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

JupyterHub 配置和管理

JupyterHub 和相关组件在名为 jupyterhub、运行 Ubuntu 操作系统的 Docker 容器内运行。有多种方法可用于管理此容器内运行的组件。

警告

在此容器内执行的自定义将在此容器重启后不复存在。建议为容器配置编写脚本或以其他方式实现容器配置的自动化,以便可以更轻松地重现自定义。

使用命令行管理

当使用 SSH 连接到主节点后,可以通过使用 Docker 命令行界面 (CLI) 并按名称 (jupyterhub) 或 ID 指定容器来发出命令。例如,sudo docker exec jupyterhub command 将运行容器内运行的操作系统或应用程序识别的命令。可以使用此方法将用户添加到操作系统和在 Docker 容器内安装其他应用程序和库。例如,默认容器映像包括用于安装软件包的 Conda,因此可能在主节点命令行上运行以下命令以在容器内安装应用程序 Keras:

sudo docker exec jupyterhub conda install keras

通过提交步骤管理

步骤是将工作提交到集群的一种方式。可以在启动集群时提交步骤,也可以将步骤提交给正在运行的集群。可以使用 command-runner.jar 将在命令行上运行的命令作为步骤提交。有关更多信息,请参阅 Amazon EMR 管理指南中的使用 CLI 和控制台执行步骤Command Runner

例如,可以在本地计算机上使用以下 AWS CLI 命令安装 Keras,方式与之前示例中通过主节点的命令行执行的方式一样:

aws emr add-steps --cluster-id MyClusterID --steps Name="Command Runner",Jar="command-runner.jar",Args="/usr/bin/sudo","/usr/bin/docker","exec","jupyterhub","conda","install","keras"

此外,可以为步骤的序列编写脚本,并将脚本上传到 Amazon S3,然后在创建集群或将脚本作为步骤添加时使用 script-runner.jar 运行脚本。有关更多信息,请参阅在集群中运行脚本。有关示例,请参阅示例:用于添加多个用户的清除脚本

使用 REST API 管理

适用于 JupyterHub 的 Jupyter、JupyterHub 和 HTTP 代理提供可用于发送请求的 REST API。要将请求发送到 JupyterHub,必须随请求传递一个 API 令牌。可以从主节点命令行使用 curl 命令执行 REST 命令。有关更多信息,请参阅以下资源:

以下示例演示了使用 JupyterHub 的 REST API 获取用户列表。此命令传递以前生成的管理员令牌并使用 JupyterHub 的默认端口 9443,以将输出传输到 jq 来方便查看:

curl -XGET -s -k https://$HOST:9443/hub/api/users \ -H "Authorization: token $admin_token" | jq