一、Hbase能做什么?
1. 海量數據存儲:
上百億行 x 上百萬列
並沒有列的限制
當表非常大的時候才能發揮這個作用, 最多百萬行的話,沒有必要放入hbase中
2. 准實時查詢:
百億行 x 百萬列,在百毫秒以內
二、Hbase在實際場景中的應用:
1. 交通方面:
船舶GPS信息,全長江的船舶GPS信息,每天有1千萬左右的數據存儲。
2. 金融方面:
消費信息,貸款信息,信用卡還款信息等
3. 電商:
淘寶的交易信息等,物流信息,瀏覽信息等
4. 移動:
通話信息等,都是基於HBase的存儲。
Hbase的特點:
1. 容量大:
傳統關系型數據庫,單表不會超過五百萬,超過要做分表分庫,不會超過30列
Hbase單表可以有百億行、百萬列,數據矩陣橫向和縱向兩個維度所支持的數據量級都非常具有彈性
2. 面向列:
面向列的存儲和權限控制,並支持獨立檢索,可以動態增加列,即,可單獨對列進行各方面的操作
列式存儲,其數據在表中是按照某列存儲的,這樣在查詢只需要少數幾個字段的時候,能大大減少讀取的數量
3. 多版本:
Hbase的每一個列的數據存儲有多個Version,比如住址列,可能有多個變更,所以該列可以有多個version
4. 稀疏性:
為空的列並不占用存儲空間,表可以設計的非常稀疏。
不必像關系型數據庫那樣需要預先知道所有列名然后再進行null填充
5. 拓展性:
底層依賴HDFS,當磁盤空間不足的時候,只需要動態增加datanode節點服務(機器)就可以了
6. 高可靠性:
WAL機制,保證數據寫入的時候不會因為集群異常而導致寫入數據丟失
Replication機制,保證了在集群出現嚴重的問題時候,數據不會發生丟失或者損壞
Hbase底層使用HDFS,本身也有備份。
7.高性能:
底層的LSM數據結構和RowKey有序排列等架構上的獨特設計,使得Hbase寫入性能非常高。
Region切分、主鍵索引、緩存機制使得Hbase在海量數據下具備一定的隨機讀取性能,該性能針對Rowkey的查詢能夠到達毫秒級別
LSM樹,樹形結構,最末端的子節點是以內存的方式進行存儲的,內存中的小樹會flush到磁盤中(當子節點達到一定閾值以后,會放到磁盤中,且存入的過程會進行實時merge成一個主節點,然后磁盤中的樹定期會做merge操作,合並成一棵大樹,以優化讀性能。)
LSM樹的介紹:https://www.cnblogs.com/yanghuahui/p/3483754.html
總結:
面向列,容量大,寫入比mysql快但是讀取沒有,超過五百萬條數據的話建議讀寫用Hbase
轉:https://www.jianshu.com/p/fe63e9786146