gpt4 book ai didi

apache-kafka - kafka + 如何避免磁盘存储不足

转载 作者:行者123 更新时间:2023-12-04 05:19:00 25 4
gpt4 key购买 nike

我想描述我们的生产集群之一上的以下案例

我们有 HDP 版本 2.6.4 的 ambari 集群

集群包括 3 台 kafka 机器——而每个 kafka 有 5 T 的磁盘

我们看到的是所有 kafka 磁盘都是 100% 大小,所以 kafka 磁盘已满,这就是所有 kafka 代理失败的原因

df -h /kafka
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 5T 5T 23M 100% /var/kafka

经过调查我们看到 log.retention.hours=7 days
所以似乎清除是在 7 天之后,也许这就是 kafka 磁盘即使它们很大也 100% 已满的原因 – 5T

我们现在想要做的——是如何在 future 避免这种情况?

所以

我们想知道 – 如何避免 kafka 磁盘上的全部已用容量

我们需要在 Kafka config 中设置什么才能根据磁盘大小清除 kafka 磁盘 - 这可能吗?

以及如何知道 log.retention.hours 的正确值?根据磁盘大小或其他?

最佳答案

在Kafka中,日志保留有两种类型;大小和时间保留。前者由log.retention.bytes触发而后者来自 log.retention.hours .

在您的情况下,您应该注意大小保留,有时配置起来非常棘手。假设你想要一个 delete清理策略,您需要配置以下参数

log.cleaner.enable=true
log.cleanup.policy=delete

那么就需要考虑 log.retention.bytes的配置, log.segment.byteslog.retention.check.interval.ms .为此,您必须考虑以下因素:
  • log.retention.bytes 的最低保证主题的单个分区 ,这意味着如果您设置 log.retention.bytes到 512MB,这意味着您的磁盘中将始终有 512MB 的数据(每个分区)。
  • 同样,如果您设置 log.retention.bytes到 512MB 和 log.retention.check.interval.ms到 5 分钟(这是默认值),在任何给定时间,在触发保留策略之前,您将拥有至少 512MB 的数据 + 5 分钟窗口内生成的数据大小。
  • 磁盘上的主题日志由段组成。段大小取决于 log.segment.bytes范围。对于 log.retention.bytes=1GBlog.segment.bytes=512MB ,磁盘上将始终有最多 3 个段(2 个段达到保留,第 3 个段将是当前写入数据的事件段)。

  • 最后,您应该进行数学计算并计算 Kafka 日志在任何给定时间在您的磁盘上可能保留的最大大小,并相应地调整上述参数。当然,我也建议设置时间保留策略并配置 log.retention.hours因此。如果 2 天后您不再需要您的数据,则设置 log.retention.hours=48 .

    关于apache-kafka - kafka + 如何避免磁盘存储不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52970153/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com