大数据-68 Kafka 高级特性 物理存储 日志存储概述

news2024/12/27 15:17:27

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(正在更新…)

章节内容

上节我们完成了如下内容:

  • 分区分配策略
  • Range、RoundRobin、Sticky
  • 自定义分区策略实现

在这里插入图片描述

日志存储概述

  • Kafka消息是以主题为单位进行归类,各个主题之间是彼此独立的,互不影响。
  • 每个主题又可以分为一个或多个分区
  • 每个分区各自存在一个记录消息数据的日志文件

我们需要到 Kafka 的 Logs 目录下进行查看:

cd /opt/kafka-logs
pwd
ls

我这里的情况是:
在这里插入图片描述
有一些没展示全的,比如倒数的那几个,是Kafka中现在有的Topic:
在这里插入图片描述

假设我们创建了一个 demo_01 的主题,其存在 个Partition,每个Partition下存在一个[Topic-Partition]命名的消息日志文件。
在分区的日志文件中,可以查看到很多了类型的文件:比如 .index .timestamp .log .snapshot等等
其中文件名一致的合集就叫做:LogSement
在这里插入图片描述

LogSegment

  • 分区日志文件中包含很多的LogSegment
  • Kafka日志追加是顺序写入的
  • LogSegment可以减小日志文件的大小
  • 进行日志删除的时候和数据查找的时候可以快速定位
  • ActiveLogSegment是活跃的日志分段,读写权限,其余的LogSegment只有只读的权限

每个LogSegment都有一个基准偏移量,表示当前LogSegment中第一条消息的Offset。
偏移量是一个64位的长整型数,固定是20位数字,长度未达到,用0进行填补。
可见如下图:
在这里插入图片描述
我服务器上Kafka我的目录情况如下:
在这里插入图片描述

日志与索引

在这里插入图片描述

  • 偏移量索引文件用于记录消息偏移量与物理地址之间的映射关系
  • 时间戳索引文件则根据时间戳查找对应的偏移量。
  • Kafka中的索引文件是以稀疏索引的方式构造消息的索引,并不保证每一个消息在索引文件中都有对应的索引项。
  • 每当写入一定量的消息,偏移量索引文件和时间戳索引分别增加一个偏移量索引项和时间索引项。
  • 通过修改 log.index.interval.bytes 的值,改变索引项的密度。

切分文件

当满足如下几个条件之一,就会触发切分:

  • 当前日志分段文件的大小超过了Broker端的参数 log.segment.bytes 配置的值,默认是1GB
  • 当前日志分段中消息的最大时间戳与当前系统的时间戳相差大于 log.roll.ms 或 log.roll.hour,ms的优先级高于hour,默认是hour,值为168 = 7天
  • 偏移量索引文件或者时间戳索引文件的大小达到Broker参数log.index.size.max.bytes配置的值,默认是10MB。
  • 追加的消息的偏移量与当前日志分段的偏移量之间的差值大于Integer.MAX_VALUE。即要追加的消息的偏移不能转变为相对偏移量。

为什么是 Integer.MAX_VALUE

1024 * 1024 * 1024 = 1073741824
在偏移量索引文件中,每个索引项占用8个字节,并分为两部分。

  • 相对偏移量和物理地址
  • 相对偏移量:表示消息相对于基准偏移量的偏移量,占4个字节。
  • 物理地址:消息在日志分段文件中对应的物理位置,占4个字节。

4个字节刚好对应:Integer.MAX_VALUE,如果大于 Integer.MAX_VALUE,则不能用4个字节进行表示了。

索引切分过程

索引文件会根据 log.index.size.max.bytes 值进行预分配空间,即文件创建的时候就是最大值,当真正的索引文件进行切分的时候,才会将其裁剪到实际数据大小的文件。
这一点是根日志文件有所区别的地方,其意义降低了代码逻辑的复杂性。

索引文件

偏移量索引文件用于记录消息偏移量与物理地址之间的映射关系,时间戳索引文件则根据时间戳查找对应的偏移量。
文件:查看一个topic分区目录下的内容,发现有Log,Index和Timeindex三个文件:

  • log文件名是以文件中第一条message的offset来命名的,实际offset长度是64位,但是这里只使用20位,应付生产是足够的。
  • 一组index+log+timeindex文件的名字是一样的,并且log文件默认写满1G之后,会进行log rolling形成一个新的组合记录消息,这个通过Broker端log.segment.bytes=1073741824指定的。
  • index和timeindex在刚使用时会分配10M的大小,当进行log rolling后,它会修剪为实际的大小。

具体的列表如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文献翻译软件哪个好?6个工具让你轻松看懂外语文献

在医学研究领域,文献翻译软件扮演着至关重要的角色。 医学论文、研究报告和临床指南等,往往包含了大量的专业术语和复杂的句子结构,对于非母语者来说,理解这些内容无疑是一项挑战。 幸运的是,随着技术的发展&#xf…

巴黎奥运会8K转播科技为国产品牌自主研发设计

这个夏天,顶流是属于巴黎奥运会中国队的。 20枚金牌、15枚银牌、12枚铜牌......这个数字正随着赛事推进而不停在增加。赛场之上,中国健儿奋力拼搏、捷报频传,令人热血沸腾;赛场之外,另一支来自中国企业的“奥运选手”…

Linux OS:基于阻塞队列的生产者消费者模型

Linux OS:基于阻塞队列的生产者消费者模型 前言一、阻塞队列的大致框架二、生产者向阻塞队列中生产数据三、消费者获取阻塞队列中数据四、总体生产和消费思路及测试代码4.1 单生产单消费4.2 多生产多消费 五、所以代码 前言 阻塞队列是一种常用于实现生产者消费者模…

大模型微调技术PEFT

1. 横向对比 总体概览: 方法Transformer 中如何应用特点Prompt Tuning在输入到Transformer的input文本中添加Prompthard 模式prompt CO-STARP-tuning在输入到Transformer的embedding 层添加Promptsoft 模式 promptAdapter Tuning在 Transformer 中间层插入 Adapt…

MATLAB代码|蚁群算法|计算二元函数最大值

总述 蚁群方法求解二元函数的最大值。蚂蚁群先随机分布在定义域内,如下: 计算结束后,得到如下的分布,再计算分布均值,得到此时的自变量取值,因为是二元函数,所以有两个自变量,带入…

Qt 实战(9)窗体 | 9.1、QWidget

文章目录 一、QWidget1、定义与概念2、继承体系3、常用特性3.1、事件处理3.2、布局管理3.3、子控件与父子关系3.4、右键菜单 4、注意事项5、总结 前言: 在Qt这一强大的跨平台C图形用户界面应用程序开发框架中,QWidget扮演着至关重要的角色。作为所有用户…

【日记】为啥家族原发性高血压的人还喜欢喝酒啊……(442 字)

正文 今天跟人吵了一下午架,因为有一张报表换了新表,所有人都不知道怎么报。上级行一个想法,我一个想法。吵完都发现对方说得有道理,于是决定明天问省分行。难绷。草台班子。 鱼儿说他最近喜欢上了喝酒。我们劝他的同时&#xff0…

太阳光度计CE-318数据处理

太阳光度计CE-318数据处理 备注:处理公式 在我国近海,α的值在0到3之间,所以他们相对误差最大不超过25%,而通过查阅相关资料,北京地区α的值可以近似的取1.665。 大气是不断运动的,气溶胶在短时间内也可…

【网络安全】https协议的加密方案避免中间人攻击(MITM攻击)导致的数据泄露风险

目录 引言 概念准备 中间人 加密 数据摘要 && 数据指纹 数字签名 密钥加密 中间人攻击 CA证书 https加密的解决方案 个人主页:东洛的克莱斯韦克-CSDN博客 引言 http在应用层协议中是明文传输协议,它是通信双方传输数据时的一种约定。【…

超声波便携式气象站:精准监测,随身携带

在追求高效与便捷的今天,超声波便携式气象站以其独特魅力脱颖而出,成为众多行业及户外爱好者的理想选择。超声波便携式气象站采用多采集装置一体式设计,不仅实现了体积的小型化与重量的轻量化,更便于用户随身携带,随时…

期权杠杆与期货杠杆的区别是什么?

期权与股指期货在杠杆性上展现出截然不同的特性,这些特性对投资者的策略选择具有深远影响。首先,股指期货采用保证金制度,其杠杆比例是恒定的,无论市场如何波动,投资者在月初设定的十倍杠杆到月尾仍保持不变。相比之下…

STM32常见的下载方式有三种

经过对比,推荐使用 SWD下载,只需要一个仿真器(如jLINK、ST LINK、 CMSIS DAP 等),比较方便。 不推荐使用串口下载(速度慢、无法仿真和调试)和 JTAG 下载(占用 IO 多)。

Java语言程序设计基础篇_编程练习题*16.7 (设置时钟的时间)

*16.7 (设置时钟的时间) 编写一个程序,显示一个时钟,并通过在三个文本域中输入小时、分钟和秒 钟来设置时钟的时间,如图16-38b 所示。使用程序清单14-21的ClockPane改变时钟大小使其居于面板中央 习题思路 实例化一个ClockPane(在程序清单1…

【网络安全渗透测试零基础入门必知必会】之什么是文件包含漏洞分类(非常详细)零基础入门到精通,收藏这一篇就够了

一、前言 这是大白给粉丝盆友们整理的网络安全渗透测试入门阶段文件包含渗透与防御第1篇。 本文主要讲解什么是文件包含漏洞、本地文件包含漏洞 喜欢的朋友们,记得给大白点赞支持和收藏一下,关注我,学习黑客技术。 一、什么是文件包含漏洞…

the request was rejected because no multipart boundary was found

文章目录 1. 需求描述2. 报错信息3. 探索过程1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票,经过后端解析PDF之后,将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.util.…

VSCode远程调试Linux程序

VS 安装CodeRunner插件 菜单→添加配置→lunch.json中设置如下: program填入要调试的文件 {"version": "0.2.0","configurations": [{"name": "gdb renderPng","type": "cppdbg","re…

为什么某央企可以抓到红队攻击,而你不行?

国家HVV行动从2016年到2024年已经是第9年了,HVV行动目的就是保卫国家关键基础设施的网络安全行动,更是一场实战化的网络攻击与防御实战,这些年来红队攻击手段层出不穷,最为典型的就是 0/N Day、弱口令、社工钓鱼等,也极…

北京青蓝智慧科技ITSS服务经理:长安链ChainBridge“链桥”问世 加速国家级区块链网络互联互通

8月5日,据国家区块链技术创新中心消息,我国首个完全自主控制的区块链软硬件技术系统——长安链,正式推出了全场景技术平台ChainBridge“链桥”。 此平台能够支持所有异构和同构的区块链进行协作,满足跨领域、跨地域、跨行业及跨层…

用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn

写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回(栈帧弹出线程栈)相关的指令xReturn 。 1:正文 因为invokexxx指令和普通的指令不同,会创建一个新的栈帧,并压倒操作数栈中,所以我…

《黑神话:悟空》在PS5上优化得不错 能达到2K/60帧

《黑神话:悟空》是今年最受玩家期待的游戏之一,但许多粉丝担心该作优化不佳,因为其使用的是虚幻5引擎。虚幻5引擎会导致性能问题出现,游戏 科学的新作也将面临同样问题。但有新报告称,《黑神话》PS5版优化得相当不错&a…