您好,登錄后才能下訂單哦!
HBase是一個分布式的、面向列的開源數據庫,該技術來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫。另一個不同的是HBase基于列的而不是基于行的模式。
一、Hbase獲取查詢條件結果的過程
1、兩張特殊表:-ROOT- & .META.
.META. 記錄用戶表的Region信息,同時,.META.也可以有多個region
-ROOT- 記錄.META.表的Region信息,但是,-ROOT-只有一個region
Zookeeper 中記錄了-ROOT-表的location
2、客戶端訪問數據的流程:
Client -> Zookeeper -> -ROOT- -> .META. -> 用戶數據表
3、多次網絡操作,不過client端有cache緩存
二、Hbase架構
組成部件說明
1、Client:
使用HBase RPC機制與HMaster和HRegionServer進行通信
Client與HMaster進行通信進行管理類操作
Client與HRegionServer進行數據讀寫類操作
2、Zookeeper:
Zookeeper Quorum存儲-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注冊到Zookeeper中,HMaster隨時感知各個HRegionServer的健康狀況
Zookeeper避免HMaster單點問題
3、HMaster:
HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master在運行,主要負責Table和Region的管理工作:
3.1 管理用戶對表的增刪改查操作
3.2 管理HRegionServer的負載均衡,調整Region分布
3.3 Region Split后,負責新Region的分布
3.4 在HRegionServer停機后,負責失效HRegionServer上Region遷移
4、HRegionServer:
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的基本需要掌握的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。