Описание проблемы
Я хочу ускорить мой потоковый конвейер. Пока что партия обрабатывается за ~ 10 секунд. Также через 2-3 месяца я ожидаю увеличение количества сообщений x3.
Описание конвейера
У меня есть задание Spark Streaming, которое считывает данные из Kafka topi c, обрабатывает их ( десериализовать и обогатить набор данных) и записать вывод в выходные данные topi c.
конфигурация Kafka
- 1 topi c
- 75 разделов на топи c
- частота генерации сообщений составляет 10 миллионов сообщений в минуту (~ 165000 в секунду) в одном разделе
- формат сообщения - avro (под avro - событие json с 12-15 полей)
Конфигурация Spark
- 75 исполнителей (в соответствии с рекомендациями по отображению - 1 раздел Kafka для 1 исполнителя Spark)
- время запуска - 1 минута
Что уже сделано?
- Я попросил увеличить количество разделов в Кафке с 75 до 500 (невозможно)
- Я предложил создать новую топи c с 500 па rtitions и настройка репликации с текущего topi c с 75 разделами на новый (это также невозможно)
- Я пытался играть с размером сообщения (max.partition.fetch.bytes) - не получилось очень поможет, так как Spark не волнует, какой размер сообщения, если он не может распараллелить работу должным образом
Так что я ищу способ распараллелить работу на стороне Spark. Есть идеи, что еще можно сделать здесь?