Есть ли конкретная причина, по которой очередь pendingEmits ограничена 1024 элементами - PullRequest
0 голосов
/ 26 мая 2018

Я работаю со Storm v1.2.1 на кластере из 5 r4.xlarge узлов EC2.В настоящее время я хрущу набор сетевых данных, который включает в себя запросы на основе скользящих окон по времени.После многочисленных циклов проб и ошибок для определения достаточно хорошей конфигурации для моего варианта использования я наткнулся на класс Executor, который поддерживает член с именем pendingEmits типа MpscChunkedArrayQueue<AddressedTuple> (строка 119 в storm-client модуль, класс: org.apache.storm.executor.Executor).Эта очередь имеет жестко заданную верхнюю границу из 1024 элементов.

Каждый раз, когда я пытался настроить конфигурацию с моим набором данных, я получал IllegalStateException, когда Storm пытался добавить кортеж подтверждения к pendingEmitsс полной мощностью.Чтобы избежать получения исключения, я увеличил жестко заданный размер pendingEmits до 16534. Кажется, это работает (пока).

Почему максимальный размер pendingEmits установлен на 1024?Это из-за производительности, или это было случайное решение?

Я скептически отношусь к этому решению, потому что, если окно состоит из более чем 1024 кортежей (в моем случае каждое окно имеет около 2700 кортежей), очередь будет заполнена, и IllegalStateException будет выброшено.

Увеличивая pendingEmits максимальный размер, могу ли я поставить под угрозу другие аспекты (компоненты) Storm?

Спасибо!

1 Ответ

0 голосов
/ 26 мая 2018

Я не уверен, почему именно 1024 был выбран (вероятно, из-за производительности, как вы упомянули), но если вы извлекаете последнюю версию Storm, она должна быть исправлена ​​https://github.com/apache/storm/pull/2676.

...