大數據(五) - HBase
HBase是一個構建在HDFS上的分布式列存儲系統, 主要用于海量結構化數據存儲, 從邏輯上講,HBase將數據按照表、行和列進行存儲。
HDFS適合批處理場景
不支持數據隨機查找
不適合增量數據處理
不支持數據更新
以上HDFS不適合、不支持的場景,HBase都支持
大數據上高并發操作,比如每秒對PB級數據進行上千次操作,并且 讀寫訪問均是非常簡單的操作。

Hbase表的特點
大:一個表可以有數十億行,上百萬列;
無模式:每行都有一個可排序的主鍵和任意多的列,列可以根據需要動態的增加,同一張表中不同的行可以有截然不同的列;
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索;
稀疏:對于空(null)的列,并不占用存儲空間,表可以設計的非常稀疏;
數據多版本:每個單元中的數據可以有多個版本,默認情況下版本號自動分配,是單元格插入時的時間戳;
數據類型單一:Hbase中的數據都是字符串,沒有類型。
行存儲和列存儲的比較
傳統行式數據庫
數據是按行存儲的
沒有索引的查詢使用大量I/O
建立索引和物化視圖需要花費大量時間和資源
面向查詢的需求,數據庫必須被大量膨脹才能滿足性能要求
列式數據庫
數據是按列存儲-每一列單獨存放
數據即是索引
指訪問查詢涉及的列-大量降低系統I/O
每一列由一個線程來處理-查詢的并發處理
數據類型一致,數據特征相似-高效壓縮
基本概念
Row Key
Byte array
表中每條記錄的“主鍵”
方便快速查找
Column Family
擁有一個名稱(string)
包含一個或者多個相關列
Column
屬于某一個Column Family
包含在某一列中
familyName:columnName
Version Number
每個rowkey唯一
默認值: 系統時間戳
類型為Long
Value (Cell)
Byte array
數據模型
HBase schema可以有多個 Table
每個表可由多個Column Family組成
HBase 可以有 Dynamic Column
列名稱是編碼在cell中的
不同的cell可以擁有不同的列
version number 可由用戶提供
無需以遞增的順序插入
每一行的rowkey必須是唯一的
Table 可能非常稀疏
很多 cell 可以是空的
Row Key是主鍵
HBase支持操作
所有操作都是基于rowkey的
支持crud和scan
單行操作:put、get、scan
多行操作:MultiPut、scan
沒有內置join操作,可以使用MapReduce解決
物理模型
rowkey和version number在每個column family中都有一份
每個column family存儲在HDFS上的一個單獨文件中(就是store)
控制不會被保存 ,不占存儲空間
以上特點類似分庫技術中的垂直切分,提高了并發訪問速度

物理存儲
1、Table中的所有行都按照row key的字典序排列;
2、Table 在行的方向上分割為多個Region;
3、Region按大小分割的,每個表開始只有一個region,隨著數據增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,之后會有越來越多的region;
4、Region是HBase中分布式存儲和負載均衡的最小單元。不同Region分布到不同RegionServer上;
5、Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元。
Region由一個或者多個Store組成,每個store保存一個columns family;
每個Strore又由一個memStore和0至多個StoreFile組成;
memStore存儲在內存中,StoreFile存儲在HDFS上。
HBase架構

HBase基本組件
Client
包含訪問HBase的接口,并維護cache來加快對HBase的訪問
Zookeeper
Hbase依賴Zookeeper,hbase會管理zookeeper的實例
保證任何時候,集群中只有一個master
存儲所有region的尋址入口
實時監控region server的上線和下線信息,并實時通知給master
存儲hbase的schema和table元數據
Master
為region server分配region
負責region server的負載均衡
發現失效的region server并重新分配其上的region
管理用戶對table的增刪改查操作
Region Server
維護region,處理對這些region的IO請求
負責切分在運行過程中變得過大的region
HBase容錯性
Master容錯:zookeeper重新選擇一個新的master
無master過程中,數據讀取仍照常運行
無master過程中,region切分、負載均衡等無法進行
region server容錯:定時向zookeeper匯報心跳,如果一段時間內未出現心跳
master將該region server上的region重新分配到其他region server上
失效服務器上預寫日志由主服務器進行分割并派送給新的region server
zookeeper容錯:zookeeper是一個可靠的服務
一般配置3或5個zookeeper實例
Region定位

關系數據庫和HBase比較

Hbase在淘寶的應用
淘寶指數
交易歷史記錄查詢系統
非死book已經放棄了自己創建的Cassandra,使用了HBase
來自: http://blog.csdn.net//matthewei6/article/details/50526752
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!