You need to enable JavaScript to run this app.
导航

Kudu 概述

最近更新时间2022.10.21 16:56:21

首次发布时间2022.10.21 16:56:21

Kudu 是一个分布式的,具有可扩展性的列式数据库,可以同时提供低延迟的随机读写和高效的数据分析能力。Kudu 支持水平扩展,使用 Raft 协议进行一致性保证。

1 使用场景

常见的使用场景有以下几个,结合您的业务场景,可优先考虑使用 Kudu:

  • 毫秒级的主键更新,删除。

  • 亚秒级的查询分析(需要结合 Impala 或 Presto 等计算引擎)。

  • 没有高 QPS 的 Key-Value 查询。

2 组件

2.1 Master Server

Kudu 的 master 节点负责整个集群的元数据管理和服务协调。
它承担着以下功能:

  • 管理集群所有table和tablet的schema及一些其他的元数据。

  • 追踪所有server节点是否存活,并且当server节点挂掉后协调数据的重新分布。

  • 跟踪每个tablet的位置。

2.2 Tablet Server

用来存储 tablets。Tablet 可以设置多副本,使用 Raft 协议实现多副本间的一致性。

3 基本概念

名称描述
Catalog ManagerKudu 的 master 节点会持有一个单 tablet 的 table——catalog table,但是您是不能直接访问的。master 将内部的 catalog 信息写入该 tablet,并且将整个 catalog 的信息缓存到内存中。
Tablet Directoryclient 会在本地缓存一份它需要访问的 tablet 的位置信息,这样就不用每次读写都从 master 中获取。 因为 tablet 的位置可能也会发生变化(比如某个 tablet server 节点 crash 掉了),所以当 tablet 的位置发生变化的时候,client 会收到相应的通知,然后再去 master 上获取一份新的元数据信息。
Tablet一个 Tablet 是由表里面相邻的连续的 segment 组成,类似于其他数据存储引擎或关系数据库中的分区。一个给定的 Tablet 会被复制到多台 Tablet Server 服务节点上-从而形成多个副本,在任意给定的时间点,这些副本中的其中一个会被选举为 leader tablet。
Raft一致性协议,可以保证 Kudu Master 服务的高可用以及 Tablet 多副本之间数据一致性。