分布式存储
kudu

Apache Kudu是为Hadoop平台开发的一个列式存储管理器

商务合作
4
(1)

简介

Apache Kudu是为Hadoop平台开发的一个列式存储管理器。Kudu共享Hadoop生态系统应用的共同技术特性:它运行在常见的硬件服务器上,水平可伸缩,支持高可用性操作。

Apache Kudu是Apache软件基金会的顶级项目。

优势

查询少量列时 IO 少,速度快

数据压缩比高

便于查询引擎性能优化:延迟物化、直接操作压缩数据、向量化执行

劣势

查询列太多时性能下降(KUDU 建议列数不超过 300 )

不适合 OLTP 场景

架构

采用了Master-Slave形式的中心节点架构,管理节点被称作 Master Server,数据节点被称作Tablet Server(可对比理解HBase中的RegionServer角色)。

Mater Server:负责集群(TS)管理、元数据管理等功能

Tablet Server:负责数据存储,并提供数据读写服务

一个表的数据,被分割成1个或多个Tablet,Tablet被部署在Tablet Server来提供数据读写服务。 Kudu Master在Kudu集群中,发挥如下的一些作用:

用来存放一些表的Schema信息,且负责处理建表等请求。

跟踪管理集群中的所有的Tablet Server,并且在Tablet Server异常之后协调数据的重部署。

存放Tablet到Tablet Server的部署信息。

kudu

分区

与大多数大数据存储引擎类似,KUDU 对表进行横向分区,KUDU 表会被横向切分存储在多个 tablets 中。不过相比与其他存储引擎,KUDU 提供了更加丰富灵活的数据分区策略。

一般数据分区策略主要有两种,一种是 Range Partitioning,按照字段值范围进行分区,HBase 就采用了这种方式,如下图:

kudu

Range Partitioning 的优势是在数据进行批量读的时候,可以把大部分的读变成同一个 tablet 中的顺序读,能够提升数据读取的吞吐量。并且按照范围进行分区,我们可以很方便的进行分区扩展。其劣势是同一个范围内的数据写入都会落在单个 tablet 上,写的压力大,速度慢。

另一种分区策略是 Hash Partitioning,按照字段的 Hash 值进行分区,Cassandra 采用了这个方式,见下图:

kudu

与 Range Partitioning 相反,由于是 Hash 分区,数据的写入会被均匀的分散到各个 tablet 中,写入速度快。但是对于顺序读的场景这一策略就不太适用了,因为数据分散,一次顺序读需要将各个 tablet 中的数据分别读取并组合,吞吐量低。并且 Hash 分区无法应对分区扩展的情况。

各种分区策略的优劣对比见下图:

kudu

KUDU 支持用户对一个表指定一个范围分区规则和多个 Hash 分区规则,如下图:

kudu

这个大数据组件是否好用呢?

点击星号为它评分!

平均评分 4 / 5. 投票数: 1

到目前为止还没有投票!成为第一位评论此组件。

相关导航

暂无评论

暂无评论...