相关文章推荐
好帅的砖头  ·  flutter large_xml ...·  1 年前    · 
发财的李子  ·  python - SyntaxError: ...·  1 年前    · 
老实的海龟  ·  scikit-learn ...·  1 年前    · 

1 删除策略

Kafka日志管理器允许定制删除策略。目前的策略是删除修改时间在N天之前的日志(按时间删除),也可以使用另外一个策略:保留最后的N GB数据的策略(按大小删除)。为了避免在删除时阻塞读操作,采用了copy-on-write形式的实现,删除操作进行时,读取操作的二分查找功能实际是在一个静态的快照副本上进行的,这类似于Java的CopyOnWriteArrayList。

Kafka消费日志删除思想:Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用

1

2

3

4

5

6

7

log.cleanup.policy=delete启用删除策略

直接删除,删除后的消息不可恢复。可配置以下两个策略:

清理超过指定时间清理:

log.retention.hours=16

超过指定大小后,删除旧的消息:

log.retention.bytes=1073741824

log.cleaner.enable=false  默认使用 log.retention.hours 或 log.retention.bytes的配置

2 压缩策略

将数据压缩,只保留每个key最后一个版本的数据。首先在broker的配置中设置 log.cleaner.enable=true 启用cleaner,这个默认是关闭的。在Topic的配置中设置 log.cleanup.policy=compact 启用压缩策略。
压缩策略的细节如下:

如上图,在整个数据流中,每个Key都有可能出现多次,压缩时将根据Key将消息聚合,只保留最后一次出现时的数据。这样,无论什么时候消费消息,都能拿到每个Key的最新版本的数据。
压缩后的offset可能是不连续的,比如上图中没有5和7,因为这些offset的消息被merge了,当从这些offset消费消息时,将会拿到比这个offset大的offset对应的消息,比如,当试图获取offset为5的消息时,实际上会拿到offset为6的消息,并从这个位置开始消费。
这种策略只适合特俗场景,比如 消息的key是用户ID,消息体是用户的资料,通过这种压缩策略,整个消息集里就保存了所有用户最新的资料。
压缩策略支持删除,当某个Key的最新版本的消息没有内容时,这个Key将被删除,这也符合以上逻辑。

转自: https://www.cnblogs.com/moonandstar08/p/6146995.html

Kafka中用于保存消费者消费位移的主题“__consumer_offsets”使用的就是Log Compaction策略。

转自: https://blog.csdn.net/u013256816/article/details/80487758?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-10&spm=1001.2101.3001.4242

cleanup.policy: delete
segment.bytes: 每个segment的大小,达到这个大小会产生新的segment, 默认是1G
segment.ms: 配置每隔n ms产生一个新的segment,默认是168h,也就是7天
retention.bytes: 总的segment的大小限制,达到这个限制后会删除旧的segment,默认值为-1,就是不会删除
retention.ms: segment的最后写入record的时间-当前时间 > retention.ms 的segment会被删除,默认是168h, 7天

转自: https://blog.csdn.net/u013200380/article/details/106453013?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control

1 删除策略Kafka日志管理器允许定制删除策略。目前的策略是删除修改时间在N天之前的日志(按时间删除),也可以使用另外一个策略:保留最后的N GB数据的策略(按大小删除)。为了避免在删除时阻塞读操作,采用了copy-on-write形式的实现,删除操作进行时,读取操作的二分查找功能实际是在一个静态的快照副本上进行的,这类似于Java的CopyOnWriteArrayList。Kafka消费日志删除思想:Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定.
Kafka 消息 可以被 删除 吗?如果可以,有哪些 删除 策略 Kafka 如何保证 消息 的有序性? Kafka 和其他 消息 中间件(如ActiveMQ、RabbitMQ)的区别是什么? Kafka 的消费者组是什么?它的
一、更改日志输出级别   config/log4j.properties中日志的级别设置的是TRACE,在长时间运行过程中产生的日志大小吓人,所以如果没有特殊需求,强烈建议将其更改成INFO级别。具体修改方法如下所示,将config/log4j.properties文件中最后的几行中的TRACE改成INFO,修改前如下所示: log4j.logger. kafka .network.RequestC...
方法一:快速配置 删除 法(简单粗暴,如果这个主题有程序还在消费都,此时 KAFKA 就game over) 1. kafka 启动之前,在server.properties配置delete.topic.enable=true 2.执行命令bin/ kafka -topics.sh --delete --topic test --zookeeper zk:2181或者使用 kafka -manager集群管理工具 删除 注意:如果 kafka 启动之前没有配置delete.topic.enable=true,topic只会标记
一、 删除 Kafka 产生的data 重新安装 kafka ,后面重新分配的 kafka 一直安装不成功,是因为停用时不会 删除 已经有点数据。所以需要注意 删除 /var/local/ kafka /data 下的数据文件,可以看这个路径下的文件: 二、 删除 Kafka 在 Zookeeper 中产生的主题数据 首先先连接 Zook...
什么是发布订阅 消息 系统 数据( 消息 )的发送者(发布者)不会直接把 消息 发送给接受者,这是发布与订阅 消息 系统的一个特点。发布者以某种方式对 消息 进行分类,接受者(订阅者)订阅他们,一遍接收特定类型的 消息 。发布与订阅系统一般会有一个broker,也就是发布 消息 的中心点。 什么 kafka Kakfa起初是由LinkedIn公司开发的一个分布式的 消息 系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、S
1、但需要从磁盘读取数据时候,要确定读取的数据在哪个磁道,哪个扇区 –首先必须找到柱面,即磁头需要移动对准响应的磁道,这个过程叫做寻道,所以耗费的时间叫做寻道时间 –然后目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间,一次访问磁盘请求(读/写)完成的过程有三个动作组成 (1)寻道时间:磁头移动定位到指定磁道的时间 (2)旋转延迟:等待指定扇区从磁头下旋转经过的时间 (3)数...
Kafka 是一个高吞吐量的分布式发布订阅 消息 系统,它不支持查询 历史 消息 记录。 Kafka 只保留了一定时间范围内的 消息 记录,超出时间范围的 消息 将被自动 删除 。因此,如果您需要查询 历史 消息 记录,您需要通过备份或者其他方式将 消息 记录保存下来。 如果您使用的是 Kafka 0.10.0版本或更高版本,您可以使用 Kafka Connect来将 消息 记录导出到其他系统或存储中。例如,您可以使用 Kafka Connect将 消息 记录导出到Hadoop集群中的HDFS或者Amazon S3。然后,您可以使用Hive或者其他工具来查询 历史 消息 记录。 如果您使用的是较早版本的 Kafka ,您可以考虑使用 Kafka Mirror Maker将 消息 复制到另一个 Kafka 集群中,并将该集群配置为永久存储 消息 记录。然后,您可以使用该集群中的工具来查询 历史 消息 记录。 总之,要查询 历史 消息 记录,您需要在 Kafka 外部进行备份或者导出,并使用适当的工具进行查询。