HBase入門修行基礎篇

HBase入門修行基礎篇

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

一、Hbase獲取查詢條件結果的過

wKiom1f7TpzAfDTTAADBO4t4D6U868.png

1兩張特殊表:-ROOT- & .META.

    .META.   記錄用戶表的Region信息,同時,.META.也可以有多個region

    -ROOT-    記錄.META.表的Region信息,但是,-ROOT-只有一個region

    Zookeeper  中記錄了-ROOT-表的location

2、客戶端訪問數據的流程:

    Client -> Zookeeper -> -ROOT- -> .META. -> 用戶數據表

3多次網絡操作,不過client端有cache緩存

二、Hbase架構

wKioL1f7TqvzUTJCAAM0e_NwnQo674.png

 

組成部件說明

1Client

使用HBase RPC機制與HMasterHRegionServer進行通信

ClientHMaster進行通信進行管理類操作

ClientHRegionServer進行數據讀寫類操作

2Zookeeper

Zookeeper Quorum存儲-ROOT-表地址、HMaster地址

HRegionServer把自己以Ephedral方式註冊到Zookeeper中,HMaster隨時感知各個HRegionServer的健康狀況

Zookeeper避免HMaster單點問題

3HMaster

HMaster沒有單點問題,HBase中可以啓動多個HMaster,通過ZookeeperMaster Election機制保證總有一個Master在運行主要負責TableRegion的管理工作:

3.1 管理用戶對錶的增刪改查操作

3.2 管理HRegionServer的負載均衡,調整Region分佈

3.3 Region Split後,負責新Region的分佈

3.4 HRegionServer停機後,負責失效HRegionServerRegion遷移

4HRegionServer

HBase中最核心的模塊,主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據

任何一項新技術並非救命稻草,一抹一擦立馬藥到病除的百寶箱,並非使用Spring或者NOSQL的產品就神乎其神+五光十色,如果那樣基本是扯淡。同類型產品中不管那種技術最終要達到的目的是一樣的,通過新的技術手段你往往可能避諱了當前你所需要面對的問題,但過後新的問題又來了。也許回過頭來看看還不如在原來的基礎上多動動腦筋想想辦法做些改良可以得到更高的回報。

傳統數據庫是以數據塊來存儲數據,簡單來說,你的表字段越多,佔用的數據空間就越多,那麼查詢有可能就要跨數據塊,將會導致查詢的速度變慢。在大型系統中一張表上百個字段,並且表中的數據上億條這是完全是有可能的。因此會帶來數據庫查詢的瓶頸。我們都知道一個常識數據庫中表記錄的多少對查詢的性能有非常大的影響,此時你很有可能想到分表、分庫的做法來分載數據庫運算的壓力,那麼又會帶來新的問題,例如:分佈式事務、全局唯一ID的生成、跨數據庫查詢等,依舊會讓你面對棘手的問題。如果打破這種按照行存儲的模式,採用一種基於列存儲的模式,對於大規模數據場景這樣情況有可能發生一些好轉。由於查詢中的選擇規則是通過列來定義的,因此整個數據庫是自動索引化的。按列存儲每個字段的數據聚集存儲,可以動態增加,並且列爲空就不存儲數據,節省存儲空間。每個字段的數據按照聚集存儲,能大大減少讀取的數據量,查詢時指哪打哪,來的更直接。無需考慮分庫、分表 Hbase將對存儲的數據自動切分數據,並支持高併發讀寫操作,使得海量數據存儲自動具有更強的擴展性。Java中的HashMap是Key/Value的結構,你也可以把HBase的數據結構看做是一個Key/Value的體系,話說HBase的區域由表名和行界定的。在HBase區域每一個"列族"都由一個名爲HStore的對象管理。每個HStore由一個或多個MapFiles(Hadoop中的一個文件類型)組成。MapFiles的概念類似於Google的SSTable。 在Hbase裏面有以下兩個主要的概念,Row key 和 Column Family,其次是Cell qualifier和Timestamp tuple,Column family我們通常稱之爲“列族”,訪問控制、磁盤和內存的使用統計都是在列族層面進行的。列族Column family是之前預先定義好的數據模型,每一個Column Family都可以根據“限定符”有多個column。在HBase每個cell存儲單元對同一份數據有多個版本,根據唯一的時間戳來區分每個版本之間的差異,最新的數據版本排在最前面 。

以上爲Hbase的基本需要掌握的知識點。


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