kafka日志清理配置

devtools/2024/11/15 19:03:05/

log.retention.bytes 是 Apache Kafka 配置文件中的一个参数,用于指定 Kafka 日志文件的最大存储大小。该参数控制每个日志主题分区(log partition)可以保留的最大字节数。

详细解释:

在 Kafka 中,消息以日志(log)的形式保存在磁盘上,每个日志主题有一个或多个分区,每个分区会存储消息数据。为了控制存储空间的使用,Kafka 允许设置日志的保留策略。

log.retention.bytes 参数指定了 单个分区 中日志数据的最大字节数。也就是说,当一个日志分区的大小达到这个值时,Kafka 将会删除旧的日志文件来为新的日志腾出空间。

作用:

  • 控制日志大小:此配置用于限制每个分区的日志存储空间。当分区的大小达到此值时,Kafka 会根据保留策略删除旧的日志数据。
  • 自动清理旧数据:当日志文件大小超出该限制时,Kafka 会根据保留策略删除最旧的日志消息,以保持分区的存储大小在指定的限制内。

默认值:

log.retention.bytes 默认值为 -1,表示没有大小限制,即不通过大小来控制日志的保留。Kafka 会依赖 log.retention.ms(日志保留时间)来控制数据的删除。

配置示例:

 

propertiesCopy Code

log.retention.bytes=1073741824

这个配置会将每个分区的日志文件大小限制为 1 GB(1 GB = 1073741824 字节)。当一个分区的日志大小达到 1 GB 时,Kafka 将会删除最旧的消息,直到日志文件大小不再超过这个限制。

组合使用 log.retention.ms 和 log.retention.bytes

  • log.retention.ms:控制消息的最大保留时间(例如:7 天)。这是时间维度的清理策略。
  • log.retention.bytes:控制每个分区的最大日志大小(字节)。这是大小维度的清理策略。

如果同时配置了这两个参数,Kafka 将会根据这两个条件之一触发日志清理。也就是说,日志会在 满足时间条件达到大小限制 时被删除。

使用场景:

  • 磁盘空间有限的情况:如果 Kafka 集群的磁盘空间有限,配置 log.retention.bytes 可以防止日志文件占满磁盘空间。
  • 高吞吐量的集群:在吞吐量较高的 Kafka 集群中,日志数据会迅速积累,配置此参数可以有效控制存储压力,避免磁盘空间耗尽。
  • 与 log.retention.ms 配合使用:通过合理设置时间和大小的结合,能够精细化控制日志数据的存储方式。

配置示例:

假设你有一个 Kafka 集群,并且希望每个分区的日志最大保持 5 GB,而日志文件的最大保留时间为 3 天,可以配置如下:

 

propertiesCopy Code

log.retention.bytes=5368709120 # 5 GB log.retention.ms=259200000 # 3 天 (3 * 24 * 60 * 60 * 1000 毫秒)

这样,Kafka 会在日志文件达到 5 GB 或 3 天时,根据设置的策略删除旧的消息。

需要注意的事项:

  1. 避免过低设置:如果设置的 log.retention.bytes 太小,可能会导致频繁删除数据,这可能会影响消费者的消费进度,尤其是在有高吞吐量或者消费者消费较慢的场景下。
  2. 磁盘性能考虑:频繁的日志清理会增加磁盘 I/O 负担,影响集群的性能。因此需要根据实际的硬件和业务需求调整此参数。

总结:

log.retention.bytes 主要用于控制 Kafka 日志分区的最大存储空间,当分区日志的大小达到该限制时,Kafka 会清理最旧的消息来保持分区大小。与时间保留策略(log.retention.ms)配合使用,可以精细控制数据的存储和清理策略,避免过多的磁盘占用。


http://www.ppmy.cn/devtools/134235.html

相关文章

Python爬虫定义入门知识

Python爬虫,也称为网络爬虫或网页爬虫,是一种自动化程序,用于抓取互联网上的数据。Python因其简洁的语法和强大的库支持,成为编写爬虫的首选语言之一。以下是Python爬虫的一些基本概念和解读: 1. 基本概念 爬虫&…

Python学习从0到1 day27 Python 高阶技巧 ③ 设计模式 — 单例模式

此去经年,再难同游 —— 24.11.11 一、什么是设计模式 设计模式是一种编程套路,可以极大的方便程序的开发最常见、最经典的设计模式,就是我们所学习的面向对象了。 除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模…

element-plus <el-date-picker>日期选择器踩坑!!!!

我怎么一上午踩两个坑&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;大声bb&#xff09; 原来的vue2老项目是这样写的 <el-form-item label"时间" prop"time"><el-date-pickerv-model"addForm.time"typ…

建立更及时、更有效的安全生产优化提升策略的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。增…

使用react+copy-to-clipboard封装双击复制组件

前言&#xff1a; 最近在公司研发后台系统&#xff0c;用户反馈在双击某些信息时希望可以进行复制的操作&#xff0c;多处使用进而封装为组件 首先&#xff1a;安装copy-to-clipboard npm i --save copy-to-clipboard 其次&#xff1a;封装组件 import React, { memo, useCal…

2024年9月 GESP CCF C++七级编程能力等级考试认证真题

1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 已知小写字母 b 的ASCII码为98&#xff0c;下列C代码的输出结果是&#xff08; &#xff09;。 #include <iostream> using namespace std; int main() { char a b; a; cout <&l…

力扣 LeetCode 541. 反转字符串II(Day4:字符串)

解题思路&#xff1a; i可以成段成段的跳&#xff0c;而不是简单的i class Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i 0; i < ch.length; i 2 * k) {// 2. 剩余字符小于 …

举例通俗易懂地理解数据结构

以下是几个数据结构的基础讲解&#xff1a; 1. 数组 (Array) 数组是最简单、最常用的数据结构。它在内存中分配一块连续的空间&#xff0c;并且所有元素的类型相同。 C语言示例&#xff1a; #include <stdio.h>int main() {int arr[5] {10, 20, 30, 40, 50};// 访问数…