Impala入门(定位 架构)

参考资料

基于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是无状态的,所有的连接者都像是一个协调者。

角色进程

  1. Impala Deamon ps -ef|grep impalad
    该进程运行于集群每个节点的守护进程,是Impala的核心组件,每个节点该进程的名称为 impalad 。
    • 负责读取数据文件;接受来自impala-shell、Hue / JDBC/ODBC的查询请求,与其他节点并行分布式工作,
    • 并将本节点的查询结果返回给中心协调者节点(建议使用JDBC/ODBC接口以round-robin的方式将每个查询提交的不同节点 impalad上)。
  2. Impala Statestore ps -ef | grep statestored
    • Statestore 搜集集群中 impalad 进程节点的健康状况,并不断的将健康状况结果转发给所有的 impalad 进程节点.
    • 一个 impala 集群只需要一个 statestore 进程节点。
    • Statestore的目的:在集群故障时对 impalad进程节点同步信息,
  3. Impala Catalog
    当 Impalad 集群中执行SQL 语句会引起元数据变化时,catalog服务负责将这些变化推送到其他 impalad进程节点上。

语法区别

  • 搜集信息
    hive> analyze table; 
    impala> compute stats;  

更多见
https://www.jianshu.com/p/3d2c9989a682

缺点

  • UDF,不支持UPDATE/DELTE操作,不支持同一SELECT中多个DISTINCT
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容