hive开发资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hive是一个基于Hadoop的数据仓库平台。通过hive,我们可以方便地进行ETL的工作。hive定义了一个类似于SQL的查询语言:HQL,能够将用户编写的QL转化为相应的Mapreduce程序基于Hadoop执行。
本文讲解如何搭建一个Hive平台。假设我们有3台机器:
hadoop1,hadoop2,hadoop3。并且都安装好了Hadoop-0.19.2(hive支持的Hadoop版本很多),hosts文件配置正确。Hive部署在hadoop1机器上。最简单,最快速的部署方案
在Hadoop-0.19.2中自带了hive的文件。版本为0.3.0。
我们首先启动Hadoop:sh $HADOOP_HOME/bin/start-all.sh
然后启动hive即可:sh $HADOOP_HOME/contrib/hive/bin/hive
这个时候,我们的Hive的命令行接口就启动起来了,你可以直接输入命令来执行相应的hive应用了。
这种部署方式使用derby的嵌入式模式,虽然简单快速,但是无法提供多用户同时访问,所以只能用于简单的测试,无法实际应用于生产环境。所以,我们要修改hive的默认配置,提高可用性。
搭建多用户的,提供web界面的部署方案
目前只用比较多hive版本是hive-0.4.1。我们将使用这个版本来搭建hive平台。
首先,下载hive-0.4.1:svn co
/repos/asf/hadoop/hive/tags/release-0.4.1/ hive-0.4.1
然后,修改下载文件里面的编译选项文件shims/ivy.xml,将其修改为如下内容(对应的Hadoop版本为0.19.2)
接下来,我们使用ant去编译hive: ant package
编译成功后,我们会发现在build/dist目录中就是编译成功的文件。将这个目录设为$HIVE_HOME
修改conf/hive-default.xml文件,主要修改内容如下:
metastore
在hadoop1 机器上下载并安装apache derby数据库:wget
/apache-mirror/db/derby/db-derby-10.5.3.0/ db-derby-10.5.3.0-bin.zip
解压derby后,设置$DERBY_HOME
然后启动derby的network Server:sh
$DERBY_HOME/bin/startNetworkServer -h 0.0.0.0
接下来,将$DERBY_HOME/lib目录下的derbyclient.jar与derbytools.jar 文件copy到$HIVE_HOME/lib目录下。
启动Hadoop:sh $HADOOP_HOME/bin/start-all.sh
最后,启动hive的web界面:sh $HIVE_HOME/bin/hive --service hwi
这样,我们的hive就部署完成了。我们可以直接在浏览器中输入:
http://hadoop1:9999/hwi/进行访问了(如果不行话,请将hadoop1替换为实际的ip地址,如:http://10.210.152.17:9999/hwi/)。
这种部署方式使用derby的c/s模式,允许多用户同时访问,同时提供web界面,方便使用。推荐使用这种部署方案。
关注Hive的schema
我们上面谈到的2中部署方案都是使用derby数据库来保存hive中的schema信息。我们也可以使用其他的数据库来保存schema信息,如mysql。可以参考这篇文章了解如果使用mysql来替换derby:
/blog/post/2010/02/01/Setting-up-Hadoop Hive-to-use-MySQL-as-metastore.aspx
我们也可以使用HDFS来保存schema信息,具体的做法是修改
conf/hive-default.xml,修改内容如下:
org.apache.hadoop.hive.metastore.rawstore interface. This class is used to store and retrieval of raw metadata objects such as table, database