[impala] impala 简介

 

【简介】

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。

 

【优点】


1、Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。


2、省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。

 

3、通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。


4、用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。

 

5、使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。

 

【与spark的对比】


一、总体上
Shark扩展了Apache Hive,大大加快在内存和磁盘上的查询。

而Impala是企业级数据仓库系统, 可以很好地使用Hive/ HDFS,从架构层来说,类似于传统的并行数据库。这两个系统有着很多共同的目标,但也有很大差异。


二、与现有系统的兼容性
Shark直接建立在Apache/Hive代码库上,所以它自然支持几乎所有Hive特点。它支持现有的Hive SQL语言,Hive数据格式(SerDes),用户自定义函数(UDF),调用外部脚本查询。

因为Impala使用自定义的C++运行,它不支持Hive UDF。这两个系统将会与许多BI工具整合,这一直是Impala的主要目标。Shark正在被用于一些BI工具,如Tableau,不过这并没有被探索更多。

 

三、内存中的数据处理
Shark允许用户显式地加载在内存中的数据,以加快查询处理,其内存使用有效率的,压缩的面向列的格式。

Impala还没有提供在内存中的存储。


四、容错
Shark被设计为支持短期和长时间运行的查询。它可以从查询故障恢复(感谢底层Spark引擎)。

Impala目前是更侧重于短查询,不容错(如果节点发生故障,查询必须重新启动,对短查询来说这无疑是可以接受的)。


五、性能
做全面的比较太早了点。Shark和Impala都报告比Hive快10-100倍,但这都依赖具体情况和系统负载。两个项目也都在未来6个月内会做重要优化。以我们的经验来看,Sharkr当前版本,如果是内存的数据一般比Hive快100倍,如果是磁盘上的数据一般快5-10倍,这取决于查询(带关联连接的查询,能比Hive快很多)。

 

 

【推荐教程】

1、impala入门基础教程:http://www.aboutyun.com/thread-8629-1-1.html

2、解析Impala架构:https://sanwen8.cn/p/169uSyN.html

3、Impala:新一代开源大数据分析引擎:http://www.csdn.net/article/2013-12-04/2817707-Impala-Big-Data-Engine

 

posted @ 2017-02-14 16:36  Aviva_ye  阅读(952)  评论(0编辑  收藏  举报