#apache-kafka #apache-storm
#apache-kafka #apache-storm
Вопрос:
Я использую топологию Storm (с Storm 0.10.0) с KafkaSpout по умолчанию для извлечения данных JSON, поступающих из темы Kafka, и их обработки.
Иногда топология достигает максимума в 500 тыс. сообщений в секунду без каких-либо проблем, но обычно остается на уровне ~ 10 тыс. сообщений в секунду.
Обычно у меня нет проблем с производительностью, но через переменный промежуток времени носик показывает несколько неудачных кортежей, и вывод топологии замедляется.
Я уже дважды проверил, что все кортежи, которые достигают болтов, получают acked, и в журналах нет никаких ошибок.
Есть идеи, почему это происходит? Любая дополнительная информация, которую я могу предоставить, которая поможет отладить эту проблему?
Комментарии:
1. Вы нашли решение этой проблемы?
2. Вы нашли решение этой проблемы?
3. Не могу сказать, что я это сделал. Я использовал более новые версии KafkaSpout, которые не используют Zookeeper. Моим решением было вернуться к Zookeeper, и все работало нормально. Надеюсь, в более новых версиях проблемы не будет, но я не тестировал.
Ответ №1:
Обновите свое приложение Storm до последней версии, в Kafka / Storm добавлено много функций.
- Настройте оптимальные потоки / исполнителей для spout amp; bolts.
- Проверьте задержку болтов / носиков, если больше 1 секунды, есть какое-то горлышко бутылки (код профиля носика / болта).
- Тема Kafka может содержать более 100 миллионов сообщений (сокращение периода хранения).
- Проверьте рабочую память Storm (оптимально от 2 ГБ до 4 ГБ).
- Реализуйте свойство topology.max.spout.pending с начальным значением 1000 и соответствующим увеличением.