Impala基本介绍及架构介绍

impala基本介绍

impala是cloudera 提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快3到10倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具。

impala是基于hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。

impala数据流理解

Impala基本介绍及架构介绍_第1张图片

impala优点与缺点

优点

1、基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销。
2、无需转换为Mapreduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快。
3、使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
4、支持各种文件格式,如TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet。
5、可以访问hive的metastore,对hive数据直接做数据分析。
 

缺点

1、对内存的依赖大,且完全依赖于hive。
2、实践中,分区超过1万,性能严重下降。
3、只能读取文本文件,而不能直接读取自定义二进制文件。
4、每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新

impala的架构模块

1、impala-server ==>启动的守护进程,执行我们的查询计划从节点 (计算节点、从节点)

官方建议与所有的datanode 装在译器,可以通过hadoop的短路读取特性实现数据快速查询

2、impala-statestore ==> 状态存储区 (主节点)

3、impala-catalog ==> 元数据管理区 (主节点)

查询执行

impala分为 frontend和backend两个层次,frondend用Java实现(通过JNI嵌入impala),负责查询计划生成,而backend用C++实现,负责查询执行

frontend生成查询计划分为两个阶段:

1、生成单机查询计划,单机执行计划与关系数据库执行计划相同,所用查询优化方法也类似。

2、生成分布式查询计划,根据单机执行计划,生成真正可执行的分布式执行计划,降低数据移动,尽量把数据和计算放在一起

impala相关系统对比

相关系统对比
HIVE Spark Impala
概要 Hive是老牌的SQL-on-Hadoop解决方案

spark之上的交互式SQL解决方案

提供DataFrame API作为SQL补充,方便实现ETL、分析、机器学习等复杂逻辑。

SparkSQL使用scala定义UDF,非常方便

Hadoop上交互式MPP SQL引擎
容错 强。中间结果罗盘,容错能力强,最细粒度容错。  较强。基于数据血缘关系的数据回复。 弱。遇到问题时,需要重做查询
性能 慢,MR启动慢中间结果落盘 较快,基于RDD模型,DAG执行基于代价的查询优化内存基于列存储编译执行(生成java字节码)Java实现

快。MPP架构基于代价的查询优化,Join优化LLVM查询编译

C++实现向量执行引擎,可使用SSE指令列存IO本地化资源管理器优化(LLAM)

你可能感兴趣的:(大数据,架构,hive,数据仓库)