您现在的位置 >> Hadoop教程 >> Hadoop实战 >> hive专题  
 

Impala与Hive的相似之处,区别在什么地方?

【作者:Hadoop实战专家】【关键词:客户端 集群 查询 】 【点击:23440次】【2013-11-1】
该进程应运行在DataNode机器上(建议每个DataNode机器运行一个impalad,官方的意思似乎这种建议是必须的),每个impalad实例会接收、规划并调节来自ODBC或Impala Shell等客户端的查询。这里请原谅我没有提到Hadoop和Hive的安装过程,还请尊驾自行搜索。  

相关热门搜索:hbase 图形客户端 hbase 客户端命令 spark客户端下载

大数据标签:hadoop hdfs yarn mapreduce hbase hive bigdata

可以带着下面阅读此内容:
1.Impala与Hive的相似之处,区别在什么地方?
2.各自适合什么场景
这里再补充一些Impala的知识
1. Impala介绍

Impala 号称在性能上比Hive高出3~30倍,甚至预言说在将来的某一天可能会超过Hive的使用率而成为Hadoop上最流行的实时计算平台(也许我这里有点曲解Impala专家的意思,但其诱惑的言辞足以令Hadoop迷不禁有蠢蠢欲试的激动)。毕竟Impala也是人写出来的,是否真的如想象中的快,还得靠客观数据来验证。

以下内容是对Cloudera官网中关于Impala文档(主要是《Installing and Using Cloudera Impala》)一些内容的个人理解,欠妥之处还请不吝赐教:

Impala的目的不在于替换现有的MapReduce工具,如Hive,而是提供一个统一的平台用于实时查询。事实上Impala的运行也是依赖Hive的元数据。Impala与其它组件之间的关系如下:

与Hive类似,Impala也可以直接与HDFS和HBase库直接交互。只不过Hive和其它建立在MapReduce上的框架适合需要长时间运行的批处理任务。例如那些批量提取,转化,加载(ETL)类型的Job。而Impala主要用于实时查询。

1.1 Impala组成1.1.1 State Store
*
对应进程为 statestored (笔者这里使用的Impala版本为0.4,有些版本的statestore进程名可能不是这样叫的)

*
用于协调各个运行impalad的实例之间的信息关系,Impala正是通过这些信息去定位查询请求所要的数据。换句话说,state store的作用主要为跟踪各个impalad实例的位置和状态,让各个impalad实例以集群的方式运行起来。

*
与 HDFS的NameNode不一样,虽然State Store一般只安装一份,但一旦State Store挂掉了,各个impalad实例却仍然会保持集群的方式处理查询请求,只是无法将各自的状态更新到State Store中,如果这个时候新加入一个impalad实例,则新加入的impalad实例不为现有集群中的其他impalad实例所识别(事实上,经笔者测试,如果impalad启动在statestored之后,根本无法正常启动,因为impalad启动时是需要指定statestored的主机信息的)。然而,State Store一旦重启,则所有State Store所服务的各个impalad实例(包括state store挂掉期间新加入的impalad实例)的信息(由impalad实例发给state store)都会进行重建。

1.1.2 Impalad
*
对应进程为 impalad(核心进程,数据的计算就靠这个进程来执行)

*
该进程应运行在DataNode机器上(建议每个DataNode机器运行一个impalad,官方的意思似乎这种建议是必须的),每个impalad实例会接收、规划并调节来自ODBC或Impala Shell等客户端的查询。每个impalad实例会充当一个Worker,处理由其它impalad实例分发出来的查询片段(query fragments)。客户端可以随便连接到任意一个impalad实例,被连接的impalad实例将充当本次查询的协调者(Ordinator),将查询分发给集群内的其它impalad实例进行并行计算。当所有计算完毕时,其它各个impalad实例将会把各自的计算结果发送给充当 Ordinator的impalad实例,由这个Ordinator实例把结果返回给客户端。每个impalad进程可以处理多个并发请求。

1.1.3 Impala shell
* 这是一个客户端工具
* 该客户端工具提供一个交互接口,供使用者发起数据查询或管理任务,比如连接到impalad。这些查询请求会传给ODBC这个标准查询接口。说白了,就是一个命令行客户端。日后你便是通过它来查询数据的。

1.2 安装impala
这里介绍使用rpm包安装的方式(需有root或sudo权限),基于源码包安装的方式待后续折腾。
1.2.1 安装前需知
*
impala能使用的内存无法超过系统的硬件可用内存(GA版,查询需要的内存如果超出硬件内存,则查询将失败),对内存要求高,典型的硬件内存为:32~48G

*
impala(版本0.4)只支持redhat 5.7/centos 5.7或redhat 6.2/centos 6.2以上(好像还要求是64位的,所以建议安装在64位系统上),不支持ubuntu

*
假设你已经安装了CDH4(即Hadoop 2.0)

*
假设你已经安装了Hive,并配置一个外部数据库(如MySQL)供Hive存储元数据。可通过执行下面的命令来判断Hive是否安装正常
$ hive
hive> show tables;
OK
Time taken: 2.809 seconds

*
这里请原谅我没有提到Hadoop和Hive的安装过程,还请尊驾自行搜索。

*
Impala不支持的特性:

* 查询流数据
* 删除数据
* 索引(至少当前版本不支持)
* YARN集成(至少当前版本不支持)
* 全文搜索
* 不具有像Hive SerDe的可扩展机制
* 不支持线上查询容错,如果查询出错,如机器宕机,Impala将会丢弃本次查询。
* 不支持表和列级别的授权
* impalad实例之间的传输没有加密
* 不支持Hive UFS
* beta版尚不支持JDBC,计划GA版支持

来自群组: Hadoop技术组

大数据系列hive相关文章:

最新评论
john2014-09-10 07:30:16
2
琪哥2014-09-10 01:11:27
不讨论这个,没意思,
KELLY2014-09-10 12:56:22
今晚公开课《Kafka开发与实践》——李志涛,8月27日,晚19:30-21:30 小象公开课授课群: 377172514 ,加群密码11223344
阿长2014-09-08 09:31:17
ls
TonyMao0002014-09-08 08:27:18
2、外媒--内地楼市库存量已达空前高度 消化需18.1个月;
求职男生2014-09-08 06:33:57
|
偏执YZY2014-09-07 04:24:24
Give me hive
 
  • Hadoop生态系统资料推荐