1、版本
- hive-1.2.1
- hbase-1.2.1
2、需准备
- 重新编译目录apache-hive-1.2.1-bin/lib下的hive-hbase-handler-1.2.1.jar
- 编译方法此处省略,提供现成已编译好的hive-hbase-handler-1.2.1.jar
- 链接:https://pan.baidu.com/s/1Rof67IhMdvnUplEHZubTZQ
提取码:l719
3、替换apache-hive-1.2.1-bin/lib/的hive-hbase-handler-1.2.1.jar
4、配置环境变量
在服务器hadoop01上执行命令vi /etc/profile,配置Hive和HBase的环境变量(若先前配置可忽略)

5、在hive-env.sh文件中添加以下内容(apache-hive-1.2.1-bin/conf/路径下)
export HIVE_CLASSPATH=$HIVE_CLASSPATH:/export/servers/hbase-1.2.1/lib/*
#/export/servers/hbase-1.2.1/lib/* 为hbase的路径下lib里的所有文件
6、修改相关配置文件
在apache-hive-1.2.1-bin/conf/目录下的hive-site.xml,添加以下内容6、
<!--指定Zookeeper集群的地址-->
<property>
<name>hive.zookeeper.quorum</name>
<value>hadoop01,hadoop02,hadoop03</value>
</property>
<!--指定Zookeeper客户端的端口号-->
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
7、启动相关的服务
#在hadoop01、hadoop02和hadoop03中分别启动Zookeeper
zkServer.sh start
#在hadoop01启动Hadoop的HDFS和YARN
start-all.sh
#在hadoop01启动MySQL
service mysqld start
#在hadoop01中启动Hbase
start-hbase.sh
#在hadoop01启动Hive
hive
8、成功标志

9、测试
(1)在Hive数据库创建hive_hbase_table
create table hive_hbase_table(
id int,
name string,
age int)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties
("hbase.columns.mapping"=":key,info:name,info:age")
tblproperties ("hbase.table.name"="hbase_table");
(2)查看Hbase中是否出现hbase_table表

(3)创建Hive临时中间表
因为不能直接插入与Hbase关联的Hive表hive_hbase_table中
create table emp(
id int,
name string,
age int)
row format delimited fields terminated by ',';导入数据
load data local inpath '/export/data/student.txt' into table emp;(4)插入数据
insert into table hive_hbase_table select * from emp;
(5)验证数据
select * from hive_hbase_table;
scan 'hbase_table' 

注意:(使用hadoop高可用集群的需注意)
hadoop01(master)的namenode必须为active状态,这样hbase的HMaster才不会轻易挂掉
- 手动切换NN
- 查看NameNode的状态 hdfs haadmin -getServiceState nn1
- 手动切换nn1为active hdfs haadmin -transitionToActive nn1
- 通过挂掉ZKFC
- 挂掉hadoop02的ZKFC,hadoop01的namenode变为active状态
- kill -9 端口号
版权声明:本文为weixin_46606519原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。