Kafka Streams удаляет израсходованные записи перераспределения, чтобы уменьшить использование диска - PullRequest
0 голосов
/ 15 марта 2019

У нас есть экземпляр kafka с примерно 50M записями, с входом около 100k в день, так что в мире kafka нет ничего сумасшедшего.Когда мы хотим повторно обработать эти записи с помощью одного из наших более сложных потоковых приложений (с множеством различных этапов агрегирования), использование диска становится довольно сумасшедшим из-за тем перераспределения.В этих темах используется стандартное время хранения (14 дней?) В kafka-streams 1.0.1 и Long.Max в 2.1.1 из того, что мы поняли.Это очень неудобно, так как для разделов перераспределения, в нашем случае, каждая запись читается только один раз, когда агрегирование выполнено, и после этого ее можно удалить.

Итак, наш вопрос, есть ли способнастроить параметр в kafka-streams, который удаляет записи после их обработки?Я видел, что есть какой-то способ сделать это с purgeDataBefore () (https://issues.apache.org/jira/browse/KAFKA-4586).

Для справки, некоторые размеры в части приложения:

table-1 (журнал изменений, компакт ~ 2 ГБ) -> изменить ключ и агрегат (перераспределение ~ 14 ГБ) -> table-2 (журнал изменений, удалить, 14 КБ) -> изменить ключ и агрегат (перераспределение 21 ГБ)) -> table-3 (журнал изменений, компактный, 0,5 ГБ)

(Это мой первый вопрос о переполнении стека, поэтому любые отзывы приветствуются, заранее спасибо!)

1 Ответ

0 голосов
/ 17 марта 2019

Kafka Streams использует purgeDataBefore() API с момента выпуска 1.1: https://issues.apache.org/jira/browse/KAFKA-6150

Вам не нужно его включать (и вы также не можете отключить его).

...