

摘要:傳統(tǒng)的RDBMS關系型數(shù)據(jù)庫存儲一定量數(shù)據(jù)時進行數(shù)據(jù)檢索沒有問題,可當數(shù)據(jù)量上升到非常巨大規(guī)模的數(shù)據(jù)(TB或PB)級別時,傳統(tǒng)的RDBMS已無法支撐,這時候就需要一種新型的數(shù)據(jù)庫系統(tǒng)更好更快的處理這些數(shù)據(jù)。我們選擇了HBase
關鍵詞:HBase;數(shù)據(jù)存儲;數(shù)據(jù)庫
HBase——Hadoop Database 是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術可在廉價PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群,它的技術來源于Fay Chang所撰寫的Google論文“BigTable”:一個結(jié)構(gòu)化數(shù)據(jù)的分布式存儲系統(tǒng)。HBase不同于一般的關系數(shù)據(jù)庫,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫,另一個不同就是它是基于列的而不是基于行的模式。
HBase是水平擴展的、分布式的、開源有序映射數(shù)據(jù)庫,它運行在Hadoop文件系統(tǒng)HDFS上,它不要求有預定義的模式,可以被看做彈性擴展的多維表格,通過動態(tài)添加列,在數(shù)據(jù)插入或查詢之前修改列結(jié)構(gòu),以支持任意類型的數(shù)據(jù)結(jié)構(gòu)。由于HBase運行在HDFS上,理論上HDFS有多少個節(jié)點就可以配置多少個HBase,因此,HBase非常適合存儲海量數(shù)據(jù)
上圖為HBase的架構(gòu)設計,Master為HBase的主節(jié)點,用來協(xié)調(diào)客戶端應用程序和RegionServer的關系,同時用來監(jiān)控和記錄元數(shù)據(jù)的變化和管理;RegionServer是從節(jié)點,用region的形式處理實際的表,region是HBase表的基礎單元組件,它存儲了分布式表,所以HBase表和HBase集群利用Master和RegionServer來協(xié)同工作;Zookeeper是一個高性能、集中化、分布式應用程序協(xié)調(diào)服務,它為HBase提供了分布式同步和組服務,在HBase中它用來選舉主節(jié)點Master以便跟蹤可用的在線服務器同時維護集群的元數(shù)據(jù),一般安裝多個用于提高Master的高可用。為了便于理解,可以把Master看做namenode,把RegionServer看做datanode,因為它們在HBase中的作用和namenode、datanode在HDFS中的作用相似,注意,這樣的比喻僅僅為了方便初學理解,實際還是有著很大的不同。
一個HBase表由以下幾部分組成
行鍵:是HBase表中每個記錄的唯一值,無論選擇什么類型數(shù)據(jù)作為行鍵,它在內(nèi)部、磁盤或內(nèi)存里都將轉(zhuǎn)換為字節(jié)數(shù)組進行存儲,表中的每條數(shù)據(jù)都有唯一的標識符,即rowkey,相當于關系型數(shù)據(jù)庫表中的主鍵
列簇:一張HBase表由表的不同列集合在一起。將相同功能或類型的列分類組合在一起,這樣做的好處是可以更快的分開存儲在HBase磁盤上的列簇中檢索出所需的列
列:屬于某一個列簇,相當于關系型數(shù)據(jù)庫表中的非主屬性字段
HBase沒有花哨的數(shù)據(jù)類型,它的所有數(shù)據(jù)都是字節(jié)數(shù)組。它是一種字節(jié)進字節(jié)出的數(shù)據(jù)庫,其特征在于,當插入一個值時,HBase隱式的通過序列化框架將數(shù)據(jù)轉(zhuǎn)化成字節(jié)數(shù)組,然后存儲進單元格或者給出字節(jié)數(shù)組,當獲取數(shù)據(jù)的時候,它在隱式的轉(zhuǎn)化成等價的數(shù)據(jù)展示出來。單元格是HBase表最小的存儲單元,在內(nèi)部是一個列的實際值存儲,因此一個單元格的數(shù)據(jù)由行鍵+列簇名+列名+時間戳:實際值組成
HBase在實際存儲中,是按照列進行存儲的,所有每一個列簇存儲在單獨的一個HDFS文件上。一張HBase表的行都是按照rowkey字典序進行排列的,并且表格在行的方向上被分隔為多個region,region是HBase中分布式存儲和負載均衡的最小單元,不同的region分布到不同RegionServer中,也就是說,一個RegionServer中可以包含多個來自不同HBase表的region。
Region雖然是最小的分布式存儲的最小單元,但卻不是存儲的最小單元。Region由一個或多個store組成,每個store保存一個列簇,每個store又由一個memstore(存儲在內(nèi)存中,是內(nèi)存中的寫入緩沖區(qū),寫入的數(shù)據(jù)會預先存儲在其中)和零到多個的storefile(存儲在HDFS上,存儲的最小單元是它里面的HFile)組成。
作者簡介:
沈成龍,1996年11月,男,漢,浙江省臺州人,本科,學生,研究方向:計算機科學與技術