Как настроить Apache Airflow с Celery для запуска параллельных задач? - PullRequest
0 голосов
/ 27 февраля 2019

Меня интересует этот вариант использования для моего доказательства концепции, где я читаю из файла, содержащего огромный список идентификаторов, и хочу обрабатывать эти идентификаторы как функцию func (id) одновременно.Можно ли настроить поток воздуха с CeleryExecutors для достижения этой цели?

Я видел эту ссылку: - Выполнение более 32 одновременных задач в Apache Airflow

Но что, если число идентификаторов неизвестно и может быть где-то от 10000 или даже100 000, и я хочу обрабатывать их около 500-1000 одновременно?

1 Ответ

0 голосов
/ 27 февраля 2019

Airflow может выполнять задачи параллельно, и он может использовать Celery для достижения этой цели.Все остальное зависит от вас, чтобы реализовать, как вы считаете нужным, нет никаких специфических особенностей, связанных с Airflow / Celery относительно вашего предполагаемого использования.В конце концов, если все, что вас волнует, - это параллельное выполнение вашей работы и вас мало волнуют другие функции Airflow, вам может быть лучше использовать только Celery.

Есть много разных способов сделать это, ноВот кое-что для начала:

  • Задачи воздушного потока должны быть как можно более "тупыми", то есть принимать входные данные, обрабатывать их и сохранять выходные данные.Не размещайте здесь логику разделения файлов.Вы можете иметь специальную группу DAG для этого, если это необходимо.Например, у вас может быть группа обеспечения доступности баз данных, которая читает входной файл и разбивает его на части с помощью некоторой логики, а затем сохраняет его где-то для задач (удобная структура файла, очередь сообщений, дБ и т. Д.)
  • Решитьв месте для ваших входных данных, так что задачи могут легко получить ограниченный объем ввода.Например, если вы используете файловую структуру, где один обрабатываемый фрагмент представляет собой один файл, задача может получить чтение одного файла и удалить его.Повторяйте, пока не останется ни одного фрагмента / файла.То же самое касается любого другого способа, например, если вы используете очередь сообщений, вы можете использовать куски.Убедитесь, что у вас есть оригинальный DAG, готовый снова разделить входной файл на куски, если это необходимо.Вы можете сделать это настолько простым или сложным, насколько захотите.
  • Не упустите идемпотентность, например, убедитесь, что ваш процесс может быть повторен без побочных эффектов.Если вы потеряете данные на каком-то этапе, вы можете просто перезапустить все без проблем.
...