Директива / ограничение работника, не уважающего работника (работников = '...', allow_other_workers = False) - PullRequest
2 голосов
/ 17 мая 2019

Я замечаю, что при отправке заданий и выполнении compute (), несмотря на попытки ограничить работу конкретными узлами в распределенном кластере dask (с использованием worker = '...', allow_other_workers = False), задачи, похоже, все ещебыть сделано несколькими работниками.

Например, давайте прочитаем в CSV, а затем попытаемся суммировать содержимое столбца:

import dask.dataframe as dd
dfut1 = client.submit(dd.read_csv, 
                     'https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2009-01.csv', 
                     workers='w1', allow_other_workers=False)
df1 = client.gather(dfut1)
df1.Passenger_Count.sum().compute(workers='w1', allow_other_workers=None)

При запуске финального типа (... sum ... compute)просто глядя на вкладку «Состояние» на панели инструментов Dask, становится ясно, что вычисления выполняются обоими работниками кластера, а не просто w1, как указано.(Это поддерживается client.has_what (), который буквально показывает задачи, распределенные по кластеру.)

Я также попытался allow_other_workers=False и просто пропустил параметр, но все комбинации приводят к выполнению работы по всейкластер.Я также попытался заменить рабочие имена на ip: port и использовать списки вместо строк без удачи. Есть ли способ действительно заставить сходство машины / узла / работника с данными и задачами, выполняемыми задачами?

В качестве фона

Я запустил планировщик dask на моей 1-й машине

dask-scheduler

Я запустил рабочий на 2-й машине

dask-worker <schedulerip:port> --name w1

Я запустил другой рабочий на 3-й машине

dask-worker <schedulerip:port> --name w2

Это использует dask == 1.2.2 и распространяется == 1.28.0 на python 3.6.

1 Ответ

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

Похоже, что вы вызываете функцию dask dataframe в вызове submit.Это странноВы отправляете код Dask для запуска на конкретном работнике.Этот код Dask затем вызывает кластер для запуска.Нет никакой причины для вызова submit для функции dask.

См. http://docs.dask.org/en/latest/delayed-best-practices.html#don-t-call-dask-delayed-on-other-dask-collections

...