编辑推荐:
本文介绍了kudu是什么,为什么需要kudu?
基础架构,存储机制,kudu的工作机制及KUDU的java操作案例。
本文来自 csdn,由火龙果软件Anna编辑、推荐。
1、 kudu简介
1.1、kudu是什么?
简单来说:dudu是一个与hbase类似的列式存储分布式数据库。
官方给kudu的定位是:在更新更及时的基础上实现更快的数据分析
1.2、为什么需要kudu?
1.2.1、hdfs与hbase数据存储的缺点
目前数据存储有了HDFS与hbase,为什么还要额外的弄一个kudu呢?
HDFS:使用列式存储格式Apache Parquet,Apache
ORC,适合离线分析,不支持单条纪录级别的update操作,随机读写性能差
HBASE:可以进行高效随机读写,却并不适用于基于SQL的数据分析方向,大批量数据获取时的性能较差。
正因为HDFS与HBASE有上面这些缺点,KUDU较好的解决了HDFS与HBASE的这些缺点,它不及HDFS批处理快,也不及HBase随机读写能力强,但是反过来它比HBase批处理快(适用于OLAP的分析场景),而且比HDFS随机读写能力强(适用于实时写入或者更新的场景),这就是它能解决的问题。
2、架构介绍
2.1、基本架构
2.1.1、概念
Table(表):一张table是数据存储在kudu的位置。Table具有schema和全局有序的primary
key(主键)。Table被分为很多段,也就是tablets.
Tablet (段):一个tablet是一张table连续的segment,与其他数据存储引擎或关系型数据的partition相似。Tablet存在副本机制,其中一个副本为leader
tablet。任何副本都可以对读取进行服务,并且写入时需要在所有副本对应的tablet server之间达成一致性。
Tablet server:存储tablet和为tablet向client提供服务。对于给定的tablet,一个tablet
server充当leader,其他tablet server充当该tablet的follower副本。只有leader服务写请求,leader与follower为每个服务提供读请求。
Master:主要用来管理元数据(元数据存储在只有一个tablet的catalog
table中),即tablet与表的基本信息,监听tserver的状态
Catalog Table: 元数据表,用来存储table(schema、locations、states)与tablet(现有的tablet列表,每个tablet及其副本所处tserver,tablet当前状态以及开始和结束键)的信息。
3、存储机制
3.1 存储结构全景图
3.2、存储结构解析
一个Table包含多个Tablet,其中Tablet的数量是根据hash或者range进行设置
一个Tablet中包含MetaData信息和多个RowSet信息
一个Rowset中包含一个MemRowSet与0个或多个DiskRowset,其中MemRo