kafka入门,文件存储机制(十六)

这篇具有很好参考价值的文章主要介绍了kafka入门,文件存储机制(十六)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件存储机制

kafka的数据文件,kafka,分布式

1、Topic数据的存储机制

topic是逻辑上的概念,而partition是物理上的概念,每个partition对应一个log文件,该log文件中存储就是Producer生产的数据。Producer生产的数据会不断追加到该log文件末端,为防止log文件过大导致数据定位效率低下,Kafka采取可分片和索引机制,将每个partitioner分为多个segment,每个segment包括:“.index"文件、”.log"文件和timeindex等文件,这些文件位于一个文件夹夏,该文件夹的命名规则为:topic名称+分区序号,例如:first-0
1、一个topic分为多个partition
2、一个partion分为多个seagment
3、.log日志文件
4、.index 偏移索引文件
4、 .timeindex事件索引文件
其他文件
说明:index和log文件时以当前segment的第一条信息的offset命名

2、思考:Topic 数据到底存储在什么位置?

存在data文件夹下,这里我是在我的安装路径下
kafka的数据文件,kafka,分布式

cat  cat 00000000000000000000.log 

乱码
kafka的数据文件,kafka,分布式
需要使用工具查看index和log等信息

 kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.index

kafka的数据文件,kafka,分布式

3、index 文件和 log 文件详解

kafka的数据文件,kafka,分布式
1、根据目标offset定位Segment文件
2、找到小于等于目标offset的最大offset对应的索引项
3、定位到log文件
4、向下遍历找到目标Record
注意:
1、index为稀疏索引,大约每往log文件写入4kb数据,会往index文件写入一条索引。
2、index文件中保存的offset相对offset,这样能确保offset的值所占空间不会过大,因此能将offset的值控制固定大小

参数 描述
log.segment.bytes kafka中log日志是分成一块块存储的,此配置是指log日志划分成分的大小,默认1G
log.index.interval.bytes 默认4kb,kafka里面每单写入了4KB大小的日志(.log),然后就往index文件里面记录一个索引,稀疏索引

4、 文件清理策略

Kafka中默认的日志保存事件为7天,可以通过调整如下参数修改保存时间
log.retention.hours,最低优先级小时,默认7天
log.retention.minutes,分钟
log.retention.ms,最高优先级毫秒
log.retention.check.interval.ms,负责设置检查周期,默认5分钟
那么日志一旦超过了设置时间,怎么处理呢?
Kafka中提供的日志清理策略有delete和compact两种
1)delete日志删除:将过期数据删除
log.cleanup.policy = delete所有数据启用删除策略
基于时间:默认打开。以segment中所有记录中的最大时间戳作为该文件时间戳
基于大小:默认关闭,超过设置所有日志总大小,删除最早的segment,log.retention.bytes,默认等
于-1,表示无穷大。
如果一个 segment 中有一部分数据过期,一部分没有过期,怎么处理?
2)compact日志压缩
kafka的数据文件,kafka,分布式
compact日志压缩:对于相同key不同的valu值,值保留最后一个版本
log.cleanup.policy = compact 所 所以有数据启用压缩策略
压缩后的offset是不连续的,比如上图中没有6,当从这些offset消息消息时,将会拿到比这个offset大的offset对应消息,实际上会拿到offset为7的消息,从这个位置开始消费
这种策略只适合特殊场景,比如消息的key是用户ID,value是用户的资料,通过这种压缩策略,整个消息集里面保存了所有用户最新资料文章来源地址https://www.toymoban.com/news/detail-595505.html

到了这里,关于kafka入门,文件存储机制(十六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式存储系统举例剖析(elasticsearch,kafka,redis-cluster)

    1. 概述 对于分布式系统,人们首先对现实中的分布式系统进行高层抽象,然后做出各种假设,发展了诸如CAP, FLP 等理论,提出了很多一致性模型,Paxos 是其中最璀璨的明珠。我们对分布式系统的时序,复制模式,一致性等基础理论特别关注。 在共识算法的基础上衍生了选举

    2024年02月12日
    浏览(32)
  • Hadoop大数据从入门到实战(二)分布式文件系统HDFS

    头歌实践教学平台 教学课堂 大数据从入门到实战 - 第2章 分布式文件系统HDFS 任务描述 本关任务:使用 Hadoop 命令来操作分布式文件系统。 编程要求 在右侧命令行中启动 Hadoop ,进行如下操作。 在 HDFS 中创建 /usr/output/ 文件夹; 在本地创建 hello.txt 文件并添加内容:“ HDFS的

    2024年02月12日
    浏览(31)
  • 【头歌】大数据从入门到实战 - 第2章 分布式文件系统HDFS

    任务描述 本关任务:使用 Hadoop 命令来操作分布式文件系统。 编程要求 在右侧命令行中启动 Hadoop ,进行如下操作。 在 HDFS 中创建 /usr/output/ 文件夹; 在本地创建 hello.txt 文件并添加内容:“ HDFS 的块比磁盘的块大,其目的是为了最小化寻址开销。”; 将 hello.txt 上传至 H

    2024年02月05日
    浏览(27)
  • minio分布式文件存储

    基本介绍 什么是  MinIO         MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如

    2024年02月08日
    浏览(40)
  • FastDFS分布式文件存储

    为什么会有分布式文件系统? 分布式文件系统是面对互联网的需求而产生。因为互联网时代要对海量数据进行存储。很显然靠简单的增加硬盘个数已经满足不了我们的要求。 因为硬盘传输速度有限但是数据在急剧增长,另外我们还要要做好数据备份、数据安全等。 采用分布

    2024年01月23日
    浏览(34)
  • 分布式文件存储系统-FastDFS

            前言:FastDFS 是一个分布式文件存储系统, 主要用于存储和管理 大规模 的 文件数据,如图片、视频、文档等 ,是淘宝前架构师为了存储图片用C语言开发出来的系统。         服务端有两个组件  Tracker Server 与 Storage Server ,对应两个角色: Tracker: 管理和调度集群

    2024年02月13日
    浏览(51)
  • 分布式文件存储MinIO-监控

    MinIO自身提供了关于集群状态和操作的相关的Prometheus SQL指标与支持Prometheus数据模型的监控指标收集工具进行搭配使用,无论是主机部署亦或是云上部署都可以进行集成。官方选定的第三方监控软件为Prometheus和InfluxDB,使用者可以根据各自公司对于监控设施的建设进行选择。

    2024年02月11日
    浏览(42)
  • 第6章 分布式文件存储

    分布式文件存储 1、理解Oauth2.0的功能作模式 2、实现mini商城项目的权限登录 1、了解文件存储系统的概念 2、了解常用文件服务器的区别 3、掌握Minio的应用 官网:

    2024年02月12日
    浏览(28)
  • 如何模拟实现分布式文件存储

    传统做法是是在宕机存储。但随着数据变多,会遇到存储瓶颈 单机纵向扩展:内存不够加内存,磁盘不够家磁盘。有上限限制,不能无限制加下去 多机横向扩展:采用 多台机器存储 ,一台不够就加机器。理论上可以无线 多台机器存储也就意味迈入了 分布式存储 当文件被分

    2024年02月16日
    浏览(40)
  • OSS文件上传、MinIO分布式文件存储系统

    阿里云OSS上传图片 实现步骤: 1. 定义OSS相关配置 application-dev.yml application.yml 2. 读取OSS配置 在sky-common模块中,已定义 3. 生成OSS工具类对象 在sky-server模块 其中,AliOssUtil.java已在sky-common模块中定义 4. 定义文件上传接口 在sky-server模块中定义接口 MinIO分布式文件存储系统 MinI

    2024年01月24日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包