Hive与 Hbase 的整合
Mysql+Hive:1、Centos7 MySQL安装 —— 用网盘简单安装
2、Hadoop集群搭建及配置⑨——Hive 可靠的安装配置
3、Spark SQ操作 MySQL数据库和 Hive数据仓库
4、Spark SQL RDD基本操作、RDD—DataFrame、API MySQL
5、Spark SQL RDD、DataFrame、Dataset、反射推断机制 Schema 操作!!
8、Hadoop集群搭建及配置⑥ —— Hadoop组件安装及配置
9、Hadoop集群搭建及配置⑦—— Spark&Scala安装配置
一、介绍
在安装好 zookeeper、hadoop、hbase、hive 基础上,才能继续下面操作,没有安装完成的可以点击上方链接,进行安装。
1.1 原因
在实际业务中,由于 HBase不支持使用 SQL语法,因此我们操作和计算 HBase分布式数据库中的数据是非常不方便的,并且效率也低。
由于Hive支持标准的SQL语句,因此,我们可以将HBase和Hive进行整合,通过使用Hive数据仓库操作HBase分布式数据库中的数据,以此来满足实际业务的需求。
二、文件配置
2.1 导入依赖 (master)
将目录 /hbase-1.2.4/lib下的相关依赖复制一份到目录/hive-2.1.1/lib下。
cp /usr/hbase/hbase-1.2.4/lib/hbase-common-1.2.4.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/hbase-server-1.2.4.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/hbase-client-1.2.4.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/hbase-protocol-1.2.4.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/hbase-it-1.2.4.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/htrace-core-3.1.0-incubating.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/hbase-hadoop2-compat-1.2.4.jar /usr/hive/hive-2.1.1/lib/
cp /usr/hbase/hbase-1.2.4/lib/hbase-hadoop-compat-1.2.4.jar /usr/hive/hive-2.1.1/lib/
- hbase-common-1.2.4.jar 是 Hbase的基本包;
- hbase-server-1.2.4.jar 主要用于hbase 的服务端;
- hbase-client-1.2.4.jar 主要用于hbase 的客户端;
- hbase-protocol-1.2.4.jar 主要用于hbase 的通信;
- hbase-it-1.2.4.jar 主要用于hbase 整合其他框架做测试;
- htrace-core-3.1.0-incubating.jar 主要用于其他框架(Hive,Spark) 连接Hbase;
- hbase-hadoop2-compat-1.2.4.jar,hbase-hadoop-compat-1.2.4.jar 使得HBase可以兼容hadoop2.0 和其他版本。
2.2 修改 hive-site.xml (master)
<!--指定zookeeper集群的地址-->
<property>
<name>hive.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
<description>zookeeper集群的URL配置,多个host中用逗号(,)分割</description>
</property>
<!--指定zookeeper客户端的端口号-->
<property>
<name>hive.zookeeper.property.client.port</name>
<value>2181</value>
</property>
2.3 启动相关服务
cd /usr/zookeeper/zookeeper-3.4.10(此目录下)
# 1、三个节点都启动 zookeeper
bin/zkServer.sh start
bin/zkServer.sh status (注意已经生效环境变量,环境变量开机重启后要手动再生效!!)
bin/zkServer.sh stop(关闭)
# 2、master 节点启动 hadoop
/usr/hadoop/hadoop-2.7.3/sbin/start-all.sh
# 3、slave1启动 Hive服务端(先)
/usr/hive/hive-2.1.1/bin/hive --service metastore
# 4、master 作为客户端开启 hive(后)
/usr/hive/hive-2.1.1/bin/hive
# 5、启动 hbase
/usr/hbase/hbase-1.2.4/bin/start-hbase.sh
三、Hbase 与 Hive连接
3.1 创建Hive表
创建 hive_hbase_test 库
create table hive_hbase_test(
id int,name string,sex string,interest string,age int,grade double)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping" = ":key,info:name,info:sex,info:interest,info:age,info:grade")
tblproperties ("hbase.table.name"="hbase_test");
org.apache.hadoop.hive.hbase.HBaseStorageHandler
语句是把 hbase 与 hive 关联起来,hive创建的表会映射到 hbase数据库,且映射表名字是:hbase_test
。
3.2 创建中间表
由于不能将数据直接插入与 hbase 关联的Hive表 hive_hbase_test
,所以需要一个中间表 text。
3.3 插入数据
在linux 本地上创建 text.txt ,每个字段需要用 ‘\t’ 隔开。
1 liyi female reading 23 94.50
2 chener man baseketball 21 91.00
3 zhangning female writeing 20 79.00
4 lixi female pingpang 18 88.50
5 wangwu man baseball 16 78.00
6 huangting female reading 22 96.00
7 tianqi man baseketball 25 87.00
把数据插入 hive_hbase_test
# 向临时表text插入数据
load data local inpath '/usr/text.txt' into table text;
# 将临时表数据导入 hive_hbase_test
insert into table hive_hbase_test select * from text;
3.4 测试是否数据一致
# 1.hive 输入命令:
select * from hive_hbase_test;
# 2.hbase 输入命令:
scan 'hbase_test'
可以看出两者的数据是一致的,则整合完成。