Hbase和Hive的整合

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版权协议,转载请附上原文出处链接和本声明。