Как подключиться к кластеру dataproc с ноутбуками Jupyter из облачной оболочки

google-cloud-platform jupyter-notebook google-cloud-dataproc gcp

1378 просмотра

2 ответа

Я видел инструкции здесь https://cloud.google.com/dataproc/docs/tutorials/jupyter-notebook для настройки ноутбуков Jupyter с помощью dataproc, но я не могу понять, как изменить процесс, чтобы использовать оболочку Cloud вместо создания туннеля SSH локально. Я смог подключиться к ноутбуку datalab, запустив

datalab connect vmname 

из облачной оболочки, а затем с помощью функции предварительного просмотра. Я хотел бы сделать что-то подобное, но с ноутбуками Jupyter и кластером dataproc.

Автор: dobbysock1002 Источник Размещён: 10.09.2019 08:50

Ответы (2)


3 плюса

Решение

Теоретически, вы можете в основном следовать тем же инструкциям, что и https://cloud.google.com/shell/docs/features#web_preview, чтобы использовать локальную переадресацию портов для доступа к вашим ноутбукам Jupyter в Dataproc через тот же «предварительный просмотр в Интернете» в Cloud Shell. особенность. Что-то вроде следующего в вашей облачной оболочке:

gcloud compute ssh my-cluster-m -- -L 8080:my-cluster-m:8123

Однако есть две проблемы, которые мешают этому работать:

  1. Вам необходимо изменить конфигурацию Jupyter, добавив в нижнюю часть следующее /root/.jupyter/jupyter_notebook_config.py:

    c.NotebookApp.allow_origin = '*'
    
  2. Для предварительного просмотра в Cloud Shell необходимо добавить поддержку веб-сокетов.

Если вы не сделаете (1), вы получите всплывающие ошибки при попытке создать блокнот из-за отказа Jupyter прокси-домена облачной оболочки. К сожалению (2) требуется более глубокая поддержка самой Cloud Shell; это проявится как ошибки типаA connection to the notebook server could not be established.

Другой возможный вариант без ожидания (2) - запустить собственный прокси-сервер nginx как часть действия инициализации jupyter в кластере Dataproc, если вы можете соответствующим образом получить его для веб-сокетов прокси. Смотрите эту тему для аналогичной ситуации: https://github.com/jupyter/notebook/issues/1311

Обычно этот тип поддержки неработающих веб-сокетов в прокси-слоях является распространенной проблемой, поскольку он все еще является относительно новым; со временем все больше и больше вещей будут поддерживать веб-сокеты из коробки.

В качестве альтернативы:

Dataproc также поддерживает использование действия инициализации Datalab; это настроено так, что проксирование websockets уже позаботилось. Таким образом, если вы не слишком зависимы только от Jupyter, то в облачной оболочке работает следующее:

gcloud dataproc clusters create my-datalab-cluster \
    --initialization-actions gs://dataproc-initialization-actions/datalab/datalab.sh
gcloud compute ssh my-datalab-cluster-m -- -L 8080:my-datalab-cluster-m:8080

А затем выберите обычный «Веб-просмотр» на порте 8080. Или вы можете выбрать другие поддерживаемые Cloud Shell порты для локальной привязки, например:

gcloud compute ssh my-datalab-cluster-m -- -L 8082:my-datalab-cluster-m:8080

В этом случае вы бы выбрали 8082порт предварительного просмотра.

Автор: Dennis Huo Размещён: 14.04.2017 06:15

0 плюса

Вы не можете подключиться к Dataproc через Datalab, установленный на виртуальной машине (на GCE).

В качестве документации, которую вы упомянули, вы должны запустить Dataproc с действием инициализации Datalab.

Более того, Datalab connectкоманда доступна только в том случае, если вы создали Datalab благодаря этой Datalab createкоманде.

Вы должны создать SSH-туннель к своему главному узлу («vmname-m», если имя вашего кластера «vmname») с помощью:

gcloud compute ssh --zone YOUR-ZONE --ssh-flag="-D 1080" --ssh-flag="-N" --ssh-flag="-n" "vmname-m"
Автор: Olivier Размещён: 14.04.2017 10:12
Вопросы из категории :
32x32