HIVE和HBASE的整合步骤

来源:互联网 发布:php 工厂模式 代码 编辑:程序博客网 时间:2024/05/20 16:36

我们已经在130和159机器上搭建HBASE的2节点集群,并且在130上安装了HIVE。目前要做的工作是把HIVE和HBASE整合起来。

详细信息如下:

节点性质  IP地址         机器名

Master    10.18.11.130   rac1

Slave     10.18.11.159   rac4

 

 

1.复制HBASE的相关文件给HVIE

拷贝hbase/lib下hbase-0.94.4.jar、zookeeper-3.4.5.jar、protobuf-java-2.4.0a.jar到hive/lib下

ok

2.修改hive的hive-site.xml文件

<property>

 <name>hive.querylog.location</name>

 <value>/home/software/hive-0.8.1/logs</value>

</property>

<property>

 <name>hive.aux.jars.path</name>

<value>file:///home/software/hive-0.8.1/lib/hive-hbase-handler-0.8.1.jar,file:///home/software/hive-0.8.1/lib/hbase-0.94.4.jar,file:///home/software/hive-0.8.1/lib/zookeeper-3.4.5.jar,file:///home/software/hive-0.8.1/lib/hive-contrib-0.8.1.jar,file:///home/software/hive-0.8.1/lib/protobuf-java-2.4.0a.jar</value>

</property>

路径根据自己的实际路径设置

 

3.修改hive-env.sh文件

exportHIVE_CONF_DIR=/home/software/hive-0.8.1/conf

export HADOOP_HEAPSIZE=1024

 

4.分发hbase-0.94.4.jar

拷贝hbase-0.94.4.jar到所有hadoop节点(包括master)的hadoop/lib下。

5.分发hbase-site.xml

拷贝hbase/conf下的hbase-site.xml文件到所有hadoop节点(包括master)的hadoop/conf下

6.启动HBASE

如果已经启动了,则不需要启动

start-hbase.sh

 

7.启动hive

使用集群启动方式。

 

单节点启动方式:

hive -hiveconf hbase.master=rac1:490001

集群启动方式:

hive -hiveconf hbase.zookeeper.quorum=rac4

 

以下不需要:

hive --auxpath/home/software/hive-0.8.1/lib/hive-hbase-handler-0.8.1.jar,/home/software/hive-0.8.1/lib/hbase-0.94.4.jar,/home/software/hive-0.8.1/lib/zookeeper-3.4.5.jar-hiveconf hbase.master=rac1:490001

hive --auxpath/home/software/hive-0.8.1/lib/hive-hbase-handler-0.8.1.jar,/home/software/hive-0.8.1/lib/hbase-0.94.4.jar,/home/software/hive-0.8.1/lib/zookeeper-3.4.5.jar-hiveconf hbase.zookeeper.quorum=rac4

 

8.测试

1)在HBASE中创建表hbase_table_1

登陆hive:

hive -hiveconf hbase.zookeeper.quorum=rac4

创建表:

CREATE TABLE hbase_table_1(key int, valuestring) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITHSERDEPROPERTIES("hbase.columns.mapping" = ":key,cf1:val")TBLPROPERTIES("hbase.table.name" = "xyz");

说明:

hbase.table.name 定义在hbase的table名称

hbase.columns.mapping 定义在hbase的列族

 

2)建立hive的表:

登陆hive:

创建表:

CREATE TABLE pokes1(foo INT, bar STRING);

 

3)给hive的表pokes装载数据:

LOAD DATA LOCAL INPATH'/home/software/hive-0.8.1/examples/files/kv1.txt' OVERWRITE INTO TABLE pokes1;

 

4)使用hive的sql方式,给hbase_table_1表导入数据:

INSERT OVERWRITE TABLE hbase_table_1 SELECT* FROM pokes1 WHERE foo=238;

 

5)使用hbase给xyz表添加数据:

hbase shell

put 'xyz','100','cf1:val','tomtest'

 

6)在HBASE的表中查询记录:

登陆hive集群:

hive -hiveconf hbase.zookeeper.quorum=rac4

select * from hbase_table_1;

结果如下: