JupyterHub 配置和管理
JupyterHub 和相关组件在名为 jupyterhub
、运行 Ubuntu 操作系统的 Docker 容器内运行。有多种方法可用于管理此容器内运行的组件。
警告
在此容器内执行的自定义将在此容器重启后不复存在。建议为容器配置编写脚本或以其它方式实现容器配置的自动化,以便可以更轻松地重现自定义。
使用命令行管理
当使用 SSH 连接到主节点后,可以通过使用 Docker 命令行界面 (CLI) 并按名称 (jupyterhub
) 或 ID 指定容器来发出命令。例如,sudo docker exec jupyterhub
将运行容器内运行的操作系统或应用程序识别的命令。可以使用此方法将用户添加到操作系统和在 Docker 容器内安装其它应用程序和库。例如,默认容器映像包括用于安装软件包的 Conda,因此可能在主节点命令行上运行以下命令以在容器内安装应用程序 Keras:command
sudo docker exec jupyterhub conda install keras
通过提交步骤管理
步骤是将工作提交到集群的一种方式。可以在启动集群时提交步骤,也可以将步骤提交给正在运行的集群。可以使用 command-runner.jar
将在命令行上运行的命令作为步骤提交。有关更多信息,请参阅《Amazon EMR 管理指南》中的使用 CLI 和控制台执行步骤,以及在 Amazon EMR 集群上运行命令和脚本。
例如,可以在本地计算机上使用以下 Amazon 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
运行脚本。有关更多信息,请参阅在 Amazon EMR 集群上运行命令和脚本。有关示例,请参阅 示例:用于添加多个用户的清除脚本。
使用 REST API 管理
适用于 JupyterHub 的 Jupyter、JupyterHub 和 HTTP 代理提供可用于发送请求的 REST API。要将请求发送到 JupyterHub,必须随请求传递一个 API 令牌。可以从主节点命令行使用 curl
命令执行 REST 命令。有关更多信息,请参阅以下资源:
JupyterHub 文档中的使用 JupyterHub 的 REST API
(包括 API 令牌生成说明) GitHub 上的 Jupyter notebook 服务器 API
GitHub 上的 configurable-http-proxy
以下示例演示了使用 JupyterHub 的 REST API 获取用户列表。此命令传递以前生成的管理员令牌并使用 JupyterHub 的默认端口 9443,以将输出传输到 jq
curl -XGET -s -k https://$HOST:9443/hub/api/users \ -H "Authorization: token $admin_token" | jq .