HBase 基礎結構

目錄

一、數據模型

二、HBase 物理存儲結構

三、數據模型

四、HBase 基本架構


HBase 是一個分佈式[集羣]、可擴展[動態上下線]、支持海量存儲的 NoSQL 數據庫。相當於 BigTable,負責海量數據的存儲。如果數據量小的時候不適合使用 HBase,因爲生產上需要不斷的切分和合並比較消耗資源。如果數據量比較大,可以做到幾十億條數據秒級查詢。支持數據的增刪改查,實現了 HDFS 的隨機寫操作。

一、數據模型


邏輯上,HBase 的數據模型同關係型數據庫很類似,數據存儲在一張表中,有行有列。但從 HBase 的底層物理存儲結構(K-V)來看,HBase 更像是一個 multi-dimensional map。下圖的整個內容成爲一張表。

【1】行鍵 RowKey: 是一張表中自動生成的唯一的、且有序的,按照“字典序”進行排序的主鍵;
【2】列族:不同的列族放在不同的文件夾中,列族中的列可以有多個或者一個,列可以動態增加;
【3】Region切片:按照 RowKey 進行切分,如上是按照3個 rowkey 進行劃分的。一般是按照數據量進行劃分,這樣訪問時能夠提高效率;
【4】store:實際存儲數據的文件,存放在 HDSF。如上表中的數據是放在 6個 store 中;

二、HBase 物理存儲結構



根據每一個列進行存儲,例如張三:包含RowKeyColumnFamily列族ColumnQualifier列名TimeStamp時間戳[實現HD 的隨機寫操作,完全由次屬性決定,它優化最大的地方就是時間戳,該屬性非常重要,window與Linux 一個用來操作一個用來存放時,需要兩個操作系統的時間一定要相同,否則會出現很多問題]、Type類型[Put表示插入]、Value存放的值。當修改一條數據時,其實會添加一條數據與舊數據不同的是時間戳和value,此時,在獲取數據的時候,它只會獲取時間戳最大的那條數據。當刪除一條數據時,也是添加一條數據與舊數據不同的是時間戳TypeType類型是 Delete。在獲取的時候發現Delete類型的時間戳比 PUT的時間戳大,那就不返回數據。那麼舊的數據對用戶而言就是垃圾數據了,此時HBase還會存儲着,但是最終它還是會從內存中將垃圾幹掉的。是在後期表的分合操作的時候刪除的。

三、數據模型


【1】Name Space:命名空間,類似於關係型數據庫的 database概念,每個命名空間下有多張表。HBase 有兩個自帶的命名空間,分別是 hbase default。hbase 中存放的是 HBase 內置的表,default 表是用戶默認使用的命名空間。
【2】Region:類似於關係型數據庫的表的概念。不同的是,HBase定義表時只需要聲明列族即可,不需要聲明具體的列。意味着,往 HBase中寫入數據時,字段可以動態、按需指定。因此和關係型數據庫相比,HBase能夠輕鬆應對字段變更的場景。
【3】ROW:HBase 表中的每行數據由一個 RowKey和多個 Column(列)組成,數據是按照 RowKey的字典順序存儲,並且查詢數據時只能根據 RowKey 進行檢索,所以 RowKey的設計十分重要。
【4】Column:HBase 中的每個列都由 Column Family(列族)和 Column Qualifier(列限定符)進行限定,例如:info: name,info: age。建表時,只需要聲明列族,而列限定名無需預先定義。
【5】TimeStamp:用於表示數據的不同版本(version),每條數據寫入時,如果不指定時間戳,系統會自動爲期加上該字段,表示數據寫入HBase 的時間。
【6】Cell:由{RowKey,Column Family,Column Qualifier,TimeStamp}唯一確定的單元,cell中的數據是沒有類型的,全部是字節碼形式存儲的

四、HBase 基本架構



【1】Region切片需要分在 Region Server[多個,分佈式的]上,Region 中包含多個 store[存儲實際的數據],剛開始操作的store是在內存中的,最終會在一定數量或時間時會flush到磁盤 storefile;
【2】Region Server 的作用:Data:Get、Put、Delete[Update操作底層是新PUT了一條數據,時間戳和 value 會發生變化,Delete 也是 Put了一條數據,Type是Delete];Region:SplitRegion、CompactRegion。作爲 Region 的管理者;
【3】Master:作爲 HBase操作的入口,依賴於ZK來管理集羣,HBase 中的操作非常多,因此會將一些任務分配給ZK,當 Master掛掉之後,對數據的增刪改查時沒有問題的,但是對錶級別的增刪改查是不能完成的。Master類似於DDL。ZK類似於DML。作用:Table 的 Create,Delete,Alter;RegionServer:分配 Region 到每個 RegionServer,監控每個 RegionServer 的狀態,負載均衡和故障轉移;
【4】ZK:HBase 通過 ZK來做master的高可用,RegionServer的監控、元數據的入口以及集羣配置的維護等工作;
【5】HDFS:HDFS 爲 HBase提供最終的底層數據存儲服務,同時爲 HBase提供高可用的支持;


 ----關注公衆號,獲取更多內容----

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