Kafka не избавляется от данных при настройке Retention.ms

Поэтому, когда я ищу способ подсчета сообщений в теме, этот вариант хорош.

kafka-run-class kafka.tools.GetOffsetShell --broker-list broker1:9092,broker2:9092,broker3:9092 --topic rev-dly-upd --time -1

Единственное, когда я меняю конфиг retention.ms на retention.ms=1000, да еще и проверяю, что тема настроена, запуская kafka-topics --describe --zookeeper zookeeper1:2181 --topic rev-dly-upd. Я ясно вижу, что эта конфигурация установлена ​​​​на 1000...

Topic:rev-dly-upd   PartitionCount:8    ReplicationFactor:3 Configs:retention.ms=1000
    Topic: rev-dly-upd  Partition: 0    Leader: 159 Replicas: 159,96,160    Isr: 159,96,160
    Topic: rev-dly-upd  Partition: 1    Leader: 160 Replicas: 160,159,94    Isr: 94,160,159
    Topic: rev-dly-upd  Partition: 2    Leader: 94  Replicas: 94,160,95 Isr: 95,94,160
    Topic: rev-dly-upd  Partition: 3    Leader: 95  Replicas: 95,94,96  Isr: 95,96,94
    Topic: rev-dly-upd  Partition: 4    Leader: 96  Replicas: 96,95,159 Isr: 95,96,159
    Topic: rev-dly-upd  Partition: 5    Leader: 159 Replicas: 159,160,94    Isr: 159,94,160
    Topic: rev-dly-upd  Partition: 6    Leader: 160 Replicas: 160,94,95 Isr: 94,160,95
    Topic: rev-dly-upd  Partition: 7    Leader: 94  Replicas: 94,95,96  Isr: 95,96,94

тем не менее, когда я запускаю kafka-run-class kafka.tools.GetOffsetShell --broker-list broker1:9092,broker2:9092,broker3:9092 --topic rev-dly-upd --time -1 all, я всегда возвращаю записи. Какие могут быть причины?


person uh_big_mike_boi    schedule 31.07.2018    source источник
comment
Вам нужно подождать час, пока поток LogCleaner запустится.   -  person OneCricketeer    schedule 31.07.2018
comment
смещения не усекаются при усечении сообщений. данные этих сообщений должны быть удалены, однако смещения не будут использоваться повторно. Я понимаю, что GetOffsetShell - это инструмент для отображения смещений всех разделов? Вы пытались на самом деле использовать темы и посмотреть, действительно ли там есть данные?   -  person Marius Waldal    schedule 01.08.2018
comment
@cricket было то же самое даже несколько дней спустя   -  person uh_big_mike_boi    schedule 12.09.2018
comment
По сути, если данные для смещения отсутствуют, то потребитель просто ищет следующий доступный. LogCleaner должен сбрасывать самые ранние смещения, но этот поток может перестать работать, и вам нужно отслеживать его из журналов работающего сервера. В любом случае это должно дать вам приблизительный подсчет, если тема не сжата. Альтернатива потреблению и подсчету строк в теме ненадежна 1) В данных могут быть новые строки 2) потребитель консоли никогда не заканчивается, поэтому wc не остановится   -  person OneCricketeer    schedule 12.09.2018


Ответы (1)


По сути, мне пришлось прекратить использовать kafka-run-class kafka.tools.GetOffsetShell для подсчета сообщений в теме. Если вы погуглите «как подсчитать сообщения в теме kafka», множество сообщений и вещей натолкнут вас на мысль, что приведенная выше команда с правильными аргументами даст вам общее количество сообщений. Однако, если вы удаляли сообщения в течение жизни темы, это не даст вам точного подсчета. Вам просто нужно сделать что-то вроде открытия потребителя консоли, вывода в текстовый файл, а затем прочитать строки этого файла с помощью старомодного wc -l.

person uh_big_mike_boi    schedule 12.09.2018
comment
Сообщения в теме не могут быть удалены, если они не сжаты, так что вы подразумеваете под очисткой? Если вы делаете --time -1 и --time -2, вы можете посмотреть на разницу, чтобы подсчитать количество смещений/сообщений в разделах. - person OneCricketeer; 12.09.2018
comment
Очищено просто означает, что я позволил сообщениям исчерпать свой срок хранения. Я заставляю это сделать, изменив период хранения на 1 секунду, а затем позволив удалить сообщения, а затем вернув настройку хранения к тому, что было. То, как вы это делаете с настройкой периода времени, нормально, но тогда мне нужно отслеживать, когда он был в последний раз очищен. И в ситуации устранения неполадок было бы возможно, что я мог бы потерять доверие, если бы он вообще был очищен. Если только у меня не была настроена действительно хорошая система аудита, которую я не позволял себе обойти, и никаких ручных чисток, которых у меня нет. - person uh_big_mike_boi; 12.09.2018