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

server/2024/11/14 2:47:15/

在以上部分的讲解中我们知道了,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的存储方式之一,主要是为了让数据存储更加方便管理和检索


http://www.ppmy.cn/server/141011.html

相关文章

微服务透传日志traceId

问题 在微服务架构中,一次业务执行完可能需要跨多个服务,这个时候,我们想看到业务完整的日志信息,就要从各个服务中获取,即便是使用了ELK把日志收集到一起,但如果不做处理,也是无法完整把一次业…

GeoHash处理经纬度,降维,空间填充曲线

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 参考 https://segmentfault.com/a/1190000042971576 GeoHash原理以及代码实现_geohash编码-CSDN博客…

NLP之ASR之moonshine:moonshine的简介、安装和使用方法、案例应用之详细攻略

NLP之ASR之moonshine:moonshine的简介、安装和使用方法、案例应用之详细攻略 目录 moonshine的简介 moonshine的安装和使用方法 1、安装 推荐使用uv管理Python环境 安装Moonshine包 Torch后端 TensorFlow后端 JAX后端 ONNX运行时 2、使用方法 0、测试 1…

Android下的系统调用 (syscall),内联汇编syscall

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 什么是系统调用 (syscall) 系统调用是操作系统提供给应用程序的一组接口,允许用户空间程序与内核进行交互。 在 Android(基于 Linux …

华硕推出Intel Xeon 6/ Gaudi 3服务器 加速企业AI布局!

(10月23日,台北讯) 华硕服务器新品接力强势助攻,今再推出多款搭载Intel Xeon 6处理器的服务器,包括:多节点的ASUS RS920Q-E12,其兼容适用HPC运算的Intel Xeon 6900系列处理器;以及ASUS RS720Q-E12、RS720-E…

一篇文章解释AI中的“算力”与“数据”两个概念!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、什么是算力?为什么算力重要?算力的发展历程什么是数据?数据的作用数据的应用场景算力与数据的关系总结前言 为什么我要特别讲这两个词呢?因为人工智能的核心其实就是三件事儿:算力、…

「QT」几何数据类 之 QPolygon 多边形类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

计算机的错误计算(一百五十)

摘要 探讨 MATLAB 中 的计算精度问题。当 为含有小数的大数或 ()附近数时,输出会有错误数字。 例1. 已知 计算 直接贴图吧: 另外,16位的正确值分别为 -0.7882256119904400e0、0.1702266977524110e0、-0.…