无法在Google DataProc创建时为Jupyter和Zeppelin自定义端口

问题描述 投票:2回答:2

我有一个初始化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。

我可以在创建时间之后自定义端口,但这对我的用例来说并不理想。

任何建议表示赞赏。谢谢。

google-cloud-platform google-cloud-dataproc
2个回答
0
投票

不幸的是,目前在一流支持的属性中确实没有办法做到这一点,但它有可能在未来的某一天成为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

1
投票

使用上一个Dataproc版本,您应该能够重新映射端口

图1.3和1.4:允许通过dataproc重新映射Jupyter和Zeppelin可选组件端口:{jupyter,zeppelin} .port属性

https://cloud.google.com/dataproc/docs/release-notes#may_9_2019

© www.soinside.com 2019 - 2024. All rights reserved.