【发布时间】:2018-10-29 06:16:31
【问题描述】:
log.retention.byte参数的主要作用之一是避免kafka磁盘满大小,或者说清除数据日志以避免kafka磁盘满
log.retention.bytes – 是每个主题分区的日志中保留的数据量。默认情况下,日志大小是无限的。
我们还可以看到注意 - 这是每个分区的限制,因此将此值乘以分区数来计算为主题保留的总数据。
为了更好地理解,我们举个小例子(动手做总是更好)
在kafka机器的/var/kafka/kafka-logs下我们有以下topic partitions,而Topic名字是-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
在每个分区下我们都有以下日志(示例)
4.0K 00000000000000023657.index
268K 00000000000000023657.log
4.0K 00000000000000023657.timeindex
4.0K 00000000000000023854.index
24K 00000000000000023854.log
4.0K 00000000000000023854.timeindex
在集群中,我们有 3 台 kafka 机器(3 个代理) 关于 kafka 存储 - 每个 kafka 包含大小为 100G 的磁盘
假设我们要在磁盘占总磁盘的 70% 时清除主题中的日志,
那么现在让我们尝试根据上面的信息来计算log.retention.bytes的值
因为我们有 10 个主题分区,并且我们希望将磁盘的总大小限制为 70G
那么我的假设是按照以下方式进行计算
每个分区将限制为 7G 和 7G 转换为字节,因此它是 7516192768 字节
7G X 10 = 70G(占总磁盘的 70%)
看来 log.retention.bytes 应该设置为 7516192768 ,以便将每个分区限制为 7516192768 字节
我的假设是否合乎逻辑?
如果不是,那么正确计算 - log.retention.bytes ? ,基于kafka磁盘为100G,我们在/var/kafka/kafka-logs下只有10个topic分区
【问题讨论】:
-
没有重复,因为来自 kafka + 如何避免 kafka 磁盘变成 100% 的答案没有解释如何调整 log.retention.byte
-
我的问题的目标是了解如何根据我的集群和磁盘大小计算 log.retention.byte ,因为计算不是我之前的问题的一部分,所以我问这个当前问题
-
在我的回答中,我已经解释了应该考虑哪些因素以避免超出磁盘存储空间。
-
是的,但是,在我的情况下,我们有 3 台 kafka 机器,我想避免磁盘达到 70% 的情况,所以不清楚如何做到这一点,如果你愿意,可以添加关于我上一个问题的附加信息,我将删除这个问题
标签: apache-kafka