用过Hive的人想必都有一种一种感觉,这玩意太慢了,每次
执行一次查询,启动mapreduce作业,据测试,查询1800 row,
hive用时84s,impala用时 12s,所以在做一些离线分析的时候,对
执行时间有要求的时候,还是用impala吧。
我们知道,HBase是一个基于列的NoSQL数据库,它可以实现的
数据的灵活存储。它本身是一个大表,在一些应用中,通过设计
RowKey,可以实现对海量数据的快速存储和访问。但是,对于复
杂的查询统计类需求,如果直接基于HBase API来实现,性能非
常差,或者,可以通过实现MapReduce程序来进行查询分析,
这也继承了MapReduce所具备的延迟性。实现Impala与HBase
整合,我们能够获得的好处有如下几个:
可以使用我们熟悉的sql;
impala执行查询分析,比原生的mapreduce和hive快得多,
据网上传言快了3-30倍,本人测试大概6倍左右。
Impala与HBase整合,需要将HBase的RowKey和列映射到
Impala的Table字段中。Impala使用Hive的Metastore来
存储元数据信息,与Hive类似,在于HBase进行整合时,
也是通过外部表(EXTERNAL)的方式来实现。
本人假设你已经安装好cdh或hadoop,环境已配置好,
hbase表已创建完毕,hive外表已建好,如果上述工作
没完成,请参考:
centos6.5 32位搭建hadoop2.2.0 集群
centos 6.5-hadoop-2.2.0配置hive1.2.1
下面开始正式开始。
在centos下,打开终端,输入
impala-shell
进入impala shell环境,然后连接一个server,
输入命令
connect datanode2
然后是同步hive的元数据,输入命令
INVALIDATE METADATA;
即可同步数据,同步完毕以后,输入命令
show tables;
即可查看impala的表。
然后的操作就和hive类似了,什么 select 。。。。。。。alter 。。。。。 drop 。。。。