Почему у моей папки kafka tmp размер почти такой же, как у диска? - PullRequest
0 голосов
/ 30 апреля 2020

Я разрабатываю производственную среду kafka с этим образованием: 3 сервера ZK, 3 брокера Kafka и два сервера kafka. Я положил свой tmp файл рядом с главной папкой kafka. И я запускаю его в удаленной среде Ubuntu, но не в docker.

Когда я выполняю свою операцию kafka, я столкнулся с ошибкой, которая сообщает о том, что мой диск слишком загружен. Я проверяю свою папку kafka tmp, что ее размер составляет почти 2/3 от размера моего диска, что отключает мой кластер kafka.

Я проверил каждую логическую папку kafka и обнаружил следующее:

  1. 25 connect_offset от рабочих № 1 @ 21 МБ для каждого
  2. 25 connect_offset2 от рабочих № 2 @ 21 МБ для каждого
  3. 25 connect_status от рабочих № .1 @ 21MB за каждого
  4. 25 connect_status2 от работников №2 @ 21MB за каждого
  5. 50 __consumer_offset от обоих работников @ 21MB за каждого
  6. смещение тем @ 21Mb для каждой темы, у меня есть 2 темы, поэтому у меня смещение 6 тем

Проблема в том, что __consumer_offset потребляет больше диска, чем другое смещение, и мой kafka_config не могу справиться с этим. Вот пример моей kafka_configuration:

broker.id=101
port=9099
listeners=PLAINTEXT://0.0.0.0:9099
advertised.listeners=PLAINTEXT://127.0.0.1:9099
num.partitions=3
offsets.topic.replication.factor=3
log.dir=/home/xxx/tmp/kafka_log1
log.cleaner.enable=true
log.cleanup.policy=delete
log.retention.bytes=1073741824
log.segment.bytes=1073741824
log.retention.check.interval.ms=60000
message.max.bytes=1073741824
zookeeper.connect=xxx:2185,xxx:2186,xxx:2187
zookeeper.connection.timeout.ms=7200000
session.time.out.ms=30000
delete.topic.enable=true

И для каждой темы это конфиг:

kafka-topics.sh -create --zookeeper xxx:2185,xxx:216,xxx:2187 --replication-factor 3 --partitions 3 --topic $topic_name --config cleanup.policy=delete --config retention.ms=86400000 --config min.insync.replicas=2 --config compression.type=gzip

И коннект-коннект, подобный этому (коннект-коннект, общий идентичный конфиг, за исключением порта и смещение и статус конфигурации.):

bootstrap.servers=XXX:9099,XXX:9098,XXX:9097
group.id=XXX
key.converter.schemas.enable=true
value.converter.schemas.enable=true
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
offset.storage.topic=connect-offsets
offset.storage.replication.factor=3
config.storage.topic=connect-configs
config.storage.replication.factor=3
status.storage.topic=connect-status
status.storage.replication.factor=3
offset.flush.timeout.ms=300000
rest.host.name=xxx
rest.port=8090
connector.client.config.override.policy=All
producer.max.request.size=1073741824
producer.ack=all
producer.enable.idempotence=true
consumer.max.partition.fetch.bytes=1073741824
consumer.auto.offset.reset=latest
consumer.enable.auto.commit=true
consumer.max.poll.interval.ms=5000000
plugin.path=/xxx/connectors

Совершенно очевидно, что, согласно нескольким документам, Кафке не требуется большое дисковое пространство (наибольшая записанная tmp составляет 36 ГБ).

1 Ответ

2 голосов
/ 30 апреля 2020

Что вы имеете в виду "@ 21 МБ"? Ваш log.segment.bytes установлен на 1 ГБ ...


Во-первых, никогда не используйте /tmp для постоянного хранения. И не используйте /home для данных сервера. Всегда используйте отдельный раздел / диск для данных сервера, а также /var + /var/logs.

Во-вторых, у вас есть 2 соединительных кластера. Используйте те же 3 темы и тот же group.id, тогда у вас будет 1 распределенный кластер, и вы избавите себя от 3 дополнительных тем.

Наконец,

число __consumer_offset потребляет больше диска, чем другое смещение

Ну, да. Все потребительские группы хранят свои смещения там. Это будет самая большая внутренняя топи c, безусловно, в зависимости от вашего offsets.retention.minutes

Кафке не требуется большое дисковое пространство

Это не , когда вы начинаете .

Я видел кластеры с десятками-сотнями ТБ хранилища

Если Вы смотрите выступления Kafka Summit от крупных компаний, которые отправляют ГБ событий в секунду (см. Netflix, Spotify, Uber и др. c)


Кафка в производстве

  1. Apache
  2. Confluent
...