一、背景
HDFS:吞吐能力极强,但是随机读写能力差,适合进行批处理数据分析
HBase:随机读写能力极强,但是吞吐能力差,适合做随机分析处理。
kudu:它是一个介入HDFS 和 Hbase之间的存储引擎。可以同时提供低延迟的随机读写和高效的数据分析能力。
此外,kudu支持水平扩展,并且与 Impala 和 Spark 等当前流行的大数据查询和分析工具结合紧密。
二、kudu架构
与HDFS 和 HBase类似,kudu 使用单个的 Master 节点,用来管理集群的元数据,并且使用任意数量的 Tablet Server(类似Hbase 的 RegionServer角色)节点来 存储实际数据。也可以部署多个 Master节点来提高容错性,高可用性。
- Master:管理集群,维护kudu元数据。
- Table:表(Table)是数据库中用来存储数据的对象,是有结构的数据集合,kudu中的表具有 schema(纲要)和全局有序的 Primary key(主键)。kudu中一个 table 会被水平切分成多个称之为 tablet 的片段。
- Tablet:一个tablet 是一张 table 连续的片段,tablet是 kudu表的水平切分,类似于 Hbase 的Region。每个tablet 存储着一定连续 range 的数据(key),且tablet 两两之间的 range 不会重叠。一张表的所有 tablet 包含了这张表的所有 key 空间。
- Tablet Server:负责最终数据的存储,并且对外提供读写能力。