Impala学习-基础概念
系列文章目录
1 摘要
这篇文章主要是参考CDH 14年的一个Impala分享文档。
未完待续。
2 简介
Impala是一个开源的关系型查询引擎,执行查询SQL。数据是追加式的,没有修改和删除。
Impala属于MPP架构,查询分布在多个节点中执行,拥有并行查询能力(每个节点,每个集群)。
Impala是一个编译器,他依赖HDFS,使用外部元数据:hive metastore
3 架构
3.1 前台
前台交互代码使用java,这部分代码实现的逻辑都不是对性能表现至关重要的。
- 数据库对象:
fe/src/main/java/com/cloudera/impala/analysis/
- 执行计划部分
fe/src/main/java/com/cloudera/impala/planner/
3.2 后台
后台代码使用c++,大部分代码对性能表现至关重要。特别是如下部分:
- 在节点上执行计划分片
- 服务实现
- ImpalaD service
ImpalaD是查询协调者和计划碎片执行者 - StateStore
- Catalog Service
元数据服务
- ImpalaD service
4 SQL执行流程
- ImpalaShell或Hue或JDBC Driver方式访问Impala 的某个Query Planner
- Query Planner查询解析,将SQL翻译为抽象语法树,匹配元数据,并构建物理执行计划发给Query Coordinator
- 因为是MPP架构,所以将执行计划按节点切分成分片,并将切分后的计划分片分发给本Query Executor节点和其他Query Executor节点
- 开始执行计划分片
- 执行完成后,返回给发起者节点的Query Coordinator聚合最终结果## 0x04 架构