Apache Kudu 概述
Apache Kudu 是由 Cloudera 公司开发并贡献给 Apache 软件基金会的开源存储引擎。它旨在解决大数据处理中的关键问题——如何在同一存储系统中同时支持低延迟随机读写和高效分析能力。
核心特性
- 混合存储模型:支持随机读写(类似 HBase)和批量扫描分析(类似 HDFS),典型读写性能可达毫秒级
- 分布式架构:采用水平扩展架构,使用 Raft 一致性协议保证数据可靠性和一致性
- 列式存储:采用列式存储格式,提高分析查询效率,支持压缩和编码优化
- 生态系统集成:与 Apache Spark、Impala、Hive 等深度集成
市场定位
- HDFS/Parquet/ORC:适合批量分析,但随机写入性能差
- HBase/Cassandra:适合随机访问,但分析效率低
- Kudu:填补两者之间的空白,适合实时分析、时序数据存储、HTAP 场景
性能表现
- 单行读取延迟:<10ms
- 批量扫描吞吐:GB/s 级别
- 支持每秒数千次的写入操作
架构
Kudu 采用主从架构:
- Master 节点:负责全局元数据管理
- Tablet Server 节点:负责表格数据的存储和查询
数据模型
- 表:类似关系数据库,需定义主键
- 列:支持多种数据类型(整数、浮点数、字符串等)
- 分区策略:支持范围(Range)或哈希(Hash)分区
版本矩阵(2025)
| 组件 | 建议版本 | 说明 |
|---|---|---|
| Kudu | 1.18.0 | 2025-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 unsynchronized | NTP/Chrony 未对齐 | 统一时间源 |
| 读取吞吐低 | 小 Tablet 过多 | 控制分区数量 |