大数据Kudu(二):Kudu架构

news2025/4/26 19:38:06

文章目录

Kudu架构

一、​​​​​​​Kudu存储模型及概念

二、​​​​​​​​​​​​​​Kudu table存储原理


Kudu架构

一、​​​​​​​Kudu存储模型及概念

Kudu有自己的数据存储模型,不依赖于HDFS、Hive、HBase其他大数据组件。Kudu有自己的集群,数据存储在Kudu自己的集群Tablet Server中。

  • Kudu的存储模型是有结构的表,表中有主键,并且主键唯一,不能重复。
  • 事务支持上与HBase类似,只支持行级ACID事务。
  • Kudu是列式存储,支持数据压缩。
  • Kudu不支持标准SQL,支持Nosql样式的API,例如:put,get,delete,scan。一般企业中kudu与impala进行整合使用,可以使用SQL对数据进行实时OLAP分析。

 

  • Table:

table是数据存储在Kudu的位置,具有schema和全局有序的 primary key。一张table被分成多个tablet,其中Tablet的数量是根据hash或者range进行设置。

  • Tablet:

一个tablet是一张table连续的segment,与其他数据存储引擎或关系型数据的partition相似。Tablet存在副本机制,其中一个副本为leader tablet。一个 tablet 通常由一个 Leader 和两个 Follower 组成, 这些角色分布的不同的服务器中。任何副本都可以对读取进行服务,并且写入时需要在所有副本对应的tablet server之间达成一致性。

  • Master server:

Master Servers使用一个tablet存储集群元数据信息,元数据包括所有tablet Server信息、所有tablet位置信息等。客户端访问某一张表的某一部分数据时, 会先询问 Master server, 获取这个数据的位置, 去对应位置获取或者存储数据。虽然 Master 比较重要, 但是其承担的职责并不多, 数据量也不大, 所以为了增进效率, 这个 tablet 会存储在内存中。生产环境中通常会使用多个 Master server 来保证可用性,给定的时间点只能有一个Master是Leader起作用。

  • Tablet Server :

tablet server 存储 tablet,负责表数据存储且负责和数据相关的所有操作, 包括存储, 访问, 压缩, 其还负责将数据复制到其它机器。对于给定的 tablet,一个 tablet server 充当 leader,其他 tablet server 充当该 tablet 的 follower 副本。只有 leader 服务写请求,然而 leader 或 followers 为每个服务提供读请求。一个 tablet server 可以服务多个 tablets ,并且一个 tablet 可以被多个 tablet servers 服务着。

由于Tablet Server 特殊结构和任务繁重,Kudu最多支持300个服务器,建议每个Tablet Server最多包含2000个tablet(包含follower)。

二、​​​​​​​​​​​​​​Kudu table存储原理

对于一张特定的Kudu表,存储结构如下:

Kudu数据存储实现如下:

一个table根据hash或者range分区分成多个tablet,每个tablet中包含MetaData元数据信息和RowSet信息,RowSet中包含一个MemRowSet和0到多个的DiskRowSet。其中MemRowSet存储insert的数据,一旦MemRowSet写满会flush到磁盘生成一个或多个DiskRowSet,此时MemRowSet清空。MemRowSet默认写满1G或者120s flush一次。DiskRowSet一经写入就无法修改。

另外,memRowSet是行式存储,DiskRowSet是列式存储,这是Kudu可支持一些分析性查询的基础,MemRowSet基于primary key有序。每隔一段时间,tablet中会定期对一些DiskRowSet做compaction操作,目的是对多个DiskRowSet进行重新排序,以此来使其更有序并减少diskRowSet的数量,同时在compaction的过程中会resolve掉DeltaStores当中的delete记录。

DiskRowSet是不可以修改的,那么kudu如何进行数据修改和删除呢?在内部,每个DiskRowSet又分为两部分:Base Data和Delta Stores。数据从MemRowSet刷到磁盘后就形成一份DiskRowSet,只包含base data,每份DiskRowSet在内存中都会有一个对应的DeltaMemStore,负责记录此DiskRowSet后续数据的更新和删除。DeltaMemStore内部维护一个B树索引,映射每个row_offset对应的数据变更。DeltaMemStore数据增长到一定程序后存储到磁盘,形成一个DeltaFile,随着数据的不断变更,DeltaFile会逐渐增多。

随着时间推移,Kudu中的小文件会越来越多,主要包含各个DiskRowSet中的base data,还有每个base data对应的若干个DeltaFile。小文件增多会影响Kudu性能,为了提高性能,Kudu会定期Compaction,这里的Compaction主要包含两部分:

1、DeltaFile compaction:

过多的DeltaFile影响读性能,定期将DeltaFile合并回base data可以提升性能。

2、DiskRowSet compaction (上文提到):

除了DeltaFile,定期将DiskRowSet合并也能提升性能,一个原因是合并时可以将被删除的数据彻底删除,另外也减少了文件数,提升索引效率。

经过以上了解Kudu数据存储实现的原理,我们可以知道Kudu中写入数据时优先写入内存,可以加快数据插入效率;数据在磁盘中存储在DiskRowSet中,有主键,DiskRowSet结构类似parquet结构,可以保证数据扫描分析效率。Kudu就是通过以上来实现既能高效的插入数据同时又能快速扫描大量数据满足分析性能。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

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

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

相关文章

Oracle存储过程入门教程(通俗理解存储过程)

Oracle存储过程入门通俗介绍一、存储过程通俗理解二、创建存储过程基本语法(汇总)三、执行存储过程的方式(5种)四、网上现有的创建存储过程的两种方式解释(看注释)五、一些存储过程示例(仅供参考)六、其他语…

蒸馏+Distilling Knowledge via Knowledge Review论文笔记

文章目录一、前言二、蒸馏1.背景介绍2.知识蒸馏和迁移学习之间的区别3.Hinton提出的知识蒸馏Pipeline4.蒸馏的知识形式5.知识蒸馏的方法三、Distilling Knowledge via Knowledge Review论文笔记1.思想介绍2.Pipeline3.实验结果参考文献一、前言 近期在阅读cvpr 2021的一篇关于蒸…

通过Tomcat / Small Tomcat,如何部署Servlet?(超详细)

目录 基于Tomcat对Servlet进行部署 一、创建项目 二、引入Servlet依赖 三、构建目录结构 四、编写代码 五、打包程序 六、部署程序 七、验证程序 基于Smart Tomcat对Servlet进行部署 第一步:下载Smart Tomcat插件 第二步:进行相关配置 第三步…

【Unity3D】选中物体描边特效

1 前言 描边的难点在于如何检测和识别边缘,当前实现描边特效的方法主要有以下几种: 1)基于顶点膨胀的描边方法 在 SubShader 中开 2 个 Pass 渲染通道,第一个 Pass 通道渲染膨胀的顶点,即将顶点坐标沿着法线方向向外扩…

Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之一

BLE 的HIDS服务,可以理解为BR/EDR HID在BLE 上的简化版,因BLE的特殊性,BR/EDR HID的部分feature在HIDS 中被移除。 本文将讨论Android 蓝牙BLE 中HIDS 服务如何接收 Data 并写入到Android 节点"/dev/uhid"的flow。----关于Android…

openpowerlink 01

源码地址: https://sourceforge.net/projects/openpowerlink/ 源码目录 qt 源码目录 qt MN 源码 MN是主站的意思 用cmake 构建 qt cmakelists.txt分析 文件 mnobd.cdc: 此文件用于配置 MN 堆栈。它包括MN和所有CN的所有配置数据,包括网…

云安全解决方案安全保障体系框架

安全需求和挑战 从风险管理 的角度讲,主要就是管理资产、威胁、脆弱性和防护措施及其相关关系,最终保障云计算平台的持续安全,以及 其所支撑的业务的安全。 云计算 平台是在传统 IT技术的基础上,增加了一个虚拟化层,并…

[Spring MVC7] 解决Redis乱码前缀问题

最近在做Redis缓存的时候,遇到了一个棘手的问题,简单来说就是项目使用Spring的RedisTemplate进行Redis数据存取操作,实际应用中发现Redis中key和value会出现“无意义”乱码前缀。如果是普通的java程序是没有这个问题。 本文解决Redis乱码问题…

基于Matlab-gui信号系统设计

目 录 1绪论 - 1 - 2系统分析和开发软件概述 - 6 - 2.1 需求分析 - 6 - 2.2系统开发环境和运行环境 - 6 - 2.3 Matlab图形用户界面(GUI) - 6 - 2.4 系统主要目标及功能 - 7 - 2.4.1 系统目标 - 7 - 2.4.2 系统主要功能 - 8 - 3系统软件平台的设计 10 3.1系统整体框图 10 3.2系统…

阿里的三个「价值支点」

历史总是轮回的。 2015年5月,身处低谷的阿里换了掌舵人,张勇由COO升任CEO,随后进行了一轮组织架构调整,并通过新零售、淘宝直播、阿里云等业态为阿里安上未来发展引擎。 当时的阿里市值涨至2000亿美元左右,华尔街投资…

终端天线—11.NFC线圈仿真

NFC线圈单体仿真 NFC线圈主要根据终端设备预留的空间大小,去设计走线宽度和圈数以及面积,NFC单体主要关注其13.56MHz处的电感量大小,以及阻抗的虚部和实部,可以根据ST和NXP芯片的要求去设计。 一、Original model 1.Simulation …

C语言文件操作【详解】

本期介绍🍖 主要介绍:为什么使用文件,什么是文件,文件的打开和关闭的操作方法,文件的顺序读写于随机读写,文件读取结束的判定👀。 文章目录一、为什么使用文件🍖二、什么是文件&…

React 入门:使用脚手架写一个Hello组件

文章目录本文目标开发前的准备编写主页面 index.html编写外壳组件 App.js编写入口文件 index.js代码组件化开发 Hello 组件开发 Welcome 组件引用组件组件化实现效果样式的模块化提升编码效率本文目标 通过使用脚手架确实让我们很方便的创建一个 React 项目基础代码结构&#…

力扣(LeetCode)11. 盛最多水的容器(C++)

双指针贪心 盛水的面积 长度 \times 左右柱子最低高度 area(r−l)min(height[l],height[r])area (r-l)\times min(height[l],height[r])area(r−l)min(height[l],height[r]) 初始时,我们不知道每个柱子的高度,但是我们可以选取最左侧柱子和最右侧柱子…

期望E与高斯分布的期望

目录 1. 期望定义 2. 期望性质 2.1 用期望定义方差 / 标准差 方差定义 标准差定义 方差的表示——离散型: 方差的表示——连续型: 方差的性质 3. (一元)高斯分布定义 4. (一元)高斯分布的性质 5. 二维随机向量的数学期望E与方差σ 参考 1. …

PyCharm安装部署(一) 百篇文章学PyQT

本文章是百篇文章学PyQT的第一篇,本文讲述如何安装PyCharm IDEA工具,其它工具也可以但是PyCharm 相对来说用的人多大家都认可(方案成熟),pycharm是一款功能强大的python编辑器,具有跨平台性,本文介绍一下pycharm在wind…

SSM 医院在线挂号系统

SSM 医院在线挂号系统 SSM 医院在线挂号系统 功能介绍 首页 登录注册 图片轮播展示 系统简介 系统公告 医院介绍 医生展示 医院资讯 预约挂号 收藏 评论 在线留言 查看留言 后台管理 登录 管理员管理 修改密码 医院信息管理 医生信息管理 用户权限管理 科室信息管理 预约挂号…

微信小程序如何转云开发

微信小程序云开发,为前端全栈开发提供了很大的便利。本文主要介绍普通的微信小程序如何让转为云开发。 一、建cloudfunction文件夹 cloudfunction文件夹建立在小程序的根目录下。 二、修改 project.config.json配置 在 project.config.json文件中,添加&…

ip子网的划分方法

目录 1 子网划分的定义: 2 掩码介绍 3、子网划分要解决的问题: 4 子网划分步骤 5 范例1根据ip和掩码求子网和网络广播地址: 6 范例2根据ip和掩码求同网段地址 7 合并子网的例子根据ip范围合并,并添加回程路由: …

还不进来看吗?c趁你不注意偷偷将你的数据类型转换啦

前言 如果不了解 整形提升 的小伙伴可就要注意了,c偷偷将你的数据类型改变了你都不知道.快点和牛牛一起学习一下c语言中 整形提升的知识吧 ! 一、整形提升是什么,又是怎样提升的? 不知道小伙伴们有没有听过整形提升这个词? 整形提升是什么呢? C语言中,在进行…