Apache Kudu 概述

Apache Kudu 是由 Cloudera 公司开发并贡献给 Apache 软件基金会的开源存储引擎。它旨在解决大数据处理中的关键问题——如何在同一存储系统中同时支持低延迟随机读写和高效分析能力。

核心特性

  1. 混合存储模型:支持随机读写(类似 HBase)和批量扫描分析(类似 HDFS),典型读写性能可达毫秒级
  2. 分布式架构:采用水平扩展架构,使用 Raft 一致性协议保证数据可靠性和一致性
  3. 列式存储:采用列式存储格式,提高分析查询效率,支持压缩和编码优化
  4. 生态系统集成:与 Apache Spark、Impala、Hive 等深度集成

市场定位

  • HDFS/Parquet/ORC:适合批量分析,但随机写入性能差
  • HBase/Cassandra:适合随机访问,但分析效率低
  • Kudu:填补两者之间的空白,适合实时分析、时序数据存储、HTAP 场景

性能表现

  • 单行读取延迟:<10ms
  • 批量扫描吞吐:GB/s 级别
  • 支持每秒数千次的写入操作

架构

Kudu 采用主从架构:

  • Master 节点:负责全局元数据管理
  • Tablet Server 节点:负责表格数据的存储和查询

数据模型

  • 表:类似关系数据库,需定义主键
  • 列:支持多种数据类型(整数、浮点数、字符串等)
  • 分区策略:支持范围(Range)或哈希(Hash)分区

版本矩阵(2025)

组件建议版本说明
Kudu1.18.02025-07 发布,新增分段 LRU Block Cache
Spark 集成kudu-spark3_2.12:1.18.0对接 Spark 3.5
Flink 集成Kudu Connector 2.0.0支持 Flink 1.19/1.20
Impala 集成Impala ≥3.3 + HMS 同步低延迟 SQL 读写

优点

  • 低延迟的随机读写性能
  • 高效的批量查询
  • 与 Spark、Impala 良好集成
  • 灵活的数据模型

缺点

  • 事务支持有限
  • 不适合冷数据
  • 依赖内存较多

错误速查

症状根因定位修复
写入报 NOT_THE_LEADER访问到非 Leader查看日志、启用重试
Clock unsynchronizedNTP/Chrony 未对齐统一时间源
读取吞吐低小 Tablet 过多控制分区数量