Hadoop实战培训教程20_Hadoop集群环境搭建配置_HBase_Hive与数据库区别
Hadoop实战培训教程20_Hadoop集群环境搭建配置_HBase_Hive与数据库区别
1、Hive与HBase
1.1 Hive与HBase区别
Hive是基于Hadoop的一个数据仓库工具,是为简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情况下就需要Hive这样的用户编程接口。Hive本身不存储和计算数据,它完全依赖HDFS和MapReduce,Hive中的表是纯逻辑表,就是些表的定义等,也就是表的元数据,这样就可以将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。之所以使用SQL实现Hive,是因为SQL大家都熟悉,转换成本低,不必开发专门的MapReduce应用,类似作用的Pig就不是SQL。Hive十分适合数据仓库的统计分析。
HBase是一个分布式的、面向列的开源数据库,该技术来源于Google的论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力,HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase使用和Bigtable非常相同的数据模型,用户存储数据行在一个表里,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列。
HBase为查询而生的,它通过组织起节点内所有机器的内存,提供一个超大的内存Hash表,它需要组织自己的数据结构,包括磁盘和内存中的,而Hive是不做这些的,表在HBase中是物理表,而不是逻辑表,搜索引擎使用它来存储索引,以满足查询的实时性需求。HBase主要用于需要随机访问,实时读写你的大数据(Big Data)。
1195
1.2 Hive与HBase整合
1)集群环境
Java版本:jdk-6u31-windows-i586.exe
Win系统:Windows 7 旗舰版
Eclipse软件:eclipse-jee-indigo-SR1-win32.zip | eclipse-jee-helios-SR2-win32.zip
Hadoop软件:hadoop-1.0.0.tar.gz
HBase软件:hbase-0.92.0.tar.gz
Hive软件:hive-0.8.1.tar.gz
2)开场简介
Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示:
备注:需要的软件有 Hadoop、Hive、Hbase、Zookeeper,Hive与HBase的整合对Hive的版本有要求,Hive.0.6.0的版本才支持与HBase对接,在Hive的lib目录下可以看见有个hive-hbase-handler.jar这个jar包,它是Hive扩展存储的Handler。
3)整合步骤
第一步:整合前提
在整合前必须保证已经正确安装Hadoop、HBase以及Hive,如果没有安装,参考下面文章:
Hadoop集群安装:Hadoop集群_第5期_Hadoop安装配置
HBase集群安装:Hadoop集群_第11期_HBase简介及安装
Hive软件安装:Hadoop集群_第13期_Hive简介及安装
第二步:准备Jar包
在Hive的安装目录的lib子目录中,已经存在了HBase和ZooKeeper的相关Jar,但是版本不是很一致,需要把HBase安装目录中的相关Jar拷贝到Hive的lib下面。