2013年(15)
分类: 大数据
2013-12-11 11:15:56
一、Impala的设计目标:
(1)分布式环境下通用SQL引擎,既支持OLTP也支持OLAP;
(2)实现SQL查询的规模和粒度——从毫秒级到小时级;
(3)底层存储依靠HDFS和HBase。
Impala用C++编写,SQL的执行引擎借鉴了分布式数据库MPP的思想,不再依赖MapReduce。
二、Impala的系统架构
1, SQL Interface:目前这部分是借用Hive的,包括ODBC/Beeswax。Client的SQL查询通过ODBC/Beeswax的Thrift API发送到集群内部的任何一个impalad,然后这个impalad就成了这个query的coordinator。
2, Unified metastore:Impala中表的元数据存储借用的是Hive的,也就是用个RDBMS来存储Impala中表的元数据信息。Impala自己提供一个叫statestored的进程负责收集分布在集群中各个impalad进程的资源信息,用于query的调度(这个功能会在2013Q1末GA版本会提供)。Statestored对外提供Thrift服务。这个statestored将来还会有个功能就是把impala表的metadata分发到各个impalad中(也是在2013Q1末GA版本中提供)。
3, Impala daemon:名为impalad的进程,主要有两个角色:一是协调client提交的query的执行,给其他impalad分配任务,收集其他impalad的执行结果进行汇总;二是这个impalad也会执行其他impalad给其分配的任务,在执行这部分任务主要就是对本地HDFS和HBase里的部分数据进行操作了(都是本地IO操作,HDFS还支持dfs.client.read.shortcircuit跨过网卡直接磁盘读)。
三、Impala优缺点
Impala目前支持Hive SQL的大部分功能,例如select, insert, where, join, union, subqueries, aggregation, order by only with limit。
Trevni文件格式是一个性能提升的突破点。
DDL通过Hive操控Hive的metastore来完成,因为Impala使用了Hive的metastore。
局限性:不支持UDF,不支持SerDes,只支持in-memory join,只有基本的cost-based optimizer。
转载,原文地址:。