Hbase基本原理、及存儲知識

dwd4 9年前發布 | 135K 次閱讀 NoSQL數據庫 HBase

一、Hbase基礎

HBase是一個針對結構化數據的可伸縮、高可靠、高性能、分布式和面向列的動態模式數據庫。 和傳統關系數據庫不同,HBase采用了BigTable的數據模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間 戳構成。HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可以使用MapReduce來處理,它將數據存儲和并行計算完 美地結合在一起。

數據模型:Schema-->Table-->Column Family-->Column-->RowKey-->TimeStamp-->Value

Hbase基本原理、及存儲知識

二、表的特點

大:一個表可以有數十億行,上百萬列
無模式:每行都有一個可排序的主鍵和任意多的列,列可以根據需要動態的增加,同一張表中不同的行可以有截然不同的列
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索
稀疏:空(null)列并不占用存儲空間,表可以設計的非常稀疏;
數據多版本:每個單元中的數據可以有多個版本,默認情況下版本號自動分配,是單元格插入時的時間戳;
數據類型單一:Hbase中的數據都是字符串,沒有類型。

Hbase基本原理、及存儲知識

Hbase基本概念

RowKey:是Byte array,是表中每條記錄的主鍵,方便快速查找,Rowkey的設計非常重要。
Column Family
:列族,擁有一個名稱(string),包含一個或者多個相關列
Column
:屬于某一個columnfamilyfamilyName:columnName,每條記錄可動態添加
Version Number
:類型為Long,默認值是系統時間戳,可由用戶自定義
Value(Cell)
Byte array

物理存儲:
1
Table中所有行都按照row key的字典序排列;
2
Table在行的方向上分割為多個Region
3
Region按大小分割的,每個表開始只有一個region,隨著數據增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,之后會有越來越多的region
4
RegionHbase中分布式存儲和負載均衡的最小單元,不同Region分布到不同RegionServer上。

5Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元。Region由一個或者多個Store組成,每個store保存一個columns family;每個Strore又由一個memStore0至多個StoreFile組成,StoreFile包含HFilememStore存儲在內存中,StoreFile存儲在HDFS上。

 Hbase基本原理、及存儲知識

Hbase基本原理、及存儲知識

HBase容錯性
Master容錯Zookeeper重新選擇一個新的Master
Master過程中,數據讀取仍照常進行;ü
master過程中,region切分、負載均衡等無法進行;ü
RegionServer容錯:定時向Zookeeper匯報心跳,如果一旦時間內未出現心跳,Master將該RegionServer上的Region重新分配到其他RegionServer上,失效服務器上預寫日志由主服務器進行分割并派送給新的RegionServer
Zookeeper容錯Zookeeper是一個可靠地服務,一般配置35Zookeeper實例
Region
定位流程:

尋找RegionServer

ZooKeeper--> -ROOT-(單Region)--> .META.--> 用戶表

-ROOT-
?表包含.META.表所在的region列表,該表只會有一個Region;

?Zookeeper中記錄了-ROOT-表的location。

.META.

?表包含所有的用戶空間region列表,以及RegionServer的服務器地址。

  • Hbase使用場景

storing largeamounts  of data(100s of TBs)
need high write throughput
need efficient random access(key lookups) within large data sets
need to scale gracefully with data
for structured and semi-structured data
don't need fullRDMS capabilities(cross row/cross table transaction, joins,etc.)

大數據量存儲,大數據量高并發操作

需要對數據隨機讀寫操作

讀寫訪問均是非常簡單的操作

  • Hbase與HDFS對比

兩者都具有良好的容錯性和擴展性,都可以擴展到成百上千個節點;
HDFS適合批處理場景
不支持數據隨機查找
不適合增量數據處理

不支持數據更新


 本文由用戶 dwd4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!