Apache Kafka是一种用于处理实时数据流的高性能分布式消息系统,提供了多个配置项来管理消息的保留策略,其中最常用的是 log.retention.hours。本文将详细介绍如何修改 Kafka 消息保留时长,并分享在实际操作中的一些经验。
一、修改全局配置
1、编辑 server.properties 文件
找到 Kafka 的配置文件 server.properties,通常位于 Kafka 安装目录的 config 目录下。
vi /path/to/kafka/config/server.properties
2、设置 log.retention.hours
将 log.retention.hours 配置项修改为所需的保留时长(以小时为单位)。例如,要保留消息三天(72 小时),可以将其设置为:
log.retention.hours=72
如果使用的是其他单位,可以使用以下配置项:
- olog.retention.minutes:以分钟为单位设置消息保留时长;
- olog.retention.ms:以毫秒为单位设置消息保留时长。
3、重启 Kafka 集群
修改配置文件后,需要重启 Kafka 集群使配置生效。
bin/kafka-server-stop.sh
bin/kafka-server-start.sh config/server.properties
二、修改单个主题的配置
1、使用 Kafka 命令行工具
Kafka 提供了命令行工具 kafka-configs.sh 来修改主题的配置。
bin/kafka-configs.sh –zookeeper localhost:2181 –alter –entity-type topics –entity-name <topic_name> –add-config retention.ms=<保留时长>
例如要将主题 my_topic 的消息保留时长设置为三天,可以执行以下命令:
bin/kafka-configs.sh –zookeeper localhost:2181 –alter –entity-type topics –entity-name my_topic –add-config retention.ms=259200000
2、验证配置
修改配置后,可以使用 kafka-topics.sh 工具验证主题的配置是否生效。
bin/kafka-topics.sh –zookeeper localhost:2181 –describe –topic my_topic
三、实际操作中的经验总结
1、在修改消息保留时长之前,首先要评估业务需求。根据业务场景,确定适当的保留时长。
2、消息保留时长直接影响磁盘使用情况。保留时长越长,需要的存储空间越大。
3、建议逐步调整保留时长,特别是在生产环境中。
4、在修改配置之前,备份现有配置文件和数据日志。
5、某些配置修改需要重启 Kafka 集群才能生效。
四、日志服务SLS介绍
日志服务SLS是阿里云推出的云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升您在研发、运维、运营、安全等场景的数字化能力。
主要功能:
1、数据采集与存储
大规模、低成本接入各种实时日志数据(包括Metric、Event、BinLog、TextLog、Click等)。提供50+实时数据采集方式,快速搭建日志采集平台;强大配置管理能力,轻松应对不同特征业务场景,减轻运维负担。
根据对数据的不同检索时延性及处理能力需求,针对用户对日志有统计分析的需求,提供实时存储,满足日志秒级检索,实时统计分析,实时监控,流式消费等应用能力。针对访问频率较低且无统计分析需求的日志,如审计归档日志。提供低频存储,满足用户对历史日志的回溯检索,归档存储等诉求。低频存储整体使用成本相比实时存储降低80%。
2、数据清洗与流计算
支持与各种实时计算及服务对接,提供完整的进度监控,报警等功能,并可以根据SDK/API实现自定义消费。提供丰富SDK以及编程框架,与各流计算引擎无缝对接。提供丰富监控数据,以及延迟报警机制。
对非结构化日志数据,通过过滤、清洗、脱敏、结构化等加工处理成结构化数据,用于后续SQL 分析、仪表盘、告警等。
3、数据仓库对接(Data Warehouse)
支持数据投递至存储类服务,过程支持压缩、自定义Partition、以及行列等各种存储格式,通过控制台将数据实时投递至OSS、MaxCompute等阿里云产品。
-
广告合作
-
QQ群号:4114653




