Kudu 表 是 Impala 能够直接操作的一种特殊类型的表,它的存储引擎不是 HDFS,而是 Apache Kudu。
为了理解 Kudu 表,我们首先需要了解传统 Impala(基于 HDFS)的局限性。
传统 HDFS 表的瓶颈
当 Impala 使用 HDFS 上的 Parquet 或 ORC 文件时,它的批量查询性能非常出色。但是,它在以下场景中存在明显短板:
- 随机更新/删除:HDFS 文件本质上是“一次写入,多次读取”的。更新或删除一条记录需要重写整个数据文件,成本极高。虽然 Impala 支持
UPDATE和DELETE,但底层效率不高,不适合频繁的单条记录修改。 - 实时插入:虽然可以
INSERT新数据,但大量的小INSERT操作会产生大量小文件,严重损害性能。最佳实践是批量导入。 - 实时查询:对于需要实时看到最新数据的场景(如用户下单后立刻查询),HDFS 表的延迟通常在分钟级,无法做到“秒级”甚至“毫秒级”的实时性。
Apache Kudu 是什么?
Apache Kudu 是一个开源的列式存储管理器,专为 Hadoop 生态圈设计,旨在弥补上述缺口。你可以把它想象成一个 Hadoop 生态圈中的“关系型数据库”,它结合了 HDFS 的高吞吐量批量分析和 HBase 的低延迟随机访问能力。
Kudu 的核心特点:
- 同时支持高效的批量扫描和随机访问:既能快速执行全表扫描的分析查询,也能快速根据主键定位到单条记录。
- 支持高效的
UPDATE和DELETE:像传统数据库一样,可以快速地对单行记录进行修改和删除。 - 强数据一致性:保证每次读取都能看到最新提交的数据。
- 结构化数据模型:像关系型数据库一样,有严格的表结构和数据类型。
Impala 与 Kudu 的集成
Impala 与 Kudu 进行了深度集成。在 Impala 中,你可以直接通过 SQL 来:
- 创建 Kudu 表
- 插入(
INSERT)、更新(UPDATE)、删除(DELETE) Kudu 表中的数据 - 查询(
SELECT) Kudu 表,并可以与其他 HDFS 表进行联合查询
这使得 Impala

最低0.47元/天 解锁文章
844

被折叠的 条评论
为什么被折叠?



