Я работаю со 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?
Спасибо!