【大数据之Kafka】九、Kafka Broker之文件存储及高效读写数据

news2024/9/28 23:23:11

1 文件存储

1.1 文件存储机制

  Topic是逻辑上的概念,而partition是物理上的概念每个partition对应于一个log文件,该log文件中存储的是Producer生产的数据。

  Producer生产的数据会被不断追加到该log文件末端,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment

  每个segment包括:“.index”文件、“.log”文件和.timeindex等文件。这些文件位于一个文件夹下。
  文件夹的命名规则为:topic名称+分区序号,例如:first-0。
在这里插入图片描述
topic数据存储位置:
(1)启动生产者并发送消息。

bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --topic first
> hello

(2)查看hadoop102的/opt/module/kafka/datas/first-0路径上的文件。
在这里插入图片描述
(3)通过工具查看 index 和 log 信息。

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
日志参数配置:
在这里插入图片描述

1.2 文件清理策略

Kafka 中默认的日志保存时间为 7 天,通过调整如下参数修改保存时间:
在这里插入图片描述
日志超时时,Kafka 中提供的日志清理策略有 delete 和 compact 两种。
(1)delete 日志删除:将过期数据删除。
在这里插入图片描述
  (i)基于时间:默认打开。以 segment 中所有记录中的最大时间戳作为该文件时间戳。
  (ii)基于大小:默认关闭。超过设置的所有日志总大小,删除最早的 segment。 log.retention.bytes,默认等于-1,表示无穷大。
在这里插入图片描述
  因为以 segment 中所有记录中的最大时间戳作为该文件时间戳。所以对于002.timeindex文件,一个 segment 中有一部分数据过期,一部分没有过期,此时文件的命名为未过期的数据的时间戳,该时间未过期,所以保留该文件。

(2)compact 日志压缩:对于相同key的不同value值,只保留最后一个版本。
在这里插入图片描述
在这里插入图片描述
  压缩后的offset可能是不连续的,比如上图中没有6,当从这些offset消费消息时,将会拿到比这个offset大的offset对应的消息,实际上会拿到offset为7的消息,并从这个位置开始消费。

  这种策略只适合特殊场景,比如消息的key是用户ID,value是用户的资料,通过这种压缩策略,整个消息集里就保存了所有用户最新的资料。例如一个人的19岁数据可以覆盖18岁数据。

2 高效读写数据

(1)Kafka 本身是分布式集群,可以采用分区技术,并行度高.
(2)读数据采用稀疏索引,可以快速定位要消费的数据
(3)顺序写磁盘
  Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是一直追加到文件末端,为顺序写。
  顺序写能够减少大量的磁头寻址时间。
(4)页缓存 + 零拷贝技术

零拷贝:Kafka的数据加工处理操作交由Kafka生产者和Kafka消费者处理。Kafka Broker应用层不关心存储的数据,所以就不用走应用层,传输效率高。

PageCache页缓存: Kafka重度依赖底层操作系统提供的PageCache功能。当上层有写操作时, 操作系统只是将数据写入 PageCache。当读操作发生时,先从PageCache中查找,如果找不到,再去磁盘中读取。实际上PageCache是把尽可能多的空闲内存都当做了磁盘缓存来使用。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【网络编程】深入了解UDP协议:快速数据传输的利器

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

MILP(混合整数线性规划)

线性规划定义 线性规划问题需要满足以下三个条件: 1.每一个问题用一组决策变量表示某一方案 2.约束条件可以用一组线性等式或者线性不等式来表示 3.目标函数为由决策变量及其有关的价值系数构成线性函数 ILP与MILP定义 整数线性规划中如果所有的变量被限制为&a…

闭包的详细认识与实例

参考https://www.bilibili.com/video/BV1sY4y1U7BT/?spm_id_from333.337.search-card.all.click&vd_source2a0404a7c8f40ef37a32eed32030aa18 一、什么叫闭包 1、问题引出: 不准用全局变量,也不准在调用代码块使用变量,实现计数…

以气象行业为例,浅谈在ToB/ToG行业中如何做好UI设计

商业气象公司是典型的TOB/TOG性质的公司,客户包括农业、能源、航空航天、交通运输、建筑工程等行业,它们需要准确的气象数据、预报和分析来支持业务决策和运营管理。商业气象公司通常会提供各种气象服务,如气象数据采集与分析、预报产品、风险…

软文推广效果怎么样?这篇揭晓答案

软文推广是一种常用的网络营销手段,它通过以文章形式发布关于产品、服务或品牌的信息,来引起受众的兴趣和关注。相较于直接宣传广告,软文推广更注重内容的质量和吸引力,能够更好地传递信息并提升用户转化率。本文伯乐网络传媒将探…

2023高教社杯全国大学生数学建模竞赛选题建议

如下为C君的2023高教社杯全国大学生数学建模竞赛&#xff08;国赛&#xff09;选题建议&#xff0c; 提示&#xff1a;DS C君认为的难度&#xff1a;C<B<A&#xff0c;开放度&#xff1a;B<A<C 。 D、E题推荐选E题&#xff0c;后续会直接更新E论文和思路&#xf…

财报解读:休闲零食全渠道时代来临,卫龙如何追寻长期价值?

2023上半年&#xff0c;休闲零食行业进入边际复苏周期&#xff0c;据Sandalwood电商监测数据&#xff0c;2023年5月和6月&#xff0c;休闲食品线上销售同比增速分别为11%和12%。这一态势下&#xff0c;辣味休闲食品行业的龙头企业卫龙也取得阶段性成果。 近日&#xff0c;卫龙…

python+django医院住院收费管理系统设计与实现vue

基于Python语言设计并实现了医院管理系统。该系统基于B/S即所谓浏览器/服务器模式&#xff0c;应用B/S框架&#xff0c;选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、医生管理、科室管理、挂号管理、接诊管理、诊断结果管理、开处方管理、药房管理、药品出…

浪潮服务器安装CentOS 7 教程,并解决一直卡在 dracut问题

准备工作 服务器装centOS7.9 1.下载正确的镜像。 2.使用软碟通或者refus刻U 盘启动盘。 3.服务器插入U盘&#xff0c;开机&#xff0c;在inspur浪潮logo界面按F11 进入启动菜单页面&#xff0c;选择U 盘启动。 4.开始安装centos系统。 注意&#xff1a;必须使用软碟通或者re…

《C++设计模式》——结构型

前言 结构模式可以让我们把很多小的东西通过结构模式组合起来成为一个打的结构&#xff0c;但是又不影响各自的独立性&#xff0c;尽可能减少各组件之间的耦合。 Adapter Class/Object(适配器&#xff09; Bridge(桥接&#xff09; Composite(组合) Decorator(装饰) 动态…

项目打包docker镜像 | 上传nexus | jenkins一键构建

文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境&#xff0c;并在各种操作系统和平台上进行…

敏感信息防泄漏:透明加密与通信内容安全策略深度解析

随着信息技术的迅猛发展&#xff0c;计算机和网络已经成为了我们日常生活中不可或缺的工具&#xff0c;用于办公、通信和协作。尽管这些信息系统提高了工作效率&#xff0c;但也引发了一系列与信息安全相关的问题&#xff0c;例如如何有效地保护存储在这些系统中的关键数据&…

主动获取用户的ColaKey接口

主动获取用户的ColaKey接口 一、主动获取用户的ColaKey接口二、使用步骤1、接口***重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议***2、请求参数 三、 请求案例和demo1、请求参数例子&#xff08;POST请求&#xff0c;参数json格式&#xff09;2、响应返…

LTD242次升级 | 商品订单可后台改价格 • 产品分享页可下载附件 • 购物车中可修改规格

1、商品订单支持后台修改价格与关闭、支持会员ID搜索 2、购物车支持修改规格、支持预约天数等信息展示 3、官微名片首页支持分享朋友圈&#xff0c;界面展示优化 4、产品分享页支持附件下载 5、详情页附件下载支持保存为原文件名 6、其他已知问题修复与样式优化 01 官微中心 1…

vector以及其使用

vector vector类型是一个标准库中的类型&#xff0c;代表一个容器、集合或者动态数组这样一种概念。既然是容器&#xff0c;那就可以把若干个对象放到里面。当然&#xff0c;这些对象的类型必须相同。简单来说&#xff0c;可以把一堆int型数字放到vector容器中去&#xff0c;复…

Ubuntu之apt-get系列--安装JDK8--方法/教程

原文网址&#xff1a;Ubuntu之apt-get系列--安装JDK8--方法/教程_IT利刃出鞘的博客 简介 本文介绍如何在Ubuntu下安装JDK8。 验证是否安装 可以通过如下命令判断系统是否有安装ssh服务&#xff1a; 命令 java -version 结果 如上所示&#xff0c;表示还没有安装。 查看…

自动化运维工具Ansible教程(一)【入门篇】

文章目录 前言Ansible 入门到精通入门篇进阶篇精通篇入门篇1. Ansible 简介2. 安装 Ansible1. 通过包管理器安装&#xff1a;2. 通过源码安装&#xff1a; 3. Ansible 的基本概念和核心组件4. 编写和运行第一个 Ansible Playbook5. 主机清单和组织结构主机清单组织结构 6. Ansi…

好用免费的Chat GPT(亲测有用)

1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版&#xff0c;点击登陆后&#xff0c;每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…

如何加载卫星影像全国一张图?

我们在“你的家乡清晰可见&#xff0c;全国卫星影像100%覆盖&#xff01;”一文中&#xff0c;为你分享了一个可以十分方便地查看家乡高清卫星影像的方法。 该卫星影像数据源由长光卫星提供&#xff0c;你可以通过水经微图PC端或Web端查看&#xff0c;也可以将该卫星影像加载到…

指针跃动——客户运营服务中心上线了!

指针跃动——客户运营服务中心上线了&#xff01; ——打通客户运营服务全链路—— 随着全国代驾业务需求的不断增长&#xff0c;“指针跃动”宣布&#xff1a;指针跃动——客户运营服务中心上线了&#xff01; 以新的思维方式来看待客户服务&#xff0c;利用人工智能、大数据等…