一、Impala介绍
Cloudera Impala提供了快速,交互式的针对存储在hadoop(hdfs和hbase)上的数据的查询方案。impala采用了和hive相同的元数据、SQL语法(Hive SQL)、ODBC驱动程序和用户接口(HUE Beeswax),这样在使用CDH产品时,批处理和实时查询的平台是统一的。
Cloudera Impala是另外一个支持大数据查询的工具,但它并不是取代Hive
这种构建在mapreduce上的批量处理框架。hive和其他类似构建在mapreduce上的批处理框架还是非常适用于那种长时间运行的,比如ETL类型的作业。
1、Impala优势
l 支持大家都非常熟悉的类SQL语法结构
l 提供对存储在hadoop中(hdfs和hbase)数据交互式的查询
l Single system for big data processing and analytics so customers canavoid costly modeling and ETL just for analytics
2、Impala工作原理图
Impala主要是对存储在hdfs和hbase中数据进行实时查询,由于impala采用和Hive一致的元数据结构,所以impala的元数据管理沿用了Hive元数据管理机制,安装impala的时候就必须要安装Hive。
3、Impala组件构成:
l Impala State Store:运行statestored进程,用于存储集群中的impalad进程的状态信息,这些信息用于在分布式环境中快速的查询数据响应查询请求。
l Impalad:运行在DataNode节点上,主要用于协调和执行查询,每一个impalad实例都能接受、并有效的协调来自ODBC或者impala shell的查询请求。另外,impalad进程还可以以一个worker的角色来执行由其他impalad进程发起的分布式并行查询。
l Impala-shell:使用Impala-shell可以进行impala查询或任务管理,例如connectimpalad等。
4、Impala执行查询的处理步骤如下:
a) 用户的Applications通过ODBC驱动程序执行查询时,首先要连接到集群中的某一个impalad进程上,然后由这个impalad进程来协调和发起分布式查询请求。
b) Impala接收到这个查询请求后会对其进行解析,并分析以确定需要由集群中的一个或者多个imapald进程实例来执行查询请求。查询的时候会根据执行计划选择最优的查询方式。
c) 由选中的每一个impalad进程提供本地化的访问查询hdfs和hbase数据服务
d) 每一个选中的impalad进程将查询到的数据返回给发起分布式查询的impalad进程,该impalad进程汇总这些数据后,最后返回个客户端。
5、Impala主要特性:
l 支持大部分基于SQL-92标准的Hive QL语法功能,包括select,joins, 和aggregate 函数等。
l 支持查询以以下存格式储和压缩的hdfs和hbase文件:
Ø hdfs存储格式:TextFile, SequenceFile
Ø 压缩格式:Snappy,GZIP, BZIP
l 统一的Hive查询接口:
Ø ODBC驱动程序
Ø Hue Beeswax
l Impala命令行接口
l Kerberos授权方式
二、Impala软件要求
l Red Hat Enterprise Linux (RHEL)/CentOS 6.2 (64-bit)
l CDH 4.1.0 or later
l Hive
l MySQL
注意:Impala不支持在Debian/Ubuntu, SuSE, RHEL/CentOS 5.7系统中安装。
三、Impala硬件要求
在Join查询过程中需要将数据集加载内存中进行计算,因此对安装Impalad的内存要求较高。
四、Impala运行账号说明??
Impala不推荐运行在root账号下,因为impala最优的性能是通过使用直接读,而root账号是没有权限使用直接读的。因此用root账号运行impala会限制impala的性能。
五、Impala安装说明
两种安装方式:
1、 伪分布式安装:只安装一个impala节点。
2、 分布式安装:在集群中安装多个impala节点形成一个分布式的impala环境。为了获得最佳的性能,推荐在所有的DataNode节点上都安装impala。
Hive安装说明:
由于impala的metastore依赖于hive的metastore,所以必须安装hive。
impala完整安装见我的另外一篇博文:http://blog.csdn.net/hit_hlj_sgy/article/details/8447344
注意:建议不要将impala安装在NameNode节点,因为执行查询的时候可能会和NameNode争抢内存资源,从而导致对NameNode造成负面影响。
六、Impala配置说明
目前impala的配置文件包括hive-site.xml、core-site.xml、hdfs-site.xml,为了获得impala
最优的性能,需要配置以下几个参数:
1、 block location tracking(数据块位置跟踪):启用了datablock位置跟踪,那么impala就能快速定位data block在磁盘中位置,从而更好地利用底层磁盘。
要启用数据块位置跟踪,需要在hdfs-site.xml增加以下配置:
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
2、 short-circuit reads(短路读):针对本地数据,如果启用了short-circuit reads,impala就能直接读取文件系统的数据,这样就避免需要与DataNode的通信。此设置也最大限度地减少了额外的数据副本。
要启用short-circuit reads,需要在core-site.xml文件中新增以下配置:
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
在hdfs-site.xml配置文件中增加:
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>750</value>
</property>
<property>
<name>dfs.block.local-path-access.user</name>
<value>hadoop</value>
</property>
3、 native check-summing(本地校验和):如果启用native check-summing,那么impala会使用一个优化的native check-summing库来提升impala的性能。