交互式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、组织架构
Statestore Daemon:负责跟踪分布在集群中各个Impalad进程的健康状态及位置信息,通过创建多个线程来处理Impalad的注册订阅与各Impalad保持心跳连接;
Catalog Daemon(CLI):提供给用户查询使用的命令行工具,同时提供Hue、JDBC、ODBC使用接口;
Impala Daemon(Impalad):负责接收客户端提交的查询任务的执行,与HDFS的数据节点运行在同一节点上。
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对比
Hive与Impala使用相同的存储数据池,都将数据存储于HDFS,HBase,区别于Hive执行查询操作依赖于MR框架,Impala可以直接与数据进行交互。
|
Hive |
Impala |
使用场景 |
批处理 |
实时交互 |
计算方式 |
依赖于MR框架 |
Impalad直接执行 |
资源使用情况 |
内存+外存 |
只用内存 |