深入理解HBASE(1)讀寫流程

寫在開頭

這是一次對自己之前看bigtable論文和hbase各種文章的筆記的總結(jié)
關(guān)于Hbase的架構(gòu)不會(huì)再多說闺属,網(wǎng)上有很多淑趾。

HBASE 寫流程

寫操作流程
(1) Client通過Zookeeper的調(diào)度藏斩,向RegionServer發(fā)出寫數(shù)據(jù)請求庶骄,在Region中寫數(shù)據(jù)黎烈。


? Client提交一個(gè)Put請求到RegionServer胡嘿,數(shù)據(jù)首先會(huì)寫到WAL中
? 當(dāng)數(shù)據(jù)寫到WAL之后,數(shù)據(jù)會(huì)寫到MemStore中停做,等待刷新到磁盤中
? 數(shù)據(jù)寫到MemStore完成之后晤愧,RS會(huì)給Client發(fā)送確認(rèn)信息


(2) 數(shù)據(jù)被寫入Region的MemStore,直到MemStore達(dá)到預(yù)設(shè)閾值蛉腌。
(3) MemStore中的數(shù)據(jù)被Flush成一個(gè)StoreFile官份。
(4) 隨著StoreFile文件的不斷增多,當(dāng)其數(shù)量增長到一定閾值后烙丛,觸發(fā)Compact合并操作舅巷,將多個(gè)StoreFile合并成一個(gè)StoreFile,同時(shí)進(jìn)行版本合并和數(shù)據(jù)刪除河咽。
(5) StoreFiles通過不斷的Compact合并操作钠右,逐步形成越來越大的StoreFile。
(6) 單個(gè)StoreFile大小超過一定閾值后忘蟹,觸發(fā)Split操作飒房,把當(dāng)前Region Split成2個(gè)新的Region搁凸。父Region會(huì)下線,新Split出的2個(gè)子Region會(huì)被HMaster分配到相應(yīng)的RegionServer上狠毯,使得原先1個(gè)Region的壓力得以分流到2個(gè)Region上护糖。
可以看出HBase只有增添數(shù)據(jù),所有的更新和刪除操作都是在后續(xù)的Compact歷程中舉行的嚼松,使得用戶的寫操作只要進(jìn)入內(nèi)存就可以立刻返回嫡良,實(shí)現(xiàn)了HBase I/O的高性能。


寫流程惜颇,來自Map-R

HBase 讀流程

讀操作流程
(1) Client訪問Zookeeper皆刺,查找-ROOT-表,獲取.META.表信息凌摄。
(2) 從.META.表查找羡蛾,獲取存放目標(biāo)數(shù)據(jù)的Region信息,從而找到對應(yīng)的RegionServer锨亏。
(3) 通過RegionServer獲取需要查找的數(shù)據(jù)痴怨。
(4) Regionserver的內(nèi)存分為MemStore和BlockCache兩部分,MemStore主要用于寫數(shù)據(jù)器予,BlockCache主要用于讀數(shù)據(jù)浪藻。讀請求先到MemStore中查數(shù)據(jù),查不到就到BlockCache中查乾翔,再查不到就會(huì)到StoreFile上讀爱葵,并把讀的結(jié)果放入BlockCache。
尋址過程:client–>Zookeeper–>-ROOT-表–>META表–>RegionServer–>Region–>client

pS HBase會(huì)使用BlockCache索引和bloom filters來加載那包含目標(biāo)row cells的HFile到內(nèi)存

關(guān)于Meta Table

可以看成普通的表
作用:用來存放所有的region信息反浓,查詢的時(shí)候通過meta table來找到一個(gè)給出的table key所在的Region

結(jié)構(gòu)

結(jié)構(gòu)

(默認(rèn)列簇為info)
Key
格式: ([table],[region start key],[region id])
Values
info:regioninfo(序列化HRgionInfo實(shí)例)
info:server (包含此Region的RegionServer的server:port)
info:serverstartcode(包含此Region的RegionServer的啟動(dòng)時(shí)間)

所有客戶端訪問用戶數(shù)據(jù)前萌丈,需要首先訪問Zookeeper獲得-ROOT-的位置,然后訪問-ROOT-表獲得.META.表的位置雷则,最后根據(jù).META.表中的信息確定用戶數(shù)據(jù)存放的位置

關(guān)于ROOT Table

HBase的用-ROOT-表來記錄.META.的Region信息辆雾,就和.META.記錄用戶表的Region信息一模一樣。-ROOT-只會(huì)有一個(gè)Region月劈。
這么一來Client端就需要先去訪問-ROOT-表度迂。所以需要知道管理-ROOT-表的RegionServer的地址。這個(gè)地址被存在ZooKeeper中猜揪。默認(rèn)的路徑是:
/hbase/root-region-server

HBase的所有Region元數(shù)據(jù)被存儲(chǔ)在.META.表中2.1惭墓,隨著Region的增多,.META.表中的數(shù)據(jù)也會(huì)增大而姐,并分裂成多個(gè)新的Region诅妹。為了定位.META.表中各個(gè)Region的位置,把.META.表中所有Region的元數(shù)據(jù)保存在-ROOT-表中,最后由Zookeeper記錄-ROOT-表的位置信息吭狡。

-ROOT-表永遠(yuǎn)不會(huì)被分割,它只有一個(gè)Region丈莺,這樣可以保證最多只需要三次跳轉(zhuǎn)就可以定位任意一個(gè)Region划煮。為了加快訪問速度,.META.表的所有Region全部保存在內(nèi)存中缔俄〕谇铮客戶端會(huì)將查詢過的位置信息緩存起來,且緩存不會(huì)主動(dòng)失效俐载。如果客戶端根據(jù)緩存信息還訪問不到數(shù)據(jù)蟹略,則詢問相關(guān).META.表的Region服務(wù)器,試圖獲取數(shù)據(jù)的位置遏佣,如果還是失敗挖炬,則詢問-ROOT-表相關(guān)的.META.表在哪里状婶。最后,如果前面的信息全部失效草姻,則通過ZooKeeper重新定位Region的信息撩独。所以如果客戶端上的緩存全部是失效综膀,則需要進(jìn)行6次網(wǎng)絡(luò)來回僧须,才能定位到正確的Region担平。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暂论,一起剝皮案震驚了整個(gè)濱河市取胎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匪傍,老刑警劉巖役衡,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件手蝎,死亡現(xiàn)場離奇詭異棵介,居然都是意外死亡邮辽,警方通過查閱死者的電腦和手機(jī)逆巍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灵再,“玉大人翎迁,你說我怎么就攤上這事汪榔〕针纾” “怎么了士聪?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵灵寺,是天一觀的道長略板。 經(jīng)常有香客問我蚯根,道長,這世上最難降的妖魔是什么教藻? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任绍移,我火速辦了婚禮蹂窖,結(jié)果婚禮上瞬测,老公的妹妹穿的比我還像新娘横媚。我一直安慰自己,他們只是感情好月趟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布灯蝴。 她就那樣靜靜地躺著,像睡著了一般孝宗。 火紅的嫁衣襯著肌膚如雪穷躁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天因妇,我揣著相機(jī)與錄音问潭,去河邊找鬼。 笑死沙峻,一個(gè)胖子當(dāng)著我的面吹牛睦授,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摔寨,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼去枷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起删顶,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤竖螃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后逗余,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體特咆,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年录粱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腻格。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啥繁,死狀恐怖菜职,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旗闽,我是刑警寧澤酬核,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站适室,受9級(jí)特大地震影響嫡意,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捣辆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一蔬螟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罪帖,春花似錦促煮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坐昙,卻和暖如春绳匀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炸客。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工疾棵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痹仙。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓是尔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親开仰。 傳聞我的和親對象是個(gè)殘疾皇子拟枚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 參考:http://www.reibang.com/p/569106a3008f 最近在逐步跟進(jìn)Hbase的相關(guān)...
    博弈史密斯閱讀 855評(píng)論 1 1
  • 本文首先簡單介紹了HBase,然后重點(diǎn)講述了HBase的高并發(fā)和實(shí)時(shí)處理數(shù)據(jù) 薪铜、HBase數(shù)據(jù)模型、HBase物理...
    達(dá)微閱讀 2,734評(píng)論 1 13
  • [TOC] 摘錄一 hbase.rootdir 這個(gè)目錄是region server的共享目錄恩溅,用來持久化HBas...
    昨夜今夕閱讀 11,215評(píng)論 1 8
  • 簡介 HBase是高可靠性隔箍,高性能,面向列脚乡,可伸縮的分布式存儲(chǔ)系統(tǒng)蜒滩,利用HBase技術(shù)可在廉價(jià)PC Serve...
    九世的貓閱讀 2,192評(píng)論 1 6
  • 比特科技: 存儲(chǔ)、數(shù)據(jù)庫奶稠、大數(shù)據(jù)技術(shù) ? HBase原理和設(shè)計(jì) http://www.bitstech.net/...
    葡萄喃喃囈語閱讀 728評(píng)論 0 11