這篇文章給大家分享的是有關(guān)HBase體系結(jié)構(gòu)是怎么樣的的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都做網(wǎng)站、巢湖網(wǎng)絡(luò)推廣、小程序定制開發(fā)、巢湖網(wǎng)絡(luò)營銷、巢湖企業(yè)策劃、巢湖品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供巢湖建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:vcdvsql.cn
HBase是Apache hadoop集群中常用的非關(guān)系型數(shù)據(jù),它是一種開源的、分布式的、多版本、面向列存儲的數(shù)據(jù)庫。
它的源碼在 https://github.com/apache/hbase 上,妥妥的開源啊。。。
分布式是因?yàn)樗臄?shù)據(jù)最后存儲在HDFS上,所以它繼承了hadoop分布式的優(yōu)良傳統(tǒng)(不知道能否這么理解)。
多版本就不多介紹了,版本更新快唄。。。
面向列的存儲是它與傳統(tǒng)關(guān)系型數(shù)據(jù)庫最大的區(qū)別之一,它是根據(jù)rowKey、columnfamily、quaifer、timestamp(如果你有多版本的話)得到你最后的value值。。這個咱們以后再介紹,今天主要想寫的是hbase的體系結(jié)構(gòu)。
hbase的服務(wù)器體系結(jié)構(gòu)也是主從服務(wù)器架構(gòu),分為HBase Master server和HRegionServers。
HBase Master server :主服務(wù)器,主要負(fù)責(zé)管理HRegionServers,個人理解:只是關(guān)于HRegionServer的決策權(quán)都是由它完成的。
具體的功能有:
1.用戶對Table的增、刪、改、查。
2。HRegionServer的負(fù)載均衡,調(diào)整HRegion的分布,像一個HRegionserver掛了,master會將掛了的HRegionserver上面的HRegion重新拿到,標(biāo)上未分配,然后再分配一個活的HRegionServer,當(dāng)然,它也得先詢問下這個HRegionServer要不要了。。
3.在HRegion分裂后,負(fù)責(zé)新的HRegion的分配。 默認(rèn)的HRegion的大小為64M,當(dāng)超過這個大小的時候,它會自動分裂成兩個,并且這個拆分速度很快,因?yàn)樗诓鸱值臅r候先會創(chuàng)建兩個HRegion,而這兩個HRegion先會保存對原HRegion的引用,當(dāng)這兩個新的HRegion數(shù)據(jù)拆分完成后,再將此引用去掉,并刪除原HRegion。現(xiàn)在拆分完了,但是HRegion不是拆分完了就沒事干了,它得找個HRegionServer管理啊,so,又得HBase Master Server分配了,同上~~
4.HRegionServer停機(jī)后,負(fù)責(zé)失效的HRegionServer上的HRegion分配。服務(wù)掛了,但是HRegion沒掛啊,HRegion可以說是一個存儲文件夾,一個服務(wù)掛了,找頭(hbase master server)再找一個唄,然后繼續(xù)做著保存或查詢時被提取數(shù)據(jù)的工作。
HRegionServer的構(gòu)成:
HRegionServer包含了一個HLog部分和HRegion部分(多個HRegion)。。
ps:這地方可能有些異議,因?yàn)榫W(wǎng)上一些圖片顯示的都是HRegion里才包含HLog,網(wǎng)上的資料比較老,所以這里我參考《hadoop實(shí)戰(zhàn)》中的資料,它的版本是0.92,可能與現(xiàn)在的0.96版本還算比較接近的。。
HLog部分保存著用戶操作hbase的日志(不排除也包含master管理hregion的操作,明天看一下),用戶的操作都會先記錄到HLog中,然后再保存到HRegion中。
而HRegion其實(shí)就是存儲的實(shí)際數(shù)據(jù)了。它包含了多個HStore。
HStore:每一個列族都會形成一個HStore,它又由MemStore和多個HFile組成。
MemStore駐留在內(nèi)存中,當(dāng)數(shù)據(jù)保存時,數(shù)據(jù)會先存儲到MemStore中,然后根據(jù)用戶設(shè)定的顯式刷寫或隱式刷寫模式,將數(shù)據(jù)再保存到HFile中。默認(rèn)的存儲模式是隱式存儲。這個以后寫client api的時候再介紹。。當(dāng)然,這地方還有個注意的地方,當(dāng)數(shù)據(jù)保存到MemStore,最后卻沒有保存到HFile中時,死機(jī)了。。HLog的作用來了,用戶操作的指令保存在HLog中,它會將指令執(zhí)行,再將重新保存到MemStore中,這樣就可以完成后面的操作了。。
HFile負(fù)責(zé)的是實(shí)際數(shù)據(jù)的存儲了,它是HBase中的最小單位了。它也可以進(jìn)行拆分,也就是所謂的分區(qū),讓數(shù)據(jù)更加分散,讀取數(shù)據(jù)的時候更加效率。
昨天未寫完的部分今天補(bǔ)上。。
HBase的兩個主要結(jié)構(gòu)介紹完了,那么咱們現(xiàn)在就開始介紹一下它的存儲流程和讀取的流程。。
將它作為一個流程圖可能不太合適。。不過它里面所需要的東西基本都包含了。。
先說下Zookeeper的作用:
存儲了Root表的地址和HMaster的地址。存儲ROOT的地址可以更快的查詢到哪張表有數(shù)據(jù),提高運(yùn)算效率。存儲HMaster地址是為了確定有哪些HMaster。
管理著MHaster。當(dāng)HMaster失效時,它可以找到另一個HMaster,避免HMaster單點(diǎn)故障。
ROOT與.META與Region的結(jié)構(gòu)是一樣的,都是以鍵值對的形式保存數(shù)據(jù)。。
ROOT里面存儲了對應(yīng)的.META地址和開始結(jié)束信息(像1-5,說明ROOT里面存儲了5個.META的地址信息)。
.META里面同樣存儲了對應(yīng)的HRegion地址和開始結(jié)束信息。
好了,現(xiàn)在開始通過從客戶端讀取信息的角度開始分析了:
client要讀取信息,先查詢下client 端的cache中是否存在數(shù)據(jù),如果存在,剛直接返回數(shù)據(jù)。如果不存在,則進(jìn)入到zookeeper,查找到里面的相應(yīng)數(shù)據(jù)存在的Root表中的地址。
通過數(shù)據(jù)存在ROOT表中地址找到.META,最終找到HRegion。找到HRegion后,它會先訪問MemStore中是否存在數(shù)據(jù),如果存在,則直接讀取。如果沒有,就再到HFile中查找數(shù)據(jù),并將數(shù)據(jù)放到MemStore。
最后數(shù)據(jù)返回到客戶端顯示。。
存儲數(shù)據(jù)流程:
由于Hbase中默認(rèn)的刷寫方式是隱式刷寫,所以你在put()數(shù)據(jù)時,它會自動保存到HRegion上,但當(dāng)你批量處理數(shù)據(jù)時,它會將數(shù)據(jù)先保存到client端的cache中。當(dāng)你關(guān)閉隱式刷寫時,你put()的數(shù)據(jù)則會保存到client cache中,直到你調(diào)用刷寫命令時,才會保存到HRegion中。具體的命令等明天我去公司的時候貼上來。。在家沒環(huán)境。。
在HRegion部分的存儲:要寫入的數(shù)據(jù)會先寫到HMemcache 和Hlog 中,HMemcache 建立緩存,Hlog 同步Hmemcache和Hstore 的事務(wù)日志,發(fā)起Flush Cache 時,數(shù)據(jù)持久化到Hstore 中,并清空HMemecache。
此處需要關(guān)注:
HBase 寫數(shù)據(jù),首先寫入Memcache,并計入Log中,最后寫入HStore中,如果在寫入HStore是發(fā)生系統(tǒng)異常,就可以從Log中恢復(fù)數(shù)據(jù),重新寫 入HStore中。
感謝各位的閱讀!關(guān)于“HBase體系結(jié)構(gòu)是怎么樣的”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
網(wǎng)站名稱:HBase體系結(jié)構(gòu)是怎么樣的
文章URL:http://vcdvsql.cn/article40/gghdeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、軟件開發(fā)、網(wǎng)站建設(shè)、微信公眾號、網(wǎng)站維護(hù)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)