zoukankan      html  css  js  c++  java
  • Kafka学习笔记之Kafka日志删出策略

    0x00 概述

    kafka将topic分成不同的partitions,每个partition的日志分成不同的segments,最后以segment为单位将陈旧的日志从文件系统删除。

    假设kafka的在server.properity文件中设置的日志目录为tmp/kafka-logs,对于名为test_perf的topic。假设两个partitions,那么我们可以在tmp/kafka-logs目录下看到目录VST_TOPIC-0,VST_TOPIC-1。也就是说kafka使用目录表示topic 分区。VST_TOPIC-0目录下下,可以看到后缀名为.log和.index的文件,如下

    [root@kafka kafka-logs]# ls test_perf-0/
    00000000000003417135.index.deleted 00000000000003518540.index 00000000000003619945.index
    00000000000003417135.log.deleted 00000000000003518540.log 00000000000003619945.log

    如果所有待删除的陈旧日志都清理了,那么是看不到后缀名为.deleted的文件的。

    0x01 基于时间的删除策略

    server.properity文件中设置如下:

    log.retention.hours=168 //7d
    log.retention.check.interval.ms=300000 //5min
    log.segment.bytes=1073741824 //1G
    log.cleaner.delete.retention.ms=86400000 // 1d
    log.cleaner.backoff.ms=15000 //15s

    每个segment的大小为1GB,每5分钟检查一次是否有segment已经查过了7d,如果有将其标记为deleted。标记为deleted的segment默认会保留1天,清理线程会每隔15秒检查一次,是否有标记为deleted的segment的保留时间超过一天了,如果有将其从文件系统删除。

    大家注意,kafka清理时是不管该segment中的消息是否被消费过,它清理的依据为是否超过了指定的保留时间,仅此而已。

    0x02 基于文件大小的删除策略

    server.properity文件中设置:

    log.retention.bytes(原来写的是log.segment.bytes)参数默认没有指定。
    你可以同时指定log.retention.bytes和log.retention.hours来混合指定保留规则。一旦日志的大小超过了log.retention.bytes就清除老的segment,一旦某个segment的保留时间超过了规定的值同样将其清除。

    log.cleanup.policy属性指定清理策略,默认策略为delete,可选的为compact

  • 相关阅读:
    BZOJ1787 [Ahoi2008]Meet 紧急集合[结论题]
    poj3728 The merchant[倍增]
    poj2750 Potted Flower[线段树]
    poj2482 Stars in Your Window[扫描线]
    poj2182 Lost Cows[BIT二分]
    UVA12096 The SetStack Computer
    第05组(65) 需求分析报告
    团队介绍与选题报告
    数据采集技术第三次作业
    结对编程作业
  • 原文地址:https://www.cnblogs.com/JetpropelledSnake/p/11113617.html
Copyright © 2011-2022 走看看