Кафка + как избежать нехватки дискового пространства - PullRequest
0 голосов
/ 24 октября 2018

Я хочу описать следующий случай, который был на одном из наших производственных кластеров

У нас есть кластер ambari с HDP версии 2.6.4

Кластер включает в себя 3 машины kafka - в то время как каждый kafka имеетдиск с 5 T

Мы увидели, что все диски kafka были размером 100%, поэтому диск kafka был переполнен, и это является причиной сбоя всех брокеров kafka

df -h /kafka
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         5T   5T   23M   100% /var/kafka

ПослеВ результате расследования мы увидели, что log.retention.hours=7 days

Так что кажется, что чистка происходит через 7 дней, и, возможно, это причина того, что диски kafka заполнены на 100%, даже если они огромные - 5T

Что мыхочу сделать сейчас - это как избежать этого случая в будущем?

Итак

Мы хотим знать - как избежать использования полной емкости на дисках kafka

Что мынужно установить в конфиге Kafka, чтобы очистить диск kafka в соответствии с размером диска - возможно ли это?

А как узнать правильное значение log.retention.hours?в зависимости от размера диска или другого?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

В Кафке существует два типа хранения журнала; размер и время удержание.Первый срабатывает log.retention.bytes, второй - log.retention.hours.

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

log.cleaner.enable=true
log.cleanup.policy=delete

Затем вам нужно подумать о конфигурации log.retention.bytes, log.segment.bytes и log.retention.check.interval.ms,Для этого необходимо учитывать следующие факторы:

  • log.retention.bytes является минимальной гарантией для отдельного раздела темы , что означает, что еслиВы устанавливаете log.retention.bytes на 512 МБ, это означает, что у вас всегда будет 512 МБ данных (на раздел) на вашем диске.

  • Опять же, если вы установите log.retention.bytes на 512 МБ и log.retention.check.interval.ms до 5 минут (что является значением по умолчанию) в любой момент времени, у вас будет не менее 512 МБ данных + размер данных, созданных в течение 5-минутного окна, до запуска политики хранения.

  • Журнал темы на диске состоит из сегментов.Размер сегмента зависит от параметра log.segment.bytes.Для log.retention.bytes=1GB и log.segment.bytes=512MB у вас всегда будет до 3 сегментов на диске (2 сегмента, которые достигают срока хранения, а третий будет активным сегментом, в который в данный момент записываются данные).

Наконец, вы должны выполнить математические вычисления и рассчитать максимальный размер, который может быть зарезервирован журналами Kafka в любой момент времени на вашем диске, и соответствующим образом настроить вышеупомянутые параметры.Конечно, я бы также посоветовал установить политику хранения времени и соответственно настроить log.retention.hours.Если по истечении 2 дней вам больше не нужны ваши данные, установите log.retention.hours=48.

0 голосов
/ 24 октября 2018

Я думаю, у вас есть три варианта:

1) Увеличивайте размер дисков, пока вы не заметите, что у вас достаточно свободного места, благодаряВаше увеличение и текущая политика хранения 7 дней.Для меня удобная бесплатная сумма составляет около 40% (но это личное предпочтение).

2) Уменьшите свою политику хранения, например, до 3 дней и посмотрите, не заполнятся ли ваши диски послеПериод времени.Правильный срок хранения варьируется между различными вариантами использования.Если вам не нужна резервная копия данных на Kafka, когда что-то идет не так, просто выберите очень низкий срок хранения.Если крайне важно, чтобы вам потребовались данные за эти 7 дней, вам не следует изменять период, но размеры диска.

3) Комбинация опций 1 и 2.

Дополнительная информация об оптимальных политиках хранения : Кафка политики оптимального хранения и удаления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...