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–每个主题分区的日志中要保留的数据量。默认情况下,日志大小是无限的。
我们还可以看到注意事项—这是每个分区的限制,因此将该值乘以分区数,以计算为主题保留的总数据。
为了更好地理解它,让我们举一个小例子(动手总是更好)
在/var/kafka/kafka日志下的kafka机器中,我们有以下主题分区,而主题名称是-lop.avo.prt.prlop
/var/kafka/kafka日志下的主题分区示例
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存储的kafka机器(3个代理程序)–每个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日志下只有10个主题分区
1条答案
按热度按时间enxuqcxy1#
你在正确的轨道上。只需要记住几件事:
log.retention.bytes
定义Kafka将确保有多少数据可用。所以这是一个下限。磁盘上的最大大小可能很难精确计算,因为它取决于许多设置,如段和索引大小、段滚动时间、清理间隔(大多数)log.*
设置)。有关更多详细信息,请参见kafka保留策略。计划70%的总磁盘使用率是一个好主意,但在实践中,我仍然建议监视磁盘使用情况以避免意外。
根据您的计算,如果要添加分区,则可能需要进行更改。另外请注意,复制副本必须计数,因此如果您创建1个复制系数为3的新分区,则3个代理将需要有可用的空间。