今天接著上面的HBASE往下看
回顧一下,Hbase是什么?
其實就是一個非關(guān)系型的數(shù)據(jù)庫,能夠支持超大規(guī)模的數(shù)據(jù)的實時讀寫。(可以看出很強大)
在儲存機制上與傳統(tǒng)MySQL的不同,HBASE不存儲空字段,玩的是列存儲,特點就是容量多。
HBASE的應(yīng)用場景也非常多,凡是海量明細數(shù)據(jù)且后期還要查詢的,都很適合HBASE。
HBASE的組成結(jié)構(gòu)
主要有4個部分組成,每個部分都有特定的功能。
- zookeeper:主要就是監(jiān)控用的,(誰讓這老哥監(jiān)控能力強呢),此外保留了一些元數(shù)據(jù)(數(shù)據(jù)的數(shù)據(jù))信息,是HBASE表的尋址入口(我愿稱之為指路人)。
- Master:主要就是起個維護作用,每個系統(tǒng)都得有個紀律委員。給RegionServer分配Region
- RegionServer: 這個就是用來管理Region的,接受客戶端的讀寫請求。
- Region:最小的小弟了,由多個Store(數(shù)據(jù)表的一個截面)組成。
HBASE更加深入一些的操作
HBase讀數(shù)據(jù)的流程
第一步:先找到指路人zookeeper,在zookeeper中找到數(shù)據(jù)表的region的位置,然后開始從meta表里讀取對應(yīng)的region信息。(注意,這里面都是數(shù)據(jù)的數(shù)據(jù),其實就是數(shù)據(jù)的儲存位置信息,知道了信息再去表里面找)
第二步:根據(jù)客戶需要的表名、namespace、rowkey信息來找到region的位置信息。
第三步:先找到這個region的RegionServer,也就是他的管理員,向管理員發(fā)送請求。
第四步:請求同意后就可以進去找region了。
第五步:如果說這里面沒有,那就要從BlockCache里面找了。
因為HBASE上的內(nèi)存是有兩個的,一個是memstore,也就是我們上面說的,另一個就是這個BlockCache了。
第六步:如果這BC里面還沒有,就去StoreFile。(如果這里還沒有,你就得考慮你是不是壓根沒這玩意)
Hbase寫數(shù)據(jù)的流程
前三步和讀數(shù)據(jù)是一樣的,第四步就不同了,不過也就是正常寫數(shù)據(jù)。這里強調(diào)讀寫數(shù)據(jù)的功能,應(yīng)該還是像說一下這個Hbase的機理,是先找元數(shù)據(jù)(數(shù)據(jù)的信息),再根據(jù)元數(shù)據(jù)去找真實數(shù)據(jù)。
HBase的刷寫和合并
這個倒是沒啥好說的,只要知道,這個是出于對數(shù)據(jù)的保護來制作的就可以了,具體遇到的時候,大概學習一下就可以。
今天有些晚了,明天開始學習Redis的知識。