溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

hive與hbase如何集成

發(fā)布時(shí)間:2021-12-08 13:54:09 來源:億速云 閱讀:113 作者:小新 欄目:云計(jì)算

這篇文章主要介紹了hive與hbase如何集成,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一 、簡介

Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語句快速實(shí)現(xiàn)簡單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計(jì)分析。
Hive與HBase的整合功能的實(shí)現(xiàn)是利用兩者本身對外的API接口互相進(jìn)行通信,相互通信主要是依靠hive_hbase-handler.jar工具類。

二、安裝步驟:

1 .Hadoop和Hbase都已經(jīng)成功安裝了

Hadoop集群配置:http://www.linuxidc.com/Linux/2012-02/53632.htm
Hbase安裝配置:http://www.linuxidc.com/Linux/2012-02/54225.htm

2 . 拷貝hbase-0.90.3-cdh4u1.jar和zookeeper-3.3.3-cdh4u1.jar到hive/lib下。

注意:如何hive/lib下已經(jīng)存在這兩個(gè)文件的其他版本(例如zookeeper-3.3.2.jar),建議刪除后使用hbase下的相關(guān)版本。

2. 修改hive/conf下hive-site.xml文件,在底部添加如下內(nèi)容:


<!-- 
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp</value>
<description>Scratch space for Hive jobs</description>
</property>

<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/logs</value>
</property>

<property>
<name>hive.aux.jars.path</name>
<value>file:///usr/local/hive/lib/hive-hbase-handler-0.7.1-cdh4u1.jar,file:///usr/local/hive/lib/hbase-0.90.3-cdh4u1.jar,fi
le:///usr/local/hive/lib/zookeeper-3.3.1.jar</value>
</property>
注意:如果hive-site.xml不存在則自行創(chuàng)建,或者把hive-default.xml.template文件改名后使用。

3. 拷貝hbase-0.90.3-cdh4u1.jar到所有hadoop節(jié)點(diǎn)(包括master)的hadoop/lib下。

4. 拷貝hbase/conf下的hbase-site.xml文件到所有hadoop節(jié)點(diǎn)(包括master)的hadoop/conf下。

注意,如果3,4兩步跳過的話,運(yùn)行hive時(shí)很可能出現(xiàn)如下錯(cuò)誤:


view plaincopy 
org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connectto ZooKeeper but the connection closes immediately. 
This could be a sign that the server has too many connections (30 is thedefault). Consider inspecting your ZK server logs for that error and 
then make sure you are reusing HBaseConfiguration as often as you can. SeeHTable's javadoc for more information. at org.apache.hadoop. 
hbase.zookeeper.ZooKeeperWatcher. 

三、啟動Hive

1.單節(jié)點(diǎn)啟動

#bin/hive -hiveconf hbase.dwn01=master:490001


2 集群啟動:

#bin/hive -hiveconf hbase.zookeeper.quorum=dwn01,dwd01,dwd02,dwd03

如何hive-site.xml文件中沒有配置hive.aux.jars.path,則可以按照如下方式啟動。

bin/hive --auxpath /usr/local/hive/lib/hive-hbase-handler-0.8.0.jar,/usr/local/hive/lib/hbase-0.90.5.jar, /usr/local/hive/lib/zookeeper-3.3.2.jar-hiveconf hbase.zookeeper.quorum=dwn01,dwd01,dwd02,dwd03

四、測試:

1.創(chuàng)建hbase識別的數(shù)據(jù)庫:


CREATE TABLE hbase_table_1(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,cf1:val") 
TBLPROPERTIES ("hbase.table.name" = "xyz"); 
hbase.table.name 定義在hbase的table名稱

hbase.columns.mapping 定義在hbase的列族 
2.使用sql導(dǎo)入數(shù)據(jù)

1) 新建hive的數(shù)據(jù)表:

CREATE TABLE hb_test (id INT, url STRING);
2)批量插入數(shù)據(jù):

hive> LOAD DATA LOCAL INPATH '/tmp/id.txt' OVERWRITE INTO TABLE hb_test

3)使用sql導(dǎo)入hbase_table_1:

hive> INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM hb_test;

3. 查看數(shù)據(jù)

hive> select * from hbase_table_1; 

這時(shí)可以登錄Hbase去查看數(shù)據(jù)了
#bin/hbase shell
hbase(main):001:0> describe 'xyz' 
hbase(main):002:0> scan 'xyz' 
hbase(main):003:0> put 'xyz','100','cf1:val','www.51.com'

這時(shí)在Hive中可以看到剛才在Hbase中插入的數(shù)據(jù)了。

4 hive訪問已經(jīng)存在的hbase

使用CREATE EXTERNAL TABLE:


CREATE EXTERNAL TABLE hbase_table_2(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val") 
TBLPROPERTIES("hbase.table.name" = "some_existing_table"); 

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“hive與hbase如何集成”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI