hbase干貨
區(qū)別做nosql有很多,hive與hbase,二者都是基于hadoop的,不同是,hive基于類(lèi)sql引擎的,所以可以用HSQL語(yǔ)句來(lái) 用來(lái)統(tǒng)計(jì)查詢,返回?cái)?shù)據(jù)比較慢,默認(rèn)是便利表中所有的數(shù)據(jù)。?
hbase呢是key/value的數(shù)據(jù)庫(kù),用來(lái)實(shí)時(shí)查詢是比較擅長(zhǎng)的,facebook的消息實(shí)時(shí)分析用此,?
名詞:MapReduce?
由master分配任務(wù)給worker執(zhí)行,map函數(shù)讀取被分配的輸入數(shù)據(jù)片段,輸出中間key/value pair值的集合,reduce函數(shù)手機(jī)具有相中中間key值的value值,合并這些value值,形成一個(gè)較小的value值的集合?
把一些數(shù)據(jù)通過(guò)map來(lái)歸類(lèi),通過(guò)reducer來(lái)把同一類(lèi)的數(shù)據(jù)進(jìn)行處理?
hbase理解的應(yīng)該有以下幾個(gè)模塊?
簡(jiǎn)單理解hbase更新數(shù)據(jù),首先寫(xiě)到hlog日志,然后同時(shí)通過(guò)hregionserver?到region,再通過(guò)store模塊的memstore存儲(chǔ),如果達(dá)到設(shè)置的值則執(zhí)行store file,flush到hfile中,這樣這幾個(gè)模塊都用上了?
master或者h(yuǎn)master?是Master Server的實(shí)現(xiàn),負(fù)責(zé)監(jiān)控集群中的RegionServer實(shí)例,同時(shí)是所有metadata改變的接口,在集群中,通常運(yùn)行在NameNode上面?
hregionserver ?是RegionServer的實(shí)現(xiàn),服務(wù)和管理Regions,集群中RegionServer運(yùn)行在DataNode?
region?代表table,Region有多個(gè)Store(列簇),Store有一個(gè)Memstore和多個(gè)StoreFiles(HFiles),StoreFiles的底層是Block?
Hlog?
memstore?
store file?
Hlog如何保證hbase一致性的?
HBase的可靠性是通過(guò)HLog實(shí)現(xiàn)的,HLog機(jī)制是WAL(Write-Ahead Logging)的一種實(shí)現(xiàn),預(yù)寫(xiě)日志。WAL是事務(wù)機(jī)制中常見(jiàn)的一致性實(shí)現(xiàn)方式。每個(gè)Region Server中都會(huì)有一個(gè)HLog實(shí)現(xiàn),Region Server更新操作時(shí),先把記錄到寫(xiě)到WAL(也就是HLog)中,再寫(xiě)入到Store的MemStore,最終MemStore會(huì)將數(shù)據(jù)寫(xiě)入到持久化的HFile中,當(dāng)MemStore到達(dá)配置的內(nèi)存閥值時(shí)。通過(guò)先寫(xiě)WAL(HLog),再寫(xiě)MemStore,這樣的方式保證寫(xiě)的可靠性。?
如果沒(méi)有WAL,當(dāng)Region Server宕掉的時(shí)候,MemStore還沒(méi)寫(xiě)入到HFile,或者StoreFile還沒(méi)保存,那么數(shù)據(jù)就會(huì)丟失。而HFile的數(shù)據(jù)由HDFS保證的,默認(rèn)HDFS中會(huì)有3份。?
如果服務(wù)器崩潰,region server會(huì)回訪Hlog,通過(guò)數(shù)據(jù)回寫(xiě),來(lái)恢復(fù)服務(wù)器的內(nèi)存數(shù)據(jù)。
了解更多相關(guān)內(nèi)容歡迎關(guān)注http://www.vecloud.com/