Apache beam DirectRunner против "нормальных" параллельных процессов - PullRequest
1 голос
/ 12 ноября 2019

У меня сейчас работает конвейер на GCP. Все написано с использованием панд для манипулирования CSV и выполнения некоторых преобразований, а также побочных входов из внешних источников. (Используются API BigQuery и хранилища). Дело в том, что он работает на экземпляре Compute Engine (VM) 32 В ЦП / 120 ГБ и выполняет простую параллельную обработку с многопроцессорной библиотекой python. В настоящее время мы думаем о переходе на Dataflow, и я хотел бы знать следующее: если бы я реализовал тот же конвейер с использованием DirectRunner от Beam, как мне ожидать, что производительность будет сравниваться с текущей реализацией? Будет ли это быстрее или медленнее и почему? Будет ли DirectRunner хорошо использовать все ресурсы компьютера или он каким-то образом ограничен?

Спасибо!

1 Ответ

0 голосов
/ 12 ноября 2019

Ваш вопрос широк. Тем не менее, я постараюсь предоставить вам некоторые материалы. Трудно сравнить DirectRunner и DataflowRunner.

  • DirectRunner запускает ваш конвейер на вашей текущей виртуальной машине и использует возможности этой единственной виртуальной машины. Это ваша виртуальная машина, вы должны настроить ее, исправить ее, позаботиться о том, чтобы освободить файл диска / раздела / журнала, (...)
  • DataflowRunner запускает конвейер для управляемой платформы. Поток данных, в соответствии с его метриками и «предсказанием» (здесь нет ML!), Выбирает увеличение или уменьшение количества виртуальных машин для максимально быстрого выполнения вашего конвейера. Вы можете установить маленькую виртуальную машину (например, 1 vCPU), и Dataflow будет порождать их много, или большую виртуальную машину, и, возможно, этот поток данных будет порождать только 1, потому что этого достаточно для конвейера.

Советы профессионалов: пропускная способность виртуальной машины ограничена 2 Гбит / с на один виртуальный процессор до 8 виртуальных процессоров. Позаботьтесь о узких местах сети и разумно выберите размер виртуальной машины (обычно я рекомендую виртуальную машину с 4 или 8 виртуальными ЦП)

С одной стороны у вас есть только одна виртуальная машина для управления, с другой - вынужно только установить параметры и позволить Dataflow управлять и масштабировать ваш конвейер.

Я не знаю вашу перспективу роста, но вертикальная масштабируемость (добавление большего количества vCPU / памяти на вашей отдельной виртуальной машине) может достигать предела в день. С потоком данных он эластичен, и вы не беспокоитесь об этом;в дополнение к управлению сервером и исправлениям.

Наконец, ответьте на свой вопрос "быстрее или медленнее", слишком сложно ответить ... Поток данных, если он работает на нескольких ВМ, добавит задержку в сети, внутреннее управление потоком данныхнакладные расходы, но могут масштабироваться для параллельного использования большего количества виртуальных ЦП по сравнению с текущей виртуальной машиной. Ваш конвейер может использовать этот параллелизм или нет? Это решить некоторые из ваших нынешних узких мест? Слишком сложно ответить на моей стороне.

...