相关疑难解决方法(0)

kafka + 如何计算 log.retention.byte 的值

log.retention.byte参数的主要作用之一是避免 kafka 磁盘已满,换句话说,清除数据日志以避免 kafka 磁盘已满。

根据以下链接:https : //docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_kafka-component-guide/content/kafka-broker-settings.html

log.retention.bytes – 是每个主题分区在日志中保留的数据量。默认情况下,日志大小不受限制。

我们还可以看到注意——这是每个分区的限制,因此将这个值乘以分区数来计算为主题保留的总数据。

为了更好地理解它让我们举个小例子(动手总是好得多)

在kafka机器/var/kafka/kafka-logs下,我们有以下主题分区,而主题名称是-lop.avo.prt.prlop

/var/kafka/kafka-logs 下的主题分区示例

lop.avo.prt.prlop-1
lop.avo.prt.prlop-2
lop.avo.prt.prlop-3
lop.avo.prt.prlop-4
lop.avo.prt.prlop-5
lop.avo.prt.prlop-6
lop.avo.prt.prlop-7
lop.avo.prt.prlop-8
lop.avo.prt.prlop-9
lop.avo.prt.prlop-10
Run Code Online (Sandbox Code Playgroud)

在每个分区下,我们有以下日志(示例)

4.0K    00000000000000023657.index
268K    00000000000000023657.log
4.0K    00000000000000023657.timeindex
4.0K    00000000000000023854.index
24K     00000000000000023854.log
4.0K    00000000000000023854.timeindex
Run Code Online (Sandbox Code Playgroud)

在集群中我们有 3 台 kafka 机器(3 个代理) 关于 kafka 存储——每个 kafka 包括大小为 100G 的磁盘

假设我们想在磁盘占总磁盘的 70% 时清除主题中的日志,

所以现在让我们尝试根据上述信息计算log.retention.bytes的值

因为我们有 10 个主题分区,并且我们希望将磁盘的总大小限制为 70G

那么我的假设是进行如下计算

每个分区将限制为 7G 和 7G 转换为字节,所以它是?7516192768 字节

7G X 10 = 70G(总磁盘的 70%)

所以似乎log.retention.bytes应该设置为 …

apache-kafka

8
推荐指数
1
解决办法
9498
查看次数

Kafka最佳保留和删除政策

我对卡夫卡很新,所以请原谅我这个问题是微不足道的.我有一个非常简单的设置,用于时序测试,如下所示:

机器A - >写入主题1(代理) - >机器B从主题1读取机器B - >将消息写入主题2(代理) - >机器A从主题2读取

现在我在无限循环中发送大约1400字节的消息,很快就填满了我的小经纪人的空间.我正在尝试为log.retention.ms,log.retention.bytes,log.segment.bytes和log.segment.delete.delay.ms设置不同的值.首先,我将所有值设置为允许的最小值,但似乎这降低了性能,然后我将它们设置为我的代理在完全填满之前可以采取的最大值,但是当删除发生时性能再次下降.是否有最佳实践来设置这些值以获得绝对最小延迟?

谢谢您的帮助!

apache-kafka kafka-consumer-api kafka-python kafka-producer-api

7
推荐指数
1
解决办法
1万
查看次数