参考资料
基于Impala平台打造交互查询系统(选型)
Impala查询优化
大数据CDH之查询优化
Impala内存优化
基础语法
产品定位
定位.png实现语言:主要是C++
性能: 略优于Presto
架构:MPP架构
- Impala整个执行节点都是无状态的,因此down掉一个节点,再启动没有问题。
- Impala兼容hive存储
- 还有一些点如Apache顶级项目、成熟社区、多种数据源格式兼容、高效的查询性能都是我们考虑特有的选型因素。
架构原理
执行过程.png- 兼容多种数据源:metastore直接对接各种DB
- 利用catalogd提供元数据服务。可以直接连DB也可以通过catalogd,一般是利用hive里的metastore获取数据。
- Impala高效的原因是其将原始数据缓存下来,catalogd启动会浏览缓存获取数据。
- 它有一个statestored服务,是一个发布订阅服务,所有状态以及轮转都是在statestored服务中进行。左边是impala的执行节点,所有查询都是发往这些节点,节点执行后会下发到所有相关节点上去
- 整个impala是无状态的,所有的连接者都像是一个协调者。
角色进程
- Impala Deamon
ps -ef|grep impalad
该进程运行于集群每个节点的守护进程,是Impala的核心组件,每个节点该进程的名称为 impalad 。- 负责读取数据文件;接受来自impala-shell、Hue / JDBC/ODBC的查询请求,与其他节点并行分布式工作,
- 并将本节点的查询结果返回给中心协调者节点(建议使用JDBC/ODBC接口以round-robin的方式将每个查询提交的不同节点 impalad上)。
- Impala Statestore
ps -ef | grep statestored
- Statestore 搜集集群中 impalad 进程节点的健康状况,并不断的将健康状况结果转发给所有的 impalad 进程节点.
- 一个 impala 集群只需要一个 statestore 进程节点。
- Statestore的目的:在集群故障时对 impalad进程节点同步信息,
- Impala Catalog
当 Impalad 集群中执行SQL 语句会引起元数据变化时,catalog服务负责将这些变化推送到其他 impalad进程节点上。
语法区别
- 搜集信息
hive> analyze table;
impala> compute stats;
更多见
https://www.jianshu.com/p/3d2c9989a682
缺点
- UDF,不支持UPDATE/DELTE操作,不支持同一SELECT中多个DISTINCT
网友评论