JupyterHub 組態與管理 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

JupyterHub 組態與管理

JupyterHub 和相關組件運行在運行 Ubuntu 操作系統jupyterhub的名為 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 和主控台來使用步驟,以及 在 Amazon EMR 叢集上執行命令和指令碼

例如,您可以在本機電腦上使用下列 AWS CLI 命令來安裝 Keras,就像在前面範例中透過主節點的命令列執行的相同方式來安裝 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 叢集上執行命令和指令碼。如需範例,請參閱範例:新增多個使用者的 Bash 指令碼

使用 REST API 進行管理

接著 JupyterHub, 和 HTTP 代理 JupyterHub 提供 REST API,您可以用來發送請求. 要將請求發送到 JupyterHub,您必須將 API 令牌與請求一起傳遞。您可以從主節點命令列使用 curl 命令來執行 REST 命令。如需詳細資訊,請參閱下列資源:

下列範例示範如何使用 REST API JupyterHub 來取得使用者清單。該命令傳遞先前生成的管理令牌,並使用默認端口 9443,將輸出管道到 jq 以便於查看: JupyterHub

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