Kudu是一个分布式的,具有可扩展性的列式存储管理器,可以对快速变化的数据进行快速分析。

使用场景

典型的应用场景如下:
  • 近实时计算场景
  • 时间序列数据的场景
  • 预测建模
  • 与存量数据共存

    通常生产环境中会有大量的存量数据,数据可能存储在HDFS、RDBMS或Kudu中。如果您只是想访问和查询这些存量数据,可以使用Impala访问和查询,而无需迁移存量数据至Kudu。

架构

Kudu集群架构图如下。base
Kudu包含如下两种类型的组件:
  • Master Server:负责管理元数据。

    元数据包括Tablet Server的服务器的信息以及Tablet的信息,Master Server通过Raft协议提供高可用性。

  • Tablet Server:用来存储Tablets。

    每个Tablet存在多个副本,副本之间通过Raft协议提供高可用性。

基本概念

名称 描述
Master服务 主要负责管理整个集群的元数据。元数据包括TabletServer信息、表的信息、Tablet的信息以及其他相关元数据相关的信息。
Tserver服务 负责为客户端储存和提供Tablets,仅Leader Tablet可以写入请求,其他的Tablet只能执行请求。
列式存储 Kudu是一种列数据储存结构,同一列的数据被存储在底层存储的相邻位置。
表(Table) 数据存储在Kudu的位置。Table有Schema和局有序的Primary Key属性,且可以划分为多个Tablet。
分片(Tablet) 一个表可以被分到若干个分片中,称为Tablet。

一个Tablet是指表上一段连续的Segment。一个特定的Tablet会被复制到多个Tablet服务器上,其中一个会被认为是Leader Tablet。每一个备份Tablet都可以支持读取和写入请求。

Raft 一致性协议,可以保证Kudu Master服务的高可用以及Tablet多副本之间数据一致性。
Catalog Table Kudu的MetaData的中心位置,存储Table和Tablet的信息。