hive开发资料.doc

上传人:夏** 文档编号:561837930 上传时间:2022-09-25 格式:DOC 页数:29 大小:677.82KB
返回 下载 相关 举报
hive开发资料.doc_第1页
第1页 / 共29页
hive开发资料.doc_第2页
第2页 / 共29页
hive开发资料.doc_第3页
第3页 / 共29页
hive开发资料.doc_第4页
第4页 / 共29页
hive开发资料.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《hive开发资料.doc》由会员分享,可在线阅读,更多相关《hive开发资料.doc(29页珍藏版)》请在金锄头文库上搜索。

1、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 $HA

2、DOOP_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

3、http:/svn.apache.org/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文件,主要修改内容如下: javax.jdo.option.ConnectionURL jdbc:derby:/

4、hadoop1:1527/metastore_db;create=true JDBC connect string for a JDBC metastore javax.jdo.option.ConnectionDriverName org.apache.derby.jdbc.ClientDriver Driver class name for a JDBC metastore 在hadoop1 机器上下载并安装apache derby数据库:wget http:/ Server:sh $DERBY_HOME/bin/startNetworkServer -h 0.0.0.0接下来, 将$DE

5、RBY_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

6、的c/s模式,允许多用户同时访问,同时提供web界面,方便使用。 推荐使用这种部署方案。关注Hive的schema我们上面谈到的2中部署方案都是使用 derby数据库来保存hive中的schema信息。我们也可以使用其他的数据库来保存schema信息,如mysql。可以参考这 篇文章了解如果使用mysql来替换derby:http:/ hive.metastore.rawstore.impl org.apache.hadoop.hive.metastore.FileStore Name of the class that implements org.apache.hadoop.hive.me

7、tastore.rawstore interface. This class is used to store and retrieval of raw metadata objects such as table, database 主要分为以下几个部分: 用户接口,包括 CLI,Client,WUI。 元数据存储,通常是存储在关系数据库如 mysql, derby 中。 解释器、编译器、优化器、执行器。 Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算。 1. 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启

8、动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。 2. Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 3. 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce

9、 调用执行。 4. Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。 Hive 元数据存储Hive 将元数据存储在 RDBMS 中,有三种模式可以连接到数据库: Single User Mode: 此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test。 Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的模式。 Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个

10、MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库。 Hive 的数据存储首先,Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。其次,Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table,External Table,Partition,Bucket。1. Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive

11、中都有一个相应的目录存储数据。例如,一个表 pvs,它在 HDFS 中的路径为:/wh/pvs,其中,wh 是在 hive-site.xml 中由 $hive.metastore.warehouse.dir 指定的数据仓库的目录,所有的 Table 数据(不包括 External Table)都保存在这个目录中。 2. Partition 对应于数据库中的 Partition 列的密集索引,但是 Hive 中 Partition 的组织方式和数据库中的很不相同。在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中。例如:

12、pvs 表中包含 ds 和 city 两个 Partition,则对应于 ds = 20090801, ctry = US 的 HDFS 子目录为:/wh/pvs/ds=20090801/ctry=US;对应于 ds = 20090801, ctry = CA 的 HDFS 子目录为;/wh/pvs/ds=20090801/ctry=CA 3. Buckets 对指定列计算 hash,根据 hash 值切分数据,目的是为了并行,每一个 Bucket 对应一个文件。将 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录

13、为:/wh/pvs/ds=20090801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/wh/pvs/ds=20090801/ctry=US/part-00020 4. External Table 指向已经在 HDFS 中存在的数据,可以创建 Partition。它和 Table 在元数据的组织上是相同的,而实际数据的存储则有较大的差异。 Table 的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数 据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。 External Table 只有一个过程,加载数据和创建表同时完成(CREATE EXTERNAL TABLE LOCATION),实际数据是存储在 LOCA

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号