Подключиться к удаленному python ядру из python кода - PullRequest
2 голосов
/ 30 января 2020

Я использовал PaperMill для периодического запуска моего python ноутбука. Чтобы выполнить ноутбук с интенсивными вычислениями, мне нужно подключиться к удаленному ядру, работающему в моем кластере EMR.

В случае ноутбука Jupyter я могу сделать это, запустив сервер jupyter с jupyter notebook --gateway-url=http://my-gateway-server:8888, и я могу выполнить свой код на удаленном ядре. Но как мне разрешить моему локальному python коду (через PaperMill) использовать удаленное ядро? Какие изменения вносят изменения в Kernel Manager для подключения к удаленному ядру?

Один связанный с ним ответ SO, который я смог найти, - здесь . Это предлагает сделать переадресацию портов на удаленный сервер и инициализировать KernelManager с файлом подключения с сервера. Я не могу этого сделать, поскольку blockingkernelmanager больше не существует в I python .zmp, и я бы также предпочел HTTP-соединение, например, как это делает jupyter.

1 Ответ

0 голосов
/ 06 февраля 2020

Хакерский подход - настройте сценарий оболочки для выполнения следующих действий:

  1. Создайте среду python на своем мастер-узле EMR, используя hadoop пользователя
  2. Установите sparkmagi c в своей среде и настройте все ядра, как описано в файле README.md для sparkmagi c
  3. Скопируйте записную книжку на главный узел / используйте ее напрямую из местоположения s3
  4. Запуск с бумажной фабрики:

    бумажная фабрика s3: //path/to/notebook/input.ipynb s3: //path/to/notebook/output.ipynb - p param = 1

Шаг 1 и 2 - одноразовые требования, если ваш главный узел кластера всегда одинаков.

Немного лучший подход:

  1. Установите удаленное ядро ​​в самом Jupyter: REMOTE KERNEL
  2. Выполните с papermill как обычную записную книжку, выбрав это удаленное ядро ​​

Я использую оба подхода для разных вариантов использования, и на данный момент они работают нормально. * 10 36 *

...