Impala,它是 Cloudera 开发的开源 实时 SQL 查询引擎,专为 Hadoop 设计。与 Presto 类似,Impala 用于交互式分析,但架构和设计理念有所不同。以下是 Impala 的核心特点和工作原理:
一、Impala 核心架构
1. 组件组成
2. 关键组件
- Coordinator:
- 接收客户端查询请求,解析 SQL,生成查询计划。
- 调度查询任务到 Worker 节点执行。
- 聚合查询结果并返回给客户端。
- Worker:
- 执行 Coordinator 分配的任务,处理数据分片。
- 通过 Exchange Service 进行节点间数据传输。
- Connector:
- 插件式数据源连接器,支持 Hive、MySQL、Kafka、S3 等。
- 负责与数据源交互,提供元数据和数据访问接口。
二、Presto 的工作流程
- 客户端发送查询:
-
SELECT user_id, COUNT(*) FROM hive.orders JOIN mysql.users USING (user_id) WHERE order_date > '2023-01-01' GROUP BY user_id;
- Coordinator 处理查询:
- 解析 SQL:将 SQL 转换为逻辑查询计划。
- 优化计划:应用查询优化规则(如谓词下推、聚合提前)。
- 生成物理计划:将逻辑计划转换为可执行的任务图。
- Worker 执行任务:
- 读取