推广

Kudu:Apache Kudu 简介和架构

iseeyu2年前 (2024-02-21)推广120

Kudu和Hbase Hdfs对比.png

  • Kudu是大数据存储引擎,可以结合其他框架进行大数据批量分析
  • 结合了Hdfs的高吞吐数据能力和Hbase高随机读写能力

Kudu架构

Kudu使用单个Master节点管理集群和元数据,使用任意数量的Table Server节点来存储实际数据,可以部署多个Master节点来提高容错。
Kudu架构中分为Master ServerTablet ServerTableTablet

Kudu架构.png

  • Master Server: Kudu集群中的老大,可以有多个Master Server提高集群的容错能力,但是只有一个Master Server对外提供服务,负责管理集群和管理元数据
  • Tablet Server: Kudu集群中的小弟,可以有任意多个,负责存储数据数据读写。在Tablet Server上存储Tablet,对于一个Tablet,只有其中一个Table Server作为leader,提供读写服务,其他Table Server都是follower,只提供读服务。
  • Table: Kudu中的表概念,有SchemaPrimary Key概念,Kudu中的表会被水平方向分为多个Tablet片段存储在Tablet Server上。
  • Tablet: 一个Tablet是一张表的一个连续片段,tablet是表的水平分区,tablet之间的primary key范围不会重叠,一张表的所有tablet片段构成了这张表的所有primary key范围。tablet会冗余存储在多个Tablet Server上设置副本,任何时刻只有一个Tablet Server是leader,其他都是follower。

数据模型

Kudu的设计是面向结构化存储的,数据模型与传统的关系型数据库类似,一个 Kudu集群由多个表组成,每个表由多个字段组成,一个表必须指定一个由若干个(>=1)字段组成的主键,如下图:

数据模型.png

  • Kudu需要在建表时定义Schema信息,包括定义列(列类型)主键primary key
  • Kudu的数据唯一性依赖与primary key的列组合
  • Kudu不支持传统关系型数据库的二级索引
  • Kudu表中的每个字段是强类型的,而不是HBase那样所有字段都认为是 bytes。这样做的好处是可以对不同类型数据进行不同的编码。Kudu的数据类型包括BOOL, INT8, INT16, INT32, BIGINT, INT64, FLOAT, DOUBLE, STRING, BINARY

底层数据模型

Kudu的底层存储基于table/tablet/replica视图级别的底层存储系统

kudu底层存储.png

  • 每个table被划分为tablet,每个tablet包含一个MetaData和若干个RowSet(行集合)
  • MetaData记录元数据,即记录该tablet属于哪个table,RowSet包含一个MemRowSet和若干个DiskRowSet
  • MemRowSet:当有新数据插入时写入MemRowSet,以及修改已经在MemRowSet中的数据,当MemRowSet写满或者超过一定时间后刷入磁盘形成若干个DiskRowSet,默认是1G或者120s
  • DiskRowSet:MemRowSet每刷新一次就会生成一个DiskRowSet,DiskRowSet刷下来之后就不在变化了,DiskRowSet中又包含BloomFIleAdhoxIndexBaseDataUndoFileRedoFileDeltaMem
  • BloomFIle:根据一个DiskRowSet中的key生成布隆过滤器,用于快速模糊定位某个key是否在DiskRowSet中
  • AdhoxIndex:如果key在DiskRowSet中定位key的具体偏移位置
  • BaseData:MemRowSet刷如磁盘的数据,按列存储,按主键排序
  • RedoFile:保存更新后的数据,防止事务成功后数据未在磁盘更新
  • UbdoFile:保存更新前的数据,防止事务失败后恢复原始数据
  • DeltaMem:用于DiskRowSet数据的更新,存储DiskRowSet中变更的数据,随着DiskRowSet的变化,DeltaMem记录变更记录,DeltaMem增长到一定程度刷到磁盘形成deltaData

数据分区策略

Kudu对表进行横向分区,Kudu表会被横向切分存储在多个tablets中。不过相比与其他存储引擎,Kudu提供了更加丰富灵活的数据分区策略。一般数据分区策略主要有两种,一种是Range Partitioning,另一种分区策略是Hash Partitioning

  • Range Partitioning: 按照字段值范围进行分区,HBase 就采用了这种方式,优势是在数据进行批量读的时候,可以把大部分的读变成同一个 tablet 中的顺序读,能够提升数据读取的吞吐量。并且按照范围进行分区,我们可以很方便的进行分区扩展。其劣势是同一个范围内的数据写入都会落在单个 tablet 上写的压力大,速度慢
  • Hash Partitioning: 按照字段的Hash值进行分区,Cassandra采用了这个方式,由于是Hash分区,数据的写入会被均匀的分散到各个 tablet 中写入速度快。但是对于顺序读的场景这一策略就不太适用了,因为数据分散,一次顺序读需要将各个 tablet 中的数据分别读取并组合,吞吐量低。并且 Hash 分区无法应对分区扩展的情况。

Kudu支持用户对一个表指定一个范围分区规则和多个 Hash 分区规则

kudu分区.png

Kudu的读写更新流程

kudu写入流程.png

  • 先根据主键找到要访的tablet,即根据key的范围过滤掉不可能存在的范围区间
  • 在该范围下通过布隆过滤器再过滤掉不可能存在的rowset
  • 最后通过rowset中的B-tree精确定位key是否存在
  • 如果存在则报错,否则插入MemRowSet

kudu读取流程.png

  • 先根据key范围找到tablet
  • 在tablets下scan找到找到数据,在找到delta store修改数据,在合并上内存中未刷入磁盘的数据MenRowSet

kudu更新流程.png

  • 跟写入数据一样,先找到key数据
  • 找到数据后将修改内容写入delta store

Kudu web ui

通过http访问Kudu web ui,http://master主机名:8051

master主页.png


点击Masters看到只有一个master单节点,角色是leader,以及rpc地址http地址,分别用来使用kudu和查看kudu

点击master.png


点击Tablet Server看到有3个注册的tablet server,分布在三台机器,3个成功0个失败,点击进入可以到每个tablet server的页面

点击tablet server.png


点击Tables可以查看表的表名,状态,tablet数量,磁盘占用大小

点击tables.png


点击某个表可以查看表的主键,数据类型,分区,impala建表语句

点击表.png

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56965.html

相关文章

人体七大脉轮对应频率及其能量

|减 压 实 验 室 公 众 号|分享提升幸福感的一切人体7大脉轮对应频率:1、海底轮:396HZ2、本我轮:417HZ3、脐轮:528HZ4、心轮:639HZ5、喉轮:714HZ6、三眼轮:852HZ7、顶轮:963HZ人体上的脉轮并非实质存在的器官,而是指全身气场的能量...

2022年「家用电器」家用脱毛仪推荐(持续更新中...)

2022年「家用电器」家用脱毛仪推荐(持续更新中...)

大家好,我是小幽 @幽痕凝梦这里给大家推荐一下家用脱毛仪,根据2022年盖得排行<家用脱毛仪推荐榜>,排名如下:2022年「家用电器」家用脱毛仪推荐以下资料来自盖得排行<家用脱毛仪品牌推荐榜>,更新于2022-08Tria Tria Beauty诞生...

拼多多提现一百元,如何轻松实现?

拼多多提现一百元,如何轻松实现?

随着电商的发展,越来越多的消费者选择在拼多多这样的平台上购物,而拼多多的提现活动也吸引了大量的用户。那么,如何在拼多多提现一百元呢?让我们一起来探讨一下。 我们要明白,拼多多的提现活动是有一定规则的。用户需要通过拼团、购买商品等方式积累积分,然后才能进行提现。而积分的积累,就需要我们...

干货|制造企业如何选择线上推广渠道?(下)

干货|制造企业如何选择线上推广渠道?(下)

这两天在知乎上收到很多邀请,比如“传统企业如何做线上”“线上推广都有哪些”“哪些推广渠道性价比最高”等等诸如此类的问题,今天我就给大家整理一篇文章,看下来的不能说立刻变身运营达人,至少思路清晰,知道该怎么做了。文章主要从四个方面展开 1. 制造企业开...

为什么微信广点通一上线,就被我看衰?

为什么微信广点通一上线,就被我看衰?

千呼万唤,微信在万人瞩目之中,终于在五月份推出了微信 广点通,凭借前期的PR积累,一上线就赢得若干流量需求方的亲睐,众多微商终于吐了一口 长气,积蓄这么久,终于迎来收割的春天了,可还没上线几天发现问题严重了,由于微信广点通的流量提供方数量并不多,后台提供给流量需求方的投放选项,仅仅...

202210个TikTok最佳营销方法教程

202210个TikTok最佳营销方法教程

为什么你需要TikTok策略通过使用热门歌曲和行业特定的标签,创建有关你的业务或销售的教育视频,你将接触到合适的受众。以下是TikTok的一些统计,有没有让你大吃一惊! 2022年TikTok统计  ·TikTok在教育内容上投资了1300万英镑·TikTok是2019年第...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片