【大数据学习 | kafka高级部分】kafka的文件存储原理

在以上部分的讲解中我们知道了,kafka的使用场景就是在流式处理过程中,充当一个中间缓冲介质 的作用,主要功能是将数据先放入到kafka中计算框架会自己拉取要消费和计算的数据过来,采用poll的方式完全适配自身消费速率 。那么kafka的存储和hdfs的存储的区别非常清楚的就可以提现出来,hdfs更加适用于整体的存储和取出,kafka主要做的是流,数据都是按照条进行流转的,主打的是灵活和效率,那么效率提现在哪些方面上呢???

首先topic是按照分区进行划分的 ,因为多个分区可以将存储的数据放入到不同的机器节点上 ,这样起到负载均衡的作用,所以每个broker机器节点上面存储的数据都是多个topic的不同的分区的数据,这样分布式处理可以增加kafka的计算和处理能力

所以broker上面会管理很多topic的不同partition的数据,存储的结构就是以topic-partition方式进行命名的文件夹存储数据 ,但是随着数据的增加,单个分区的数据也会随之增多,这样管理和检索都在一个文件中也是非常低效率的,解决办法就是单个分区的数据也会切段进行存储,每个段称之为segment。

每一个段称之为一个segement。

在官网中形容的是单个日志文件的最大值,默认是1G。

这样不管找寻什么样的数据都会直接找寻相应的segment段落就行了,不管数据多大,其检索范围也不会超过1G。

但是一个G的文件检索还是比较大的,所以kafka在存储数据的时候,首先存储数据在内存中 ,然后将数据刷写到磁盘上 ,这个刷写的大小 是以4K为主的。

在这个插入过程 中会追加的形式 存储到log文件中 ,并且在index和timeindex中存在稀疏的索引数据。

这个时候查询的时候就可以直接去根据文件条数命名的对应segment中查询数据。能够轻易的跳过1G的部分

在具体查询数据的时候可以根据index去log中查询数据,速度更快,效率更高

检索过程为先跳过整体segment部分,然后在segment部分找到index,根据index找到相对应偏移量位置,然后找寻log日志中的数据

以如此方式进行数据检索,这样的存储格式让检索效果更佳明显

以上只是kafka的存储方式之一,主要是为了让数据存储更加方便管理和检索

相关推荐
Tob管理笔记1 分钟前
建筑业如何精准开拓优质客户?技术驱动下的方法论与实践
大数据·云计算·数据库开发
MM_MS3 分钟前
Halcon控制语句
java·大数据·前端·数据库·人工智能·算法·视觉检测
尽兴-42 分钟前
SQL 执行失败如何回滚?事务已提交还能恢复吗?——MySQL 误操作数据恢复全指南
sql·mysql·binlog·undolog·redolog
JZC_xiaozhong1 小时前
主数据同步失效引发的业务风险与集成架构治理
大数据·架构·数据一致性·mdm·主数据管理·数据孤岛解决方案·数据集成与应用集成
T06205141 小时前
【数据集】全国各地区教育139个相关指标数据集(2000-2024年)
大数据
程序员欣宸1 小时前
LangChain4j实战之十二:结构化输出之三,json模式
java·人工智能·ai·json·langchain4j
故乡de云1 小时前
Vertex AI 企业账号体系,Google Cloud 才能完整支撑
大数据·人工智能
汽车仪器仪表相关领域1 小时前
AI赋能智能检测,引领灯光检测新高度——NHD-6109智能全自动远近光检测仪项目实战分享
大数据·人工智能·功能测试·机器学习·汽车·可用性测试·安全性测试
木头程序员2 小时前
大模型边缘部署突破:动态推理技术与精度-延迟-能耗帕累托优化
大数据·人工智能·计算机视觉·自然语言处理·智能手机·数据挖掘
DX_水位流量监测2 小时前
无人机测流之雷达流速仪监测技术分析
大数据·网络·人工智能·数据分析·自动化·无人机