Выявление узкого места в распределенном по блюду S3 - PullRequest
0 голосов
/ 08 октября 2018

Я надеюсь получить представление о том, как распределенный dask управляет распределением задач из командной строки.

У меня есть следующая структура:

  1. В первичном коде (есть ли лучший термин для этого? Код, который не запускается в распределенном dask) s3fs используется дляперечислить содержимое сегмента
  2. Этот список сопоставляется с "основной" функцией, которая преобразует данные CSV в JSON, выполняя некоторые проверки качества по пути
  3. что преобразованные данные проходят через фильтрациюфункция для извлечения только тех данных, которые я хочу
  4. Эти отфильтрованные данные возвращаются в main, а затем записываются обратно в S3 с использованием s3fs

По сути, все, что я предоставляю функции client.mapэто список строк, которые являются указателями на ресурсы s3.Каждый из сотрудников отвечает за подключение к s3 и запуск всего кода, чтобы получить содержимое файла, преобразовать записи, отфильтровать их и записать обратно в s3.

Когда у меня есть 1800 файлов в s3, требуетсяпару минут, чтобы раздать и завершить все - это так.Когда у меня есть 18 000 записей, я не смог успешно распределить задачи среди рабочих и заставить их запускаться с помощью команды, подобной B=client.map(main, filelist) - команда, кажется, просто сидит там.Если я отменяю процесс, пытаясь наметить, я получаю некоторый намек на то, что он травит кучу вещей, но я не знаю, что нужно будет травить в течение 30-60 минут.

Странно, когда я18 000 записей, даже если я попытаюсь распространить только 10 записей, например, с помощью следующей команды B=client.map(main, filelist[:10]), я получу те же таймауты.

Основные вопросы:

  1. Является ли модельиметь несколько функций, вызываемых в пределах одного вызова карты в порядке?То есть я сопоставляю функцию main, которая читает объект S3, затем вызывает annotate, затем фильтрует, а затем записывает обратно в S3?
  2. В качестве альтернативы, я должен переместить каждую функцию к ее собственному распределенному вызову, принимая фьючерсыобъекты от каждого?
  3. Есть ли причина, по которой распределение 18 000 строк одному распределенному рабочему займет так много времени?
  4. Существует ли причина, по которой размер корзины S3 влияет на производительность?
...