Как устанавливается размер размера записи для каждой записи в разделе kafka?

Я хочу знать, занимает ли каждая запись в теме кафки одинаковый размер независимо от фактического размера сообщения?

Мне известно следующее свойство -> max.message.bytes=1000012, это увеличит размер записи до 1000012 байт.

Мой вопрос: если входящая запись меньше этих байтов, каков будет фактический размер пространства, отведенного для нее?

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
1
0
1 377
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно Документы Кафки,

max.message.bytes: The largest record batch size allowed by Kafka. If this is increased and there are consumers older than 0.10.2, the consumers' fetch size must also be increased so that the they can fetch record batches this large.

Насколько я понимаю, вы спрашиваете, будет ли каждое сообщение резервировать место, равное max.message.bytes.

Ответ - нет. max.message.bytes определяет максимально допустимый размер сообщения, а не размер каждого сообщения.

Ответ принят как подходящий

В Kafka брокер добавляет на диск почти то же самое, что отправил производитель.

Однако, как вы намекнули, производитель оборачивает сообщение в запись и пакет.

Полное описание этих структур данных можно найти в файле документация.

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

Например, для одного сообщения размером 10 байт без ключа и заголовков размер на диске составит 78 байт. Это может показаться большим накладным расходом, но так как он почти постоянен независимо от размера сообщения, то если бы полезная нагрузка составляла 1024 байта, общий объем занятого диска составил бы только 1094 байта.

Если вы принимаете во внимание пакетную обработку, то накладные расходы уменьшаются еще больше, поскольку заголовок пакета (~ 50 байт) будет использоваться для нескольких записей.

Спасибо за Ваш ответ. Насколько я понимаю, все, что получает кафка, сохраняется в смещении темы кафки. Итак, если я получу сообщение-1, оно будет сохранено со смещением, аналогично для сообщения-2 оно будет сохранено со следующим смещением. Но я не знаю о "партировании". Как придет какая-то партия? Можете ли вы помочь в понимании или дать ссылку?

CuriousMind 28.05.2019 19:23

Смещение не имеет никакой связи с размером. У вас может быть сообщение размером 10 МБ со смещением 0 и сообщение размером 1 КБ со смещением 1. Записи Kafka всегда являются частью пакета, но производитель также может включать в пакет несколько записей, чтобы уменьшить общий размер и повысить пропускную способность, см. Настройки производителя linger.ms и batch.sizekafka.apache.org/documentation/#producerconfigs

Mickael Maison 28.05.2019 19:46

Другие вопросы по теме