Как обогнать и перегнать Spark на коротких дистанциях. С++
Последние 10 лет занимается исследованием новых подходов и созданием решений в областях рекламы, финтеха и ML.
В область интересов входят вопросы разработки распределенных систем, параллельной и конкурентной обработки информации.
Улучшает мир посредством opensource. cyberduckninja.com
История из жизни стартапа купленного крупной компанией.
Случается, что проверяют много гипотез.
Одна из гипотез выстреливает, но есть проблема реализации гипотезы на python со spark.
Оказывается, что в продакшене на этот несчастный прототип наливают огромную нагрузку и он не справляется.
Не секрет, что бутылочное горлышко у python и spark – работа с ресурсами.
Существуют вполне здравые пути решения проблемы, которые мы пробовали:
поменять подход к обработке входного потока данных;
отказаться от пополнения данных из кластера spark;
отказаться от кластера и работать в один узел и с локальными данными;
отказываться от spark нельзя: слишком много изменений.
Все перечисленные подходы в нашем случае не сработали.
Одно из экстемальных решений проблемы служит переписка некоторого количества api spark на С++ и запуск python из С++.
Причем такой подход будет работать при условии:
работа с большими фрагментами памяти и файлами off python vm;
управление жизненным циклом задач на стороне python;
простота интеграции с текущей кодовой базой.
В докладе я расскажу, какие решения пришлось придумать для того, чтобы заставить все это работать.