HBase架構(gòu)詳解及讀寫流程

目錄
一隘击、HBase存儲結(jié)構(gòu)詳解
二侍芝、HBase寫流程
三、HBase讀流程

Hbase是bigtable的開源山寨版本埋同。是建立的hdfs之上竭贩,提供高可靠性、高性能莺禁、列存儲、可伸縮窄赋、實時讀寫的數(shù)據(jù)庫系統(tǒng)哟冬。

它介于nosql和RDBMS之間,僅能通過主鍵(row key)和主鍵的range來檢索數(shù)據(jù)忆绰,僅支持單行事務(wù)(可通過hive支持來實現(xiàn)多表join等復(fù)雜操作)浩峡。主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。

與hadoop一樣错敢,Hbase目標主要依靠橫向擴展翰灾,通過不斷增加廉價的商用服務(wù)器缕粹,來增加計算和存儲能力。

HBase 中的表一般有這樣的特點:
1纸淮、大:一個表可以有上十億行平斩,上百萬列;
2咽块、面向列:面向列(族)的存儲和權(quán)限控制绘面,列(族)獨立檢索侈沪;
3揭璃、稀疏:對于為空(null)的列,并不占用存儲空間亭罪,因此瘦馍,表可以設(shè)計的非常稀疏。

一应役、HBase儲存結(jié)構(gòu)詳解

目錄
1.1情组、HDFS
1.2、HMaster
1.3扛吞、HRegionServer
1.4呻惕、HRegion
1.4.1、Region/Store/StoreFile/Hfile之間的關(guān)系


從上面的架構(gòu)圖可以看出HBase是建立在hadoop之上的,HBase底層依賴于HDFS滥比。HBase有3個重要的組件:Zookeeper亚脆、HMaster、HRegionServer盲泛。

Zookeeper為整個HBase集群提供協(xié)助的服務(wù)濒持,HMaster主要用于監(jiān)控和操作集群的所有RegionServer。RegionServer主要用于服務(wù)和管理分區(qū)(Regions)

1.1寺滚、HDFS

HBase底層依賴于HDFS的

1.2柑营、HMaster

HMaster是HBase集群架構(gòu)中的主節(jié)點,通常一個HBase集群存在多個HMaster節(jié)點,其中一個為Active Master,其余為Backup Master村视。

Hbase每時每刻只有一個HMaster主服務(wù)器程序在運行官套,HMaster將region分配給HRegionServer,協(xié)調(diào)HRegionServer的負載并維護集群的狀態(tài)蚁孔。Hmaster不會對外提供數(shù)據(jù)服務(wù)奶赔,而是由HRegionServer負責所有regions的讀寫請求及操作。

由于HMaster只維護表和region的元數(shù)據(jù)杠氢,負責Region的分配及數(shù)據(jù)庫的創(chuàng)建和刪除等操作而不參與數(shù)據(jù)的輸入/輸出過程站刑,HMaster失效僅僅會導(dǎo)致所有的元數(shù)據(jù)無法被修改,但表的數(shù)據(jù)讀/寫還是可以正常進行的鼻百。
備注:region,HRegionServer職責與功能下面內(nèi)容中會講解

1.2.1HMaster的作用:

A绞旅、調(diào)控Region server的工作
為Region server分配region,
負責HRegionServer的負載均衡,,
監(jiān)控集群中的Region server的工作狀態(tài), 發(fā)現(xiàn)失效的HRegionServer并重新分配其上的Hregion(通過監(jiān)聽zookeeper對于ephemeral node狀態(tài)的通知)摆尝。
備注:
HRegion,習(xí)慣把它稱為region,表的意思
HRegionServer,習(xí)慣把它稱為Region server,HRegionServer是HBase集群架構(gòu)中的從節(jié)點

B、管理數(shù)據(jù)庫
提供創(chuàng)建因悲,刪除或者更新表格的接口堕汞。

1.3、HRegionServer

HRegionServer是HBase集群架構(gòu)中的從節(jié)點囤捻,HBase中的表是根據(jù)row key的值水平分割成所謂的region的臼朗。一個region包含表中所有row key位于region的起始鍵值和結(jié)束鍵值之間的行。

集群中負責管理Region的結(jié)點叫做Region server蝎土。Region server負責數(shù)據(jù)的讀寫视哑。每一個Region server大約可以管理1000個region。
備注:HRegionServer,習(xí)慣把它稱為Region server,HRegionServer是HBase集群架構(gòu)中的從節(jié)點誊涯。(一些文章寫的是Region server挡毅、一些寫的是HRegionServer,兩個意思都是一樣的)

1.3.1暴构、HRegionServer由如下幾個部分組成
一個HRegionServer會有多個HRegion和一個HLog跪呈。
HLog:預(yù)寫入日志,防止內(nèi)存中數(shù)據(jù)丟失
HRegion:表,一個HRegionServer可以維護多個HRegion(習(xí)慣稱為一個Region Server可以維護多個Region)

1.3.2取逾、HRegionServer的職責
維護HMaster分配給它的HRegion耗绿,處理對這些HRegion的IO請求,也就是說客戶端直接和HRegionServer打交道砾隅。

參考文章:HBase深入分析之RegionServerhttps

1.4误阻、HRegion

概述

Region是HBase數(shù)據(jù)管理的基本單位,每個HRegion由多個Store構(gòu)成晴埂,每個Store保存一個列族(Columns Family)究反,表有幾個列族,則有幾個Store儒洛,每個Store由一個MemStore和多個StoreFile組成精耐,MemStore是Store在內(nèi)存中的內(nèi)容,寫到文件后就是StoreFile琅锻,StoreFile底層是以HFile的格式保存卦停。
Region相當于數(shù)據(jù)庫中的表

1.4.1、Region/Store/StoreFile/Hfile之間的關(guān)系

以下內(nèi)容轉(zhuǎn)載自文章:Hbase中Region/Store/StoreFile/Hfile之間的關(guān)系 恼蓬,這篇文章寫的超級好沫浆,擔心原文刪除,將文章內(nèi)容摘錄到本篇文章滚秩。

1.4.1.1、 Region

table在行的方向上分隔為多個Region淮捆。Region是HBase中分布式存儲和負載均衡的最小單元郁油,即不同的region可以分別在不同的Region Server上本股,但同一個Region是不會拆分到多個server上。

Region按大小分隔桐腌,表中每一行只能屬于一個region拄显。隨著數(shù)據(jù)不斷插入表,region不斷增大案站,當region的某個列族達到一個閾值(默認256M)時就會分成兩個新的region躬审。

1.4.1.2、 Store

每一個region有一個或多個store組成蟆盐,至少是一個store承边,hbase會把一起訪問的數(shù)據(jù)放在一個store里面,即為每個ColumnFamily建一個store(即有幾個ColumnFamily石挂,也就有幾個Store)博助。一個Store由一個memStore和0或多個StoreFile組成。

HBase以store的大小來判斷是否需要切分region痹愚。
store的數(shù)據(jù)存儲在兩個地方MemStore和StoreFile

1.4.1.3富岳、 MemStore

寫緩存,memStore 是放在內(nèi)存里的拯腮。由于 HFile 中的數(shù)據(jù)要求是有序的窖式,所以數(shù)據(jù)是先存儲在 MemStore 中,排好序后动壤,等到達刷寫時機才會刷寫到 HFile(當memStore的大小達到一個閥值【默認64MB】時萝喘,memStore會被flush到文件),每次刷寫都會形成一個新的 HFile狼电。

1.4.1.4蜒灰、StoreFile

memStore內(nèi)存中的數(shù)據(jù)寫到文件后就是StoreFile(即memstore的每次flush操作都會生成一個新的StoreFile),StoreFile底層是以HFile的格式保存肩碟。

1.4.1.5强窖、HFile

HFile是HBase中KeyValue數(shù)據(jù)的存儲格式,是hadoop的二進制格式文件削祈。一個StoreFile對應(yīng)著一個HFile翅溺。而HFile是存儲在HDFS之上的。

二髓抑、HBase寫流程

1咙崎、客戶端先訪問zookeeper,獲取Meta表位于那個region server
2吨拍、訪問Meta表對應(yīng)的region server服務(wù)器褪猛,根據(jù)請求的信息(namespace:table/rowkey),在meta表中查詢出目標數(shù)據(jù)位于哪個region server的哪個region中。
并將該表的region信息以及meta表的位置信息緩存到客戶端的meta cache羹饰,方便下次訪問伊滋。
3碳却、與目標數(shù)據(jù)的region server進行通訊
4、將數(shù)據(jù)寫入到WAL中
5笑旺、將數(shù)據(jù)寫入到對應(yīng)的memstore中昼浦,
6、向客戶端發(fā)送寫入成功的信息
7筒主、等達到memstore的刷寫時機后关噪,將數(shù)據(jù)刷寫到HFILE中

參考文章:查看hbase:meta 表位于哪個 Region Server

三、HBase讀流程

1乌妙、Client客戶端先訪問zookeeper,獲取 hbase:meta 表位于哪個Region Server
2使兔、訪問hbase:meta 表對應(yīng)的region server服務(wù)器,根據(jù)請求的信息(namespace,table,rowkey)冠胯,查詢出目標表位于哪個Region Server中的哪個region火诸。
并將該表的region信息,以及meta表的位置信息緩存在客戶端的緩存中荠察,以便下次訪問置蜀。
3、與目標表所在的region server 進行通訊
4悉盆、分別在Block Cache(讀緩存)盯荤,MemStore和 Store File查詢目標數(shù)據(jù),并將查到的數(shù)據(jù)進行合并焕盟,此處所有數(shù)據(jù)是指同一條數(shù)據(jù)的不同版本(time stamp)或者不同的類型(Put/Delete)
5秋秤、 將從文件中查詢到的數(shù)據(jù)塊緩存到block cache
6、 將合并后的數(shù)據(jù)返回給客戶端

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脚翘,一起剝皮案震驚了整個濱河市灼卢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌来农,老刑警劉巖鞋真,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沃于,居然都是意外死亡涩咖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門繁莹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來檩互,“玉大人,你說我怎么就攤上這事咨演≌⒆颍” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長饵较。 經(jīng)常有香客問我溉跃,道長,這世上最難降的妖魔是什么告抄? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮嵌牺,結(jié)果婚禮上打洼,老公的妹妹穿的比我還像新娘。我一直安慰自己逆粹,他們只是感情好募疮,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僻弹,像睡著了一般阿浓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹋绽,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天芭毙,我揣著相機與錄音,去河邊找鬼卸耘。 笑死退敦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蚣抗。 我是一名探鬼主播侈百,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翰铡!你這毒婦竟也來了钝域?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锭魔,失蹤者是張志新(化名)和其女友劉穎例证,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赂毯,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡战虏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了党涕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烦感。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖膛堤,靈堂內(nèi)的尸體忽然破棺而出手趣,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布绿渣,位于F島的核電站朝群,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏中符。R本人自食惡果不足惜姜胖,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淀散。 院中可真熱鬧右莱,春花似錦、人聲如沸档插。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郭膛。三九已至晨抡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間则剃,已是汗流浹背耘柱。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留忍级,地道東北人帆谍。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像轴咱,于是被迫代替她去往敵國和親汛蝙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

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