Apache Impala 介绍与优点

hadoop | 2019-09-29 17:18:53


1、什么是Impala
Impala是一个架构于hadoop之上的全新、开源MPP查询引擎,提供低延迟、高并发的以读为主的查询。

Impala提升了查询性能,又保留了用户熟悉的操作。通过Impala,你可以使用SELECT、JOIN和聚集函数等语法,实时地查询储存在HDFS或HBase上的数据。除此之外,Impala使用Hive的元数据库、SQL语法,ODBC驱动及用户界面,提供一个友好、统一的平台进行批处理或实时查询。因此,Hive用户能够很方便的使用Impala。

2、Impala架构
为了避免延迟,Impala摒弃了MapReduce引擎,借鉴MPP并行数据库的思想,使用一个专用的、分布式的查询引擎直接访问数据。依据查询的类型和配置,与Hive相比较,性能有数量级的提升。
 

由架构图可以看出查询的执行过程:

  1. 由Client发送一个执行SQL到任意一台Impalad的Query Planner
  2. 由Query Planner 把SQL发向Query Coordinator
  3. 由Query Coordinator 来调度分配任务到Impalad的所有节点
  4. 各个Impalad节点的Query Executor 进行执行SQL工作
  5. 执行SQL结束以后,将结果返回给Query Coordinator
  6. 再由Query Coordinator 将结果返回给Client

 

3、服务组件
Impala由三个核心服务构成:Statestored、Catalogd、Impalad。

  • Statestored 一个实例。Statestore daemon负责收集分布在集群中各个impalad进程的资源信息,各节点健康状况,同步节点信息,负责query的调度。
  • Catalogd 一个实例。Catalog daemon负责接收来自Statestored的所有请求,把impala的metadata分发到各个impalad。
  • Impalad N个实例。Impala daemon运行在1个或多个节点上,与Statestored保持通信,负责接收客户端的请求并返回结果。

 

Impala没有主节点,Statestored与Catalogd具有主节点的功能,可当作主节点,Impalad可理解为从节点。

 

4、优点
Impala提供对HDFS、HBase数据的高性能、低延迟的交互式SQL查询,基于Hive并使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。具体特点:

  1. 基于内存进行计算,能够对PB级数据进行交互式实时查询、分析
  2. 直接读取HDFS数据,完全抛弃MapReduce,省掉了作业启动的开销;借鉴MPP并行数据库的思想,省掉了shuffle、sort等开销;中间结果不落地,省掉了大量的IO开销。
  3. C++编写,LLVM统一编译运行
  4. 兼容HiveSQL
  5. 具有数据仓库的特性,可对Hive数据直接做数据分析
  6. 支持Data Local
  7. 支持列式存储
  8. 支持JDBC/ODBC远程访问

基于这些特点,Impala是CDH平台首选的PB级大数据实时查询分析引擎。

另外,Impala也有一些劣势,比如对内存依赖大、过于依赖Hive等,使用上也有其他的限制,具体限制参考官方文档。但这不足以影响Impala良好的实时查询分析特点。

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号