交互式SQL查询引擎——Impala

一、什么是Impala

Impala是Cloudera公司推出的,提供对HDFS、HBase数据的高性能、低延迟的交互式SQL查询功能,与Hive(底层使用MR引擎)相比,具备更快的处理速度。

1、组件特性

(1)基于内存进行计算,能够对PB级数据进行交互式实时查询、分析

(2)无需通过MR,直接与HDFS和HBase交互

(3)兼容HiveSQL,支持Hive基本查询操作

(4)具有数据仓库特性,可对hive数据直接做数据分析

(5)支持Data Local数据本地化,减少网络数据传输

(6)基于C++编写,LLVM统一编译运行

2、组织架构

交互式SQL查询引擎——Impala

Statestore Daemon:负责跟踪分布在集群中各个Impalad进程的健康状态及位置信息,通过创建多个线程来处理Impalad的注册订阅与各Impalad保持心跳连接;

Catalog Daemon(CLI):提供给用户查询使用的命令行工具,同时提供Hue、JDBC、ODBC使用接口;

Impala Daemon(Impalad):负责接收客户端提交的查询任务的执行,与HDFS的数据节点运行在同一节点上。

Impala的查询处理流程:

交互式SQL查询引擎——Impala

服务器启动后,Impalad通过注册&订阅与StateStore保持心跳。首先Impala节点将自己的状态信息汇报给StateStore,StateStore实时监控Impalad是否发生故障。然后Catalog与Hive进行通信,拉取Hive中MetaStore的元数据信息,并广播到每个状态良好的Impalad节点上,使各节点上的元数据保持一致。最后,当Client提交SQL请求时,直接作用在Impalad。

Client提交更新操作,当Impalad执行完毕后,Impalad向StateStore发送元数据,StateStore将接收到的元数据推送给Catalog,Catalog将所有接收到的元数据进行汇总后,广播给每个Impalad,之后发送给MetaStore。

3、Hive与Impala对比

交互式SQL查询引擎——Impala

Hive与Impala使用相同的存储数据池,都将数据存储于HDFS,HBase,区别于Hive执行查询操作依赖于MR框架,Impala可以直接与数据进行交互。

 

Hive

Impala

使用场景

批处理

实时交互

计算方式

依赖于MR框架

Impalad直接执行

资源使用情况

内存+外存

只用内存