結構化儲存數據庫——HBase

概述

HBase是一個分佈式的、面向列的開源數據庫,該技術來源於 Fay Chang 所撰寫的Google論文"Bigtable:一個結構化數據的分佈式存儲系統"。就像Bigtable利用了Google文件系統(File System)所提供的分佈式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。另一個不同的是HBase基於列的而不是基於行的模式。

結構化儲存數據庫——HBase

搭建環境

部署節點操作系統為CentOS,防火牆和SElinux禁用,創建了一個shiyanlou用戶並在系統根目錄下創建/app目錄,用於存放Hadoop等組件運行包。因為該目錄用於安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權限(一般做法是root用戶在根目錄下創建/app目錄,並修改該目錄擁有者為shiyanlou(chown –R shiyanlou:shiyanlou /app)。

Hadoop搭建環境:

l 虛擬機操作系統: CentOS6.6 64位,單核,1G內存

l JDK:1.7.0_55 64位

l Hadoop:1.1.2

HBase特性

  • 強讀寫一致性:適合高速計數聚合操作
  • 自動切分數據:分佈式存儲數據,隨著數據增長進行自動切片
  • RegionServer自動失效備援
  • 與HDFS集成
  • 支持MapReduce執行大規模並行操作
  • 提供Java Client API
  • 提供Thrift/REST API
  • 針對大容量查詢優化的塊緩存和Bloom Fliter
  • 可視化管理界面

劣勢

  • WAL的重新執行速度緩慢
  • 故障恢復緩慢且複雜
  • 主壓縮會引起 I/O風暴

HBase使用場景

  • 互聯網搜索問題:爬蟲收集網頁,存儲到BigTable裡,MapReduce計算作業掃描全表生成搜索索引,從BigTable中查詢搜索結果,展示給用戶。
  • 抓取增量數據:例如,抓取監控指標,抓取用戶交互數據,遙測技術,定向投放廣告等
  • 內容服務
  • 信息交互
結構化儲存數據庫——HBase

HBase Shell命令行交互

啟動Shell $ hbase shell

列出所有的表 hbase > list

創建名為mytable的表,含有一個列族hb hbase > create ' mytable' , 'hb'

在‘mytable’表的'first'行中的‘hb:data’列對應的數據單元中插入字節數組‘hello HBase’

hbase > put 'mytable' , 'first' , 'hb:data' , 'hello HBase'

讀取mytable表 ‘first’行的內容 hbase > get 'mytable' , 'first'

讀取mytable表所有的內容 hbase > scan ‘mytable'

結構化儲存數據庫——HBase

示例

  • HBase的RowKey設計

電信公司rowKey設計實例:

0.區域劃分:劃分100個區域,從00到99

CallerId + 201703 :hashcode % 100 = 00 -99

1.rowKey設計:rno + callerid + calltime[201702011212] + calleeid + duration ,這個地方注意:rno 等於callerid + calltime 的一部分

2.通話記錄:

1)創建表:$hbase>create 'ns1:calllogs','f1'

2)創建單元測試。向表中添加數據。

結構化儲存數據庫——HBase

結構化儲存數據庫——HBase

相關推薦

推薦中...