Hadoop大數據生態:hive與hbase整合

簡介

  • hive和hbase都是基於hadoop大數據生態而衍生的不同的技術,hbase是一種nosql的key/value數據庫,主要用於數據的實時查詢,速度比較快,而hive主要使用HQL語言運行MapReduce任務,主要用於統計查詢,但速度較慢;
  • 兩者屬於互補的關係,這兩種工具可以同時進行使用,同時操作hadoop底層數據倉庫;
  • 環境需求:服務器搭建好hadoop集羣、hbase集羣以及hive客戶端

 

實踐

  • 在上一篇博客講述安裝完hive客戶端之後,我們還需要將hive和hbase兩者整合起來,由於hbase和hadoop同屬一個大數據的集羣生態,所以,只需要修改hive的配置文件即可完成兩者的互通;
  • 切換到hive的配置文件目錄:/data/hadoop/hive/hive/conf
  • 主要修改hive-site.xml和hive-env.sh兩個文件;
  • 修改hive-site.xml文件:vim hive-site.xml;
<property>
	<name>hive.zookeeper.quorum</name><!--設置zookeeper集羣-->
	<value>hadoop-master,hadoop-slave</value>
</property>
<property>
	<name>hive.zookeeper.client.port</name><!--連接zookeeper的端口,默認2181-->
	<value>2181</value>
</property>  

 

  •  修改hive-env.sh文件:vim hive-env.sh
#設置hadoop環境變量根目錄
HADOOP_HOME=/data/hadoop/hadoop/hadoop

#設置hbase環境變量根目錄
HBASE_HOME=/data/hadoop/hbase/hbase

 

  • 配置完成之後,重啓hive,如果沒有報錯,出現以下界面,則說明啓動成功;

 

測試

  • 首先在hbase創建表以及插入表數據:
#進入命令行
$ hbase shell

#創建表以及列族
hbase>create 'sixmonth','user'

#插入兩行數據以及指定列名
hbase>put 'sixmonth','0001', 'user:name','admin'
hbase>put 'sixmonth','0001', 'user:sex','woman'
hbase>put 'sixmonth','0002', 'user:name','test'
hbase>put 'sixmonth','0002', 'user:sex','man'

#掃描表
hbase>scan 'sixmonth'

 

  •  然後,在hive創建相同的表,同時和hbase映射起來;
hive>create external table sixmonth (
	>id string,
	>name string,
	>sex string
	>)
	>STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
	>WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,user:name,user:sex")
	>TBLPROPERTIES("hbase.table.name" = "sixmonth");

 

  • 查詢創建表的數據信息,即可獲取hbase插入的數據;
hive>select * from sixmonth;

 

 總結

  • hive和hbase的互補關係在應用開發的時候起到不可或缺的作用,一般在創建hadoop大數據生態的時候都會將hive和hbase整合起來,兩個工具共同使用,用hive進行數據統計,用hbase進行實時查詢;
  • 實踐是檢驗認識真理性的唯一標準,自己動手,豐衣足食~~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章