大数据Kudu二:Kudu架构

​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://cloud.tencent.com/developer/article/2178503

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340