Dask с docker ничего не показывает на панели инструментов dask

#docker #docker-compose #dask

#docker #docker-compose #dask

Вопрос:

Я использую Dask с Docker Compose локально на своем компьютере (OSX Catalina 10.15.17). Мой файл docker-compose такой же, как этот, за исключением того, что я добавил том в контейнер notebook.
Я могу правильно получить доступ к панели управления по адресу по умолчанию localhost:8787 , но когда я запускаю некоторые задачи, например, работаю с xarray или что-то в этом роде:

 import dask.array as da
x = da.random.random((1000,1000,10), chunks=(1000,1000,5))
y = da.random.random((1000,1000,10), chunks=(1000,1000,5))
z = (da.arcsin(x)   da.arccos(y)).sum(axis=(1,))

z.compute()
 

На панели инструментов ничего не отображается:

пустая панель инструментов

Я пробовал оба запуска с LocalCluster

 from dask.distributed import Client, LocalCluster
cluster = LocalCluster()
client = Client(cluster)
client
 

затем используйте расширение Jupyter lab Dask с левой стороны, чтобы запустить кластер оттуда.

У вас есть какие-либо предложения? Я что-то упустил?

Приветствия

Ответ №1:

Я провел тот же рабочий процесс, который вы описали, и у меня есть пара указателей.

Для подключения к кластеру Dask вам необходимо создать объект Client.

Поэтому, прежде чем запускать какой-либо код в вашем ноутбуке, сначала необходимо выполнить

 from dask.distributed import Client
client = Client("tcp://scheduler:8786")  # We could also omit the address because it is set in the `DASK_SCHEDULER_ADDRESS` environment variable
 

Затем ваш код массива Dask будет выполнен в кластере. Однако также стоит отметить, что это такой небольшой объем работы, который он выполняет почти сразу, и панель управления ничего не показывает для меня. Однако, если я перейду на страницу профиля, я увижу профиль выполненной работы, поэтому он определенно выполнялся там.

График профиля панели инструментов

Если я увеличу размеры массива da.random.random((10_000,10_000,10), chunks=(1000,1000,5)) , то я увижу активность на панели инструментов.

График задач панели инструментов


Мой последний комментарий здесь заключается в том, что docker-compose.yml используемый вами файл на самом деле является частью конвейера сборки для образа Dask Docker и на самом деле не предназначен для использования пользователями для запуска Dask. Хотя это работает. Возможно, вам будет легче работать с этой более простой конфигурацией.

 version: "3.1"

services:
  scheduler:
    image: daskdev/dask
    hostname: dask-scheduler
    ports:
      - "8786:8786"
      - "8787:8787"
    command: ["dask-scheduler"]

  worker:
    image: daskdev/dask
    hostname: dask-worker
    command: ["dask-worker", "tcp://scheduler:8786"]

  notebook:
    image: daskdev/dask-notebook
    hostname: notebook
    ports:
      - "8888:8888"
    environment:
      - DASK_SCHEDULER_ADDRESS="tcp://scheduler:8786"
 

Комментарии:

1. Большое вам спасибо за вашу помощь, Джейкоб!

2. Джейкоб, в чем разница создания клиента с помощью команды, которую вы написали выше, вместо использования кнопки «Создать» на вкладке «Dask» в левой части ноутбука? В последнем случае панель управления, похоже, ничего не показывает..

3. Нажатие кнопки «Создать» создает новый кластер, обычно a LocalCluster , если вы не изменили конфигурацию по умолчанию. Создание Client объекта подключает вас к существующему кластеру.