由于初始化操作只是使用conda install jupyter 从最新安装,这似乎是由最近的上游更改引起的,特别是将notebook 组件从4.2.3 升级到4.3.0 导致token-based auth to be turned on by default。几周前我使用开箱即用的 init 操作部署的最近集群没有您看到的相同登录名; init 操作的设计是让 Google Compute Engine 防火墙成为您的防御层,让 SSH 隧道成为您的安全连接,而不是依赖于来自不同 Hadoop/Spark 工具和 Web UI 的各种第三方身份验证实现。
解决方案是在setup-jupyter-kernel.sh 中添加一行:
echo "c.NotebookApp.token = u''" >> ~/.jupyter/jupyter_notebook_config.py
完全禁用 jupyter 端身份验证并恢复到几周前的行为。请注意,如果您想自己执行此操作,则必须摆弄jupyter.sh 中的INIT_ACTIONS_REPO 和INIT_ACTIONS_BRANCH 设置,如果您尚未对其进行自定义,则可能需要一些时间来适应。我们会尽快推送修复程序,一旦完成,您应该能够使用开箱即用的 init 操作而不会再次导致登录屏幕。
如果您已经有一个集群正在运行,您可以通过在 SSH 连接到主服务器后以 root 身份手动运行来禁用您的 jupyter 服务器的身份验证:
sudo su
killall -9 jupyter-notebook
echo "c.NotebookApp.token = u''" >> ~/.jupyter/jupyter_notebook_config.py
/dataproc-initialization-actions/jupyter/internal/launch-jupyter-kernel.sh
或者,如果您确实想保留新的默认令牌授权方法,jupyter 服务器实际上会将生成的令牌记录到/var/log/jupyter_notebook.log;查找声明The Jupyter Notebook is running at: http://[all ip addresses on your system]:8123/?token=[some-token-string-here] 的行;该令牌字符串可以插入密码字段或显示的 URL 参数中。
编辑:修复已将 now been committed 放入 Dataproc 的初始化操作存储库并同步到 gs://dataproc-initialization-actions。开箱即用的部署在 Jupyter UI 中无需额外的登录页面即可再次工作。
如果您确实想要指定 Jupyter 也允许在 password 字段中使用的令牌,还添加了一个新的元数据选项,键为 JUPYTER_AUTH_TOKEN。仅当您想要一个请求指定令牌的登录页面时才使用它(如果您只想要没有登录页面的旧行为,则不需要元数据密钥):
gcloud dataproc clusters create \
--initialization-actions gs://dataproc-initialization-actions/jupyter/jupyter.sh \
--metadata JUPYTER_AUTH_TOKEN=foobarbaz
那么您的登录密码将是foobarbaz。