Nano Hash - криптовалюты, майнинг, программирование

Как проверить, работает ли сжатие журналов в Kafka?

Я внес изменения в файл server.properties в Kafka 0.8.1.1, т.е. добавил log.cleaner.enable=true, а также включил cleanup.policy=compact при создании темы. Теперь, когда я тестирую его, я отправил следующие сообщения в тему со следующими (Key, Message).

  • Смещение: 1 - (123, abc);
  • Смещение: 2 - (234, деф);
  • Смещение: 3 - (345, ghi);
  • Смещение: 4 - (123, изменено)

Теперь я отправил 4-е сообщение той же клавишей, что и предыдущий ввод, но изменил сообщение. Здесь должно появиться уплотнение бревен. А с помощью инструмента Kafka я могу увидеть все 4 смещения в теме. Как я могу узнать, работает ли сжатие журнала или нет? Если предыдущее сообщение было удалено, или сжатие журнала работает нормально, поскольку новое сообщение было отправлено. Связано ли это с конфигурациями log.retention.hours, topic.log.retention.hours или log.retention.size? Какова роль этих конфигов в уплотнении логов. P.S. - Я внимательно просмотрел документацию Apache, но все еще не ясно.


Ответы:


1

хотя этому вопросу несколько месяцев, я только что наткнулся на него, исследуя свой вопрос. Я создал минимальный пример, чтобы увидеть, как уплотнение работает с Java, возможно, это будет полезно и для вас:

https://gist.github.com/anonymous/f78184eaeec3ee82b15182aec24a432a

Кроме того, сверившись с документацией, я использовал следующую конфигурацию на уровне темы, чтобы уплотнение началось как можно быстрее:

min.cleanable.dirty.ratio=0.01
cleanup.policy=compact
segment.ms=100
delete.retention.ms=100

При запуске этот класс показывает, что уплотнение работает - всегда есть только одно сообщение с тем же ключом в теме.

При соответствующих настройках это можно будет воспроизвести в командной строке.

11.08.2016
  • Я бы добавил к этому, если вы не заполните хотя бы 1 segment (Тема- ›Раздел-› Сегмент), уплотнение не произойдет. Предположим, что segment.ms = 100 и вы напишете ‹segement.bytes=1GB в течение первых 100 мс вашего теста, тогда у вас будет только 1 сегмент, и ваши данные не будут сжаты. Либо убедитесь, что вы выполняете запись в один и тот же раздел в течение более длительного периода, чем segment.ms, либо установите для segment.bytes более низкое значение, чтобы не все ваши данные помещались в один сегмент. 23.02.2018
  • Принудительная прокрутка сегмента каждые 100 мс - это нормально для теста, но в производстве это будет ужасно неэффективно. По умолчанию 604800000 мс (7 дней). 21.09.2018

  • 2

    Фактически, сжатие журналов видно только тогда, когда количество журналов достигает очень большого количества, например 1 миллиона. Так что, если у вас так много данных, это хорошо. В противном случае, используя изменения конфигурации, вы можете уменьшить это ограничение до 100 сообщений, и тогда вы увидите, что из сообщений с теми же ключами будет только последнее сообщение, а предыдущее будет удалено. Лучше использовать сжатие журналов, если у вас есть полный снимок данных каждый раз, иначе вы можете потерять предыдущие журналы с тем же связанным ключом, что может быть полезно.

    09.03.2016
  • как это можно сделать с помощью инструментов командной строки, предоставляемых Kafka? 15.12.2017

  • 3

    Чтобы проверить свойство Topics из интерфейса командной строки, вы можете сделать это с помощью Kafka-themes cmd:

    https://grokbase.com/t/kafka/users/14aev0snbd/command-line-tool-for-topic-metadata

    23.09.2018
  • Это может отображать cleanup.policy=compact, но не подтверждает, что тема действительно уплотняется. 25.04.2019

  • 4

    Рекомендуется также взглянуть на log.roll.hours, который по умолчанию составляет 168 часов. Проще говоря: даже если у вас не очень активная тема и вы не можете заполнить максимальный размер сегмента (по умолчанию 1 ГБ для обычных тем и 100 МБ для смещенных тем) за неделю у вас будет закрытый сегмент размером меньше log.segment.bytes . Этот отрезок можно уплотнить на следующем повороте.

    07.03.2018

    5

    Вы можете сделать это с помощью интерфейса командной строки kafka-themes. Запускаю из докера (confluentinc/cp-enterprise-kafka:6.0.0).

    $ docker-compose exec kafka kafka-topics --zookeeper zookeeper:32181 --describe --topic count-colors-output
    Topic: count-colors-output  PartitionCount: 1   ReplicationFactor: 1    Configs: cleanup.policy=compact,segment.ms=100,min.cleanable.dirty.ratio=0.01,delete.retention.ms=100
        Topic: count-colors-output  Partition: 0    Leader: 1   Replicas: 1 Isr: 1
    

    но не запутайтесь, если вы ничего не видите в поле «Конфигурация». Это происходит, если использовались значения по умолчанию. Итак, если вы не видите cleanup.policy=compact в выводе - тема не уплотнена.

    16.12.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..