无法在 Google DataProc 创建时间为 Jupyter 和 Zeppelin 自定义端口
Can't customize port for Jupyter and Zeppelin at Google DataProc creation time
我有一个初始化 DataLab 的 DataProc 集群,并安装 Jupyter 和 Zeppelin 作为可选组件。我想在集群创建时将 Jupyter 端口设置为 8124,将 Zeppelin 端口设置为 8081。我需要它们专门用于这两个端口,而不是任何其他端口。我在集群创建时对 gcloud dataproc clusters create
使用了以下命令:
--metadata ZEPPELIN-PORT=8081
(也试过 --metadata zeppelin-port=8081
)
--metadata JUPYTER_PORT=8124
但是,它们都仍在使用默认端口,即 jupyter 的 8123 和 zeppelin 的 8080,而 8124 和 8081 不可用。更糟糕的是,由于 DataLab 默认也使用 8080,我无法从该端口访问 DataLab,只能访问 zeppelin。
我可以在创建时间后自定义端口,但这对我的用例来说并不理想。
如有任何建议,我们将不胜感激。谢谢。
不幸的是,目前确实无法在第一个 class 支持 属性 中执行此操作,但它可能会在未来某天成为 Dataproc 中的一项功能。
然而,与此同时,运行 修改端口的初始化操作应该实际上等同于通过 属性 修改它,只需几秒钟的延迟即可重新启动服务。
以下 init 操作将在集群创建时自动将 Jupyter 重新映射到 8124 和 Zeppelin 8081,如果启用,也可以与 Dataproc Component Gateway 一起使用。
#!/bin/bash
# change-ports.sh
ZEPPELIN_PORT=8081
JUPYTER_PORT=8124
readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
if [[ "${ROLE}" == 'Master' ]]; then
if [ -f /etc/zeppelin/conf/zeppelin-env.sh ]; then
echo "export ZEPPELIN_PORT=${ZEPPELIN_PORT}" \
>> /etc/zeppelin/conf/zeppelin-env.sh
systemctl restart zeppelin
fi
if [ -f /etc/jupyter/jupyter_notebook_config.py ]; then
echo "c.NotebookApp.port = ${JUPYTER_PORT}" \
>> /etc/jupyter/jupyter_notebook_config.py
systemctl restart jupyter
fi
if [ -f /etc/knox/conf/topologies/default.xml ]; then
sed -i "s/localhost:8080/localhost:${ZEPPELIN_PORT}/g" \
/etc/knox/conf/topologies/default.xml
sed -i "s/localhost:8123/localhost:${JUPYTER_PORT}/g" \
/etc/knox/conf/topologies/default.xml
systemctl restart knox
fi
fi
使用最新的 Dataproc 版本,您应该能够重新映射端口
Image 1.3 and 1.4:
Allow remapping Jupyter and Zeppelin Optional Component ports via dataproc:{jupyter,zeppelin}.port properties
https://cloud.google.com/dataproc/docs/release-notes#may_9_2019
我有一个初始化 DataLab 的 DataProc 集群,并安装 Jupyter 和 Zeppelin 作为可选组件。我想在集群创建时将 Jupyter 端口设置为 8124,将 Zeppelin 端口设置为 8081。我需要它们专门用于这两个端口,而不是任何其他端口。我在集群创建时对 gcloud dataproc clusters create
使用了以下命令:
--metadata ZEPPELIN-PORT=8081
(也试过 --metadata zeppelin-port=8081
)
--metadata JUPYTER_PORT=8124
但是,它们都仍在使用默认端口,即 jupyter 的 8123 和 zeppelin 的 8080,而 8124 和 8081 不可用。更糟糕的是,由于 DataLab 默认也使用 8080,我无法从该端口访问 DataLab,只能访问 zeppelin。
我可以在创建时间后自定义端口,但这对我的用例来说并不理想。
如有任何建议,我们将不胜感激。谢谢。
不幸的是,目前确实无法在第一个 class 支持 属性 中执行此操作,但它可能会在未来某天成为 Dataproc 中的一项功能。
然而,与此同时,运行 修改端口的初始化操作应该实际上等同于通过 属性 修改它,只需几秒钟的延迟即可重新启动服务。
以下 init 操作将在集群创建时自动将 Jupyter 重新映射到 8124 和 Zeppelin 8081,如果启用,也可以与 Dataproc Component Gateway 一起使用。
#!/bin/bash
# change-ports.sh
ZEPPELIN_PORT=8081
JUPYTER_PORT=8124
readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
if [[ "${ROLE}" == 'Master' ]]; then
if [ -f /etc/zeppelin/conf/zeppelin-env.sh ]; then
echo "export ZEPPELIN_PORT=${ZEPPELIN_PORT}" \
>> /etc/zeppelin/conf/zeppelin-env.sh
systemctl restart zeppelin
fi
if [ -f /etc/jupyter/jupyter_notebook_config.py ]; then
echo "c.NotebookApp.port = ${JUPYTER_PORT}" \
>> /etc/jupyter/jupyter_notebook_config.py
systemctl restart jupyter
fi
if [ -f /etc/knox/conf/topologies/default.xml ]; then
sed -i "s/localhost:8080/localhost:${ZEPPELIN_PORT}/g" \
/etc/knox/conf/topologies/default.xml
sed -i "s/localhost:8123/localhost:${JUPYTER_PORT}/g" \
/etc/knox/conf/topologies/default.xml
systemctl restart knox
fi
fi
使用最新的 Dataproc 版本,您应该能够重新映射端口
Image 1.3 and 1.4: Allow remapping Jupyter and Zeppelin Optional Component ports via dataproc:{jupyter,zeppelin}.port properties
https://cloud.google.com/dataproc/docs/release-notes#may_9_2019