其他分享
首页 > 其他分享> > |NO.Z.00064|——————————|BigDataEnd|——|Hadoop&kafka.V49|-------------------------------------------|ka

|NO.Z.00064|——————————|BigDataEnd|——|Hadoop&kafka.V49|-------------------------------------------|ka

作者:互联网



[BigDataHadoop:Hadoop&kafka.V49]                                                                          [BigDataHadoop.kafka][|章节二|Hadoop生态圈技术栈|kafka|日志清理|]








一、日志清理
### --- 日志清理

~~~     # Kafka 提供两种日志清理策略:
~~~     日志删除:按照一定的删除策略,将不满足条件的数据进行数据删除
~~~     日志压缩:针对每个消息的 Key 进行整合,对于有相同 Key 的不同 Value 值,只保留最后一个版本。
~~~     Kafka 提供 log.cleanup.policy 参数进行相应配置,默认值: delete ,还可以选择compact 。
~~~     主题级别的配置项是 cleanup.policy 。
二、日志删除
### --- 基于时间

~~~     日志删除任务会根据 log.retention.hours/log.retention.minutes/log.retention.ms 
~~~     设定日志保留的时间节点。如果超过该设定值,就需要进行删除。
~~~     默认是 7 天, log.retention.ms 优先级最高。
~~~     Kafka 依据日志分段中最大的时间戳进行定位。
~~~     首先要查询该日志分段所对应的时间戳索引文件,查找时间戳索引文件中最后一条索引项,
~~~     若最后一条索引项的时间戳字段值大于 0,则取该值,否则取最近修改时间。
### --- 为什么不直接选最近修改时间呢?

~~~     因为日志文件可以有意无意的被修改,并不能真实的反应日志分段的最大时间信息。
### --- 删除过程

~~~     从日志对象中所维护日志分段的跳跃表中移除待删除的日志分段,
~~~     保证没有线程对这些日志分段进行读取操作。
~~~     这些日志分段所有文件添加 上 .delete 后缀。
~~~     交由一个以 "delete-file" 命名的延迟任务来删除这些 .delete 为后缀的文件。
~~~     延迟执行时间可以通过 file.delete.delay.ms 进行设置
~~~     如果活跃的日志分段中也存在需要删除的数据时?
~~~     Kafka 会先切分出一个新的日志分段作为活跃日志分段,该日志分段不删除,删除原来的日志分段。
~~~     先腾出地方,再删除。
### --- 基于日志大小

~~~     日志删除任务会检查当前日志的大小是否超过设定值。
~~~     设定项为 log.retention.bytes ,单个日志分段的大小由 log.segment.bytes 进行设定。
### --- 删除过程

~~~     计算需要被删除的日志总大小 (当前日志文件大小(所有分段)减去retention值)。
~~~     从日志文件第一个 LogSegment 开始查找可删除的日志分段的文件集合。
~~~     执行删除。
### --- 基于偏移量

~~~     根据日志分段的下一个日志分段的起始偏移量是否大于等于日志文件的起始偏移量,
~~~     若是,则可以删除此日志分段。
~~~     注意:日志文件的起始偏移量并不一定等于第一个日志分段的基准偏移量,
~~~     存在数据删除,可能与之相等的那条数据已经被删除了。
### --- 删除过程

~~~     从头开始遍历每个日志分段,日志分段1的下一个日志分段的起始偏移量为21,
~~~     小于logStartOffset,将日志分段1加入到删除队列中
~~~     日志分段 2 的下一个日志分段的起始偏移量为35,小于 logStartOffset,
~~~     将 日志分段 2 加入到删除队列中
~~~     日志分段 3 的下一个日志分段的起始偏移量为57,小于logStartOffset,
~~~     将日志分段3加入删除集合中
~~~     日志分段4的下一个日志分段的其实偏移量为71,大于logStartOffset,则不进行删除。









===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                   ——W.S.Landor



来自为知笔记(Wiz)

标签:Z.00064,分段,删除,NO,偏移量,kafka,---,日志,###
来源: https://www.cnblogs.com/yanqivip/p/16121920.html