转自: http://www.csdn.net/article/2013-12-04/2817707-Impala-Big-Data-Engine
大数据处理是云计算中非常重要的领域,自Google公司提出MapReduce分布式处理框架以来,以Hadoop为代表的开源软件受到越来越多公司的重视和青睐。本文将讲述Hadoop系统中的一个新成员:Impala。
Impala架构分析
Impala是Cloudera公司主导开发的新型查询系统,它提供SQL 语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是 MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。那么Impala如 何实现大数据的快速查询呢?在回答这个问题前,需要先介绍Google的Dremel系统,因为Impala最开始是参照 Dremel系统进行设计的。
Dremel是Google的交互式数据分析系统,它构建于Google的GFS(Google File System)等系统之上,支撑了Google的数据分析服务BigQuery等诸多服务。Dremel的技术亮点主要有两个:一是实现了嵌套型数据的列 存储;二是使用了多层查询树,使得任务可以在数千个节点上并行执行和聚合结果。列存储在关系型数据库中并不陌生,它可以减少查询时处理的数据量,有效提升 查询效率。Dremel的列存储的不同之处在于它针对的并不是传统的关系数据,而是嵌套结构的数据。Dremel可以将一条条的嵌套结构的记录转换成列存 储形式,查询时根据查询条件读取需要的列,然后进行条件过滤,输出时再将列组装成嵌套结构的记录输出,记录的正向和反向转换都通过高效的状态机实现。另 外,Dremel的多层查询树则借鉴了分布式搜索引擎的设计,查询树的根节点负责接收查询,并将查询分发到下一层节点,底层节点负责具体的数据读取和查询 执行,然后将结果返回上层节点。关于Dremel技术实现上的更多信息,可以参阅【注:Google Dremel原理:如何能3秒分析1PB,网址为http://www.yankay.com/google-dremel-rationale/】。