來看看年薪80W的大數(shù)據(jù)大牛是如何理解 hbase 的架構(gòu)及設(shè)計(jì)原理

簡介

HBase是一個(gè)開源的非關(guān)系型分布式數(shù)據(jù)庫(NoSQL),它參考了谷歌的BigTable建模,實(shí)現(xiàn)的編程語言為Java涣脚。它是Apache軟件基金會Hadoop項(xiàng)目的一部分椿浓,運(yùn)行于HDFS文件系統(tǒng)之上,為Hadoop提供類似于BigTable規(guī)模的服務(wù)德玫。HBase在列上實(shí)現(xiàn)了BigTable論文提到的壓縮算法、內(nèi)存操作和布隆過濾器椎麦。HBase的表能夠作為MapReduce任務(wù)的輸入和輸出宰僧,可以通過Java API來存取數(shù)據(jù),也可以通過REST观挎、Avro或者Thrift的API來訪問琴儿。HBase雖然性能有顯著的提升段化,但還不能直接取代SQL數(shù)據(jù)庫。現(xiàn)今它已經(jīng)應(yīng)用于多個(gè)數(shù)據(jù)驅(qū)動型網(wǎng)站造成。

本文從架構(gòu)方面探討hbase的主要設(shè)計(jì)显熏,從而在需要hbase的場合能夠更好的設(shè)計(jì)和判斷。

首先晒屎,先來看看hbase的整體架構(gòu)喘蟆。除了DFS組件,hbase的基本組件圖實(shí)際上就是Zookeeper鼓鲁,HMaster蕴轨,RegionServer。

其中骇吭,RegionServer作為數(shù)據(jù)的實(shí)際存取服務(wù)器橙弱,主要負(fù)責(zé)數(shù)據(jù)的最終存取,一般情況都是多臺燥狰;

RegionServer根據(jù)不同的row key劃分為許多region棘脐,每個(gè)region按順序存放從startKey到endKey的數(shù)據(jù)。每個(gè)RegionServer有下面這些組件:

一個(gè)WAL: write ahead log. 聽名知其意碾局,該文件是落庫前先寫的日志文件荆残,它最主要的作用是恢復(fù)數(shù)據(jù)用,類似于mysql的binlog净当。保存在HDFS中内斯。

一個(gè)BlockCache: regionServer的讀緩存。保存使用最頻繁的數(shù)據(jù)像啼,使用LRU算法換出不需要的數(shù)據(jù)俘闯。

多個(gè)Region: 每個(gè)region包含多個(gè)store,每個(gè)CF擁有一個(gè)store

store: 每個(gè)store包含多個(gè)storeFile和一個(gè)memstore

Memstore: region的寫緩存忽冻。保存還未寫入HFile的數(shù)據(jù)真朗,寫入數(shù)據(jù)前會先做排序,每個(gè)region每個(gè)CF都會擁有一個(gè)Memstore僧诚,這就是為什么CF不能建太多的原因遮婶。

storeFile: 真正存儲keyvalue數(shù)據(jù)的文件,其保存的文件是排序過的湖笨。一個(gè)storeFile對應(yīng)一個(gè)HFile旗扑。保存在HDFS中

HFile分為數(shù)據(jù)塊,索引塊慈省,bloom過濾器以及trailer臀防。

Trailer主要記錄了HFile的基本信息,各個(gè)部分的偏移和地址信息。

Data block主要存儲用戶的key-value數(shù)據(jù)

Bloom filter主要用來快速定位文件是否不在數(shù)據(jù)塊袱衷。

比較容易混淆的是zookeeper和hmaster捎废。

Zookeeper負(fù)責(zé)保持多臺Hmaster中只有一臺是活躍的;存儲Hbase的schema致燥,table登疗,CF等元信息;存儲所有的region入口篡悟;監(jiān)控regionServer的狀態(tài)谜叹,并將該信息通知hmaster匾寝“嵩幔可以看出來,zookeeper幾乎是負(fù)責(zé)整個(gè)集群的關(guān)鍵信息存取以及關(guān)鍵狀態(tài)監(jiān)控艳悔。如果zookeeper掛了急凰,那么整個(gè)hbase集群幾乎就是不可用的狀態(tài)。

Hmaster則是負(fù)責(zé)對table元數(shù)據(jù)的管理猜年;對HRegion的負(fù)載均衡抡锈,調(diào)整HRegion的布局,比如分裂和合并乔外;包括恢復(fù)數(shù)據(jù)的遷移等床三。Hmaster相當(dāng)于對RegionServer的后臺管理,對于一些定制的管理行為杨幼,zookeeper不可能幫你完成撇簿,于是乎才有了hmaster。如果hmaster掛了差购,除了不能對table進(jìn)行管理配置四瘫,不能擴(kuò)展region,并不會影響整體服務(wù)的可用性欲逃。

接下來我們來關(guān)注一些關(guān)鍵流程找蜜。

客戶端首次讀寫的流程:

1. 客戶端首先從zookeeper中得到META table的位置,根據(jù)META table的存儲位置得到具體的RegionServer是哪臺

2. 詢問具體的RegionServer

寫流程:

1. 首先寫入WAL日志稳析,以防crash洗做。

2. 緊接著寫入Memstore,即寫緩存彰居。由于是內(nèi)存寫入诚纸,速度較快。

3. 立馬返回客戶端表示寫入完畢裕菠。

4. 當(dāng)Memstore滿時(shí)咬清,從Memstore刷新到HFile,磁盤的順序?qū)懰俣确浅?炀缮眨⒂涗浵伦詈笠淮巫罡叩膕equence號影钉。這樣系統(tǒng)能知道哪些記錄已經(jīng)持久化,哪些沒有掘剪。

讀流程:

1. 首先到讀緩存BlockCache中查找可能被緩存的數(shù)據(jù)

2. 如果未找到平委,到寫緩存查找已提交但是未落HFile的數(shù)據(jù)

3. 如果還未找到, 到HFile中繼續(xù)查找數(shù)據(jù)

數(shù)據(jù)緊湊:

數(shù)據(jù)從memStore刷新到HFile時(shí)夺谁,為了保持簡單廉赔,都是每個(gè)memStore放一個(gè)HFile,這會帶來大量小HFile文件匾鸥,使得查詢時(shí)效率相對較低蜡塌,于是,采用數(shù)據(jù)緊湊的方式將多個(gè)小文件壓縮為幾個(gè)大文件勿负。其中馏艾,minor compaction是自動將相關(guān)的小文件做一些適當(dāng)?shù)木o湊,但不徹底奴愉;而major compaction則是放在午夜跑的定時(shí)任務(wù)琅摩,將文件做最大化的緊湊。

數(shù)據(jù)恢復(fù)流程:

當(dāng)RegionServer掛了锭硼,zookeeper很快就能檢測到房资,于是將其下的region狀態(tài)設(shè)置為不可用。Hmaster隨即開始恢復(fù)的流程檀头。

1. HFile本身有2個(gè)備份轰异,而且有專門的HDFS來管理其下的文件。因此對HFile來說并不需要恢復(fù)鳖擒。

2. Hmaster重置region到新的regionServer

3. 之前在MemStore中丟失的數(shù)據(jù)溉浙,通過WAL分裂先將WAL按照region切分。切分的原因是WAL并不區(qū)分region蒋荚,而是所有region的log都寫入同一個(gè)WAL戳稽。

4. 根據(jù)WAL回放并恢復(fù)數(shù)據(jù)∑谏回放的過程實(shí)際上先進(jìn)MemStore惊奇,再flush到HFile

最后,小編還整理了更多大牛的教學(xué)視頻播赁,和學(xué)習(xí)資料

關(guān)注 轉(zhuǎn)發(fā)文章颂郎;++我威信 bmaaa01,獲取容为。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乓序,一起剝皮案震驚了整個(gè)濱河市寺酪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌替劈,老刑警劉巖寄雀,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陨献,居然都是意外死亡盒犹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門眨业,熙熙樓的掌柜王于貴愁眉苦臉地迎上來急膀,“玉大人,你說我怎么就攤上這事龄捡∽可” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵墅茉,是天一觀的道長命黔。 經(jīng)常有香客問我呜呐,道長就斤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任蘑辑,我火速辦了婚禮洋机,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洋魂。我一直安慰自己绷旗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布副砍。 她就那樣靜靜地躺著衔肢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪豁翎。 梳的紋絲不亂的頭發(fā)上角骤,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機(jī)與錄音心剥,去河邊找鬼邦尊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛优烧,可吹牛的內(nèi)容都是我干的蝉揍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼畦娄,長吁一口氣:“原來是場噩夢啊……” “哼又沾!你這毒婦竟也來了弊仪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤杖刷,失蹤者是張志新(化名)和其女友劉穎撼短,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挺勿,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡曲横,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了不瓶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禾嫉。...
    茶點(diǎn)故事閱讀 38,687評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚊丐,靈堂內(nèi)的尸體忽然破棺而出熙参,到底是詐尸還是另有隱情,我是刑警寧澤麦备,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布孽椰,位于F島的核電站,受9級特大地震影響凛篙,放射性物質(zhì)發(fā)生泄漏黍匾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一呛梆、第九天 我趴在偏房一處隱蔽的房頂上張望锐涯。 院中可真熱鬧,春花似錦填物、人聲如沸纹腌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽升薯。三九已至,卻和暖如春击困,著一層夾襖步出監(jiān)牢的瞬間涎劈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工沛励, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留责语,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓目派,卻偏偏與公主長得像坤候,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子企蹭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評論 2 349

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

  • HBase Architectural Components(HBase架構(gòu)組件) HBase架構(gòu)也是主從架構(gòu)白筹,由...
    陌上疏影涼閱讀 2,386評論 0 7
  • 初次接觸HBase的讀者智末,建議先閱讀淺析HBase:為高效的可擴(kuò)展大規(guī)模分布式系統(tǒng)而生 HBase的構(gòu)成 物理上來...
    耀凱考前突擊大師閱讀 5,238評論 0 12
  • HBase架構(gòu)的組成 HBase大體上按照master-slave架構(gòu)可以分解成三種類型的服務(wù)。Region se...
    期待現(xiàn)在閱讀 1,042評論 0 4
  • 二徒河、除夕 除夕的早晨系馆,突然開始下雪,我一直睡到八點(diǎn)才起床顽照,我很吃驚由蘑,居然睡這么遲,哎呀媽呀代兵,它們一定餓扁了吧尼酿。我起...
    碧玫閱讀 271評論 0 3
  • 「心態(tài)」 畢業(yè)后的一年多里,一直糾結(jié)于工作還是考研植影,時(shí)成亚妫患得患失,情緒大起大落思币。因?yàn)椴桓首鋈魏问虑槎疾荒苋硇耐度?..
    GraceChow閱讀 237評論 0 7