#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
объекта подключает вас к существующему кластеру.