什么是HBase?它是怎樣工作的?終于有人講明白了

導讀:HBase是一個構建在HDFS之上的、分布式的、支持多版本的NoSQL數(shù)據(jù)庫,它的出現(xiàn)補齊了大數(shù)據(jù)場景下快速查詢數(shù)據(jù)能力的短板。它非常適用于對平臺中的熱數(shù)據(jù)進行存儲并提供查詢功能。


RowKey:HBase中的每行數(shù)據(jù)都必須擁有一個唯一的行鍵,它類似于關系型數(shù)據(jù)庫中的主鍵。 Column Family:HBase中的每個列都歸屬于一個列簇,它類似于子表的概念。一個列簇對應一個MemStore對象。 Column:HBase用列來定義數(shù)據(jù)屬性字段,和關系型數(shù)據(jù)庫中的表字段類似。 Version:HBase中的數(shù)據(jù)是有版本概念的,每次新增或者修改數(shù)據(jù)都會產(chǎn)生一個新的版本。



WAL:預寫日志是HDFS上的一個文件,它是一種容災策略。HBase為了提高寫入性能,在寫入數(shù)據(jù)的時候并不急于將數(shù)據(jù)保存到磁盤,而是將數(shù)據(jù)直接保留在內存中。但是內存中的數(shù)據(jù)并不是一直可靠的,所以HBase采用了預寫日志的方案。當有新數(shù)據(jù)寫入的時候,RegionServer先通過預寫日志的方式記錄數(shù)據(jù),同時將數(shù)據(jù)放入內存對象MemStore中。當日志寫完之后就立刻返回客戶端告知寫入成功。 BlockCache:數(shù)據(jù)塊緩存是一種讀緩存,客戶端讀取數(shù)據(jù)的時候會先從這個緩存中查找有沒相應的數(shù)據(jù)。塊數(shù)據(jù)緩存采用LRU失效策略。 MemStore:MemStore是一種寫緩存,HBase為了提升寫入性能不會直接將數(shù)據(jù)刷入磁盤而是先使用MemStore內存對象存儲數(shù)據(jù)。再通過一個守護線程定期將MemStore刷入磁盤。在一個region中每個列簇都擁有一個MemStore。 Hfile:Hfile是HBase最終數(shù)據(jù)存儲的載體,它本質上是HDFS上的一個文件。




評論
圖片
表情
