Не удается настроить порт для Jupyter и Zeppelin во время создания Google DataProc - PullRequest
2 голосов
/ 22 апреля 2019

У меня есть кластер DataProc, который инициализирует DataLab, и устанавливаю Jupyter и Zeppelin в качестве дополнительных компонентов.Я хочу сделать порт Jupyter как 8124, а порт Zeppelin как 8081 во время создания кластера.Мне нужно, чтобы они были исключительно в этих двух портах, а не в каких-либо других портах.Я использовал следующую команду с gcloud dataproc clusters create во время создания кластера:

--metadata ZEPPELIN-PORT=8081 (также пробовал --metadata zeppelin-port=8081)

--metadata JUPYTER_PORT=8124

Однако ониоба по-прежнему используют порт по умолчанию, то есть 8123 для jupyter и 8080 для zeppelin, тогда как 8124 и 8081 недоступны.Что еще хуже, поскольку DataLab по умолчанию также использует 8080, я не могу получить доступ к DataLab через этот порт, но только через zeppelin.

Я могу настроить порт ПОСЛЕ времени создания, но это не идеально для моего использованияслучаи.

Любые предложения приветствуются.Спасибо.

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Используя последнюю версию Dataproc, вы сможете переназначить порты

Изображения 1.3 и 1.4: Разрешить переназначение портов дополнительных компонентов Jupyter и Zeppelin через dataproc: {jupyter, zeppelin} .port properties

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

0 голосов
/ 27 апреля 2019

К сожалению, в настоящее время действительно нет способа сделать это в первоклассном поддерживаемом свойстве, но когда-нибудь в будущем оно может стать функцией в Dataproc.

Тем временем, однако, выполнение действия инициализации, которое изменяет порты, должно быть фактически эквивалентно изменению его через свойство с задержкой в ​​несколько секунд для перезагрузки служб.

Следующее действие init автоматически переназначит Jupyter на 8124 и Zeppelin 8081 во время создания кластера, а также будет работать с Шлюзом компонентов Dataproc , если он включен.

#!/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
...