hbase 模型

[官方文檔]http://hbase.apache.org/book.html#regions.arch
[模型論文]http://0b4af6cdc2f0c5998459-c0245c5c937c5dedcca3f1764ecc9b2f.r43.cf2.rackcdn.com/9353-login1210_khurana.pdf

大數(shù)據(jù)量存儲,大數(shù)據(jù)量高并發(fā)操作
需要對數(shù)據(jù)隨機讀寫操作
讀寫訪問均是非常簡單的操作

1.HBase數(shù)據(jù)模型術(shù)語

Table(表格)

一個HBase表格由多行組成。

Row(行)

HBase中的行里面包含一個key和一個或者多個包含值的列。行按照行的key字母順序存儲在表格中抑进。因為這個原因找爱,行的key的設(shè)計就顯得非常重要唆铐。數(shù)據(jù)的存儲目標(biāo)是相近的數(shù)據(jù)存儲到一起走趋。一個常用的行的key的格式是網(wǎng)站域名。如果你的行的key是域名核芽,你應(yīng)該將域名進行反轉(zhuǎn)(org.apache.www, org.apache.mail, org.apache.jira)再存儲。這樣的話酵熙,所有Apache域名將會存儲在一起轧简,好過基于子域名的首字母分散在各處。

Column(列)

HBase中的列包含用:分隔開的列族和列的限定符匾二。

Column Family(列族)

因為性能的原因哮独,列族物理上包含一組列和它們的值。每一個列族擁有一系列的存儲屬性察藐,例如值是否緩存在內(nèi)存中皮璧,數(shù)據(jù)是否要壓縮或者他的行key是否要加密等等。表格中的每一行擁有相同的列族转培,盡管一個給定的行可能沒有存儲任何數(shù)據(jù)在一個給定的列族中恶导。

Column Qualifier(列的限定符)

列的限定符是列族中數(shù)據(jù)的索引。例如給定了一個列族content浸须,那么限定符可能是content:html惨寿,也可以是content:pdf邦泄。列族在創(chuàng)建表格時是確定的了,但是列的限定符是動態(tài)地并且行與行之間的差別也可能是非常大的裂垦。

Cell(單元)

單元是由顺囊、列族列限定符蕉拢、和代表值版本的時間戳組成的特碳。

Timestamp(時間戳)

時間戳是寫在值旁邊的一個用于區(qū)分值的版本的數(shù)據(jù)。默認情況下晕换,時間戳表示的是當(dāng)數(shù)據(jù)寫入時RegionSever的時間點午乓,但你也可以在寫入數(shù)據(jù)時指定一個不同的時間戳。

2.概念視圖

一個名為webable的表格闸准,表格中有兩行(com.cnn.www 和 com.example.www)和三個列族(contents, anchor, 和 people)益愈。在這個例子當(dāng)中,第一行(com.cnn.www)中anchor包含兩列(anchor:cssnsi.com, anchor:my.look.ca)和content包含一列(contents:html)夷家。這個例子中com.cnn.www擁有5個版本而com.example.www有一個版本蒸其。contents:html列中包含給定網(wǎng)頁的整個HTML。anchor限定符包含能夠表示行的站點以及鏈接中文本库快。People列族表示跟站點有關(guān)的人摸袁。
在HBase中,表格中的單元如果是空將不占用空間或者事實上不存在义屏。這就使得HBase看起來“稀疏”靠汁。

Paste_Image.png

Paste_Image.png

下面的方式以多維度映射的方式來表達相同的信息。下面只是一個用于說明目的的模型可能不是百分百的精確湿蛔。

{
  "com.cnn.www": {
    contents: {
      t6: contents:html: "<html>..."
      t5: contents:html: "<html>..."
      t3: contents:html: "<html>..."
    }

    anchor: {
      t9: anchor:cnnsi.com = "CNN"
      t8: anchor:my.look.ca = "CNN.com"
    }
    people: {}
  }

  "com.example.www": {
    contents: {
      t5: contents:html: "<html>..."
    }
    anchor: {}
    people: {
      t5: people:author: "John Doe"
    }
  }
}


```
####2.物理視圖
盡管一個概念層次的表格可能看起來是由一些列稀疏的行組成膀曾,但他們是通過**列族來存儲**的。一個新建的限定符(column_family:column_qualifier)可以隨時地添加到已存在的列族中阳啥。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-62349c9b0833d1a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
概念視圖中的空單元實際上是沒有進行存儲的添谊。因此對于返回時間戳為t8的contents:html的值的請求,結(jié)果為空察迟。同樣的斩狱,一個返回時間戳為t9的anchor:my.look.ca的值的請求,結(jié)果也為空扎瓶。然而所踊,如果沒有指定時間戳的話,那么會返回特定列的最新值概荷。對有多個版本的列秕岛,優(yōu)先返回最新的值,因為時間戳是按照遞減順序存儲的。因此對于一個返回com.cnn.www里面所有的列的值并且沒有指定時間戳的請求继薛,返回的結(jié)果會是時間戳為t6的contents:html 的值修壕、時間戳 t9的anchor:cnnsi.com f的值和時間戳t8的 anchor:my.look.ca 。
####物理存儲

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-5788eaad8f2d5718.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-c505aabb2f3dbe1b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```
 1.Table 中所有行按照row key 的字典排序
 2.Table 在行的分割方向上分割為多個Region
 3. Region 按大小分割的遏考,每個表開始只有一個Region 隨著數(shù)據(jù)增多慈鸠,region 不斷增大,當(dāng)增
大到一個閥值的時候灌具。Region 就會等分成2個Region 之后會有越來越多的Region
 4. Region是Hbase 中分布式存儲和負載均衡的最小單元青团,不同的Region 分布在不同的RegionServer
5.Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元咖楣。Region由一個或者多個Store組成督笆,每個store保存一個columns family;每個Strore又由一個memStore和0至多個StoreFile組成截歉,StoreFile包含HFile胖腾;memStore存儲在內(nèi)存中,StoreFile存儲在HDFS上
```
####2.Hbase基本組件

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-b7893a723c270adb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
######Client
包含訪問HBase的接口瘪松,并維護cache來加快對HBase的訪問,比如region的位置信息

######Master
為Region server分配region
負責(zé)Region server的負載均衡
發(fā)現(xiàn)失效的Region server并重新分配其上的region
管理用戶對table的增刪改查操作
######Region Server
Regionserver維護region锨阿,處理對這些region的IO請求
Regionserver負責(zé)切分在運行過程中變得過大的region
######Zookeeper作用
通過選舉宵睦,保證任何時候,集群中只有一個master墅诡,Master與RegionServers 啟動時會向ZooKeeper注冊
存貯所有Region的尋址入口
實時監(jiān)控Region server的上線和下線信息壳嚎。并實時通知給Master
存儲HBase的schema和table元數(shù)據(jù)
默認情況下,HBase 管理ZooKeeper 實例末早,比如烟馅, 啟動或者停止ZooKeeper
Zookeeper的引入使得Master不再是單點故障

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-aaae5aa526297252.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-fb1ce199ca026ebd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**該機制用于數(shù)據(jù)的容錯和恢復(fù):**
每個HRegionServer中都有一個HLog對象,HLog是一個實現(xiàn)Write AheadLog的類然磷,在每次用戶操作寫入MemStore的同時郑趁,也會寫一份數(shù)據(jù)到HLog文件中(HLog文件格式見后續(xù)),HLog文件定期會滾動出新的姿搜,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))寡润。當(dāng)HRegionServer意外終止后,HMaster會通過Zookeeper感知到舅柜,HMaster首先會處理遺留的HLog文件梭纹,將其中不同Region的Log數(shù)據(jù)進行拆分,分別放到相應(yīng)region的目錄下致份,然后再將失效的region重新分配变抽,領(lǐng)取到這些region的HRegionServer在Load Region的過程中,會發(fā)現(xiàn)有歷史HLog需要處理,因此ReplayHLog中的數(shù)據(jù)到MemStore中绍载,然后flush到StoreFiles诡宗,完成數(shù)據(jù)恢復(fù)
**HBase容錯性**
Master容錯:Zookeeper重新選擇一個新的Master
無Master過程中,數(shù)據(jù)讀取仍照常進行逛钻;
無master過程中僚焦,region切分、負載均衡等無法進行曙痘;

**RegionServer容錯:**
定時向Zookeeper匯報心跳芳悲,如果一旦時間內(nèi)未出現(xiàn)心跳,Master將該RegionServer上的Region重新分配到其他RegionServer上边坤,失效服務(wù)器上“預(yù)寫”日志由主服務(wù)器進行分割并派送給新的RegionServer

***Region定位流程:***

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2061490-157984e2dc5fcfe5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**(1)尋找RegionServer**
ZooKeeper-->-ROOT-(單Region)-->.META.-->用戶表

**(2)-ROOT-**
表包含.META.表所在的region列表名扛,該表只會有一個Region;
Zookeeper中記錄了-ROOT-表的location茧痒。

**(3).META.**
表包含所有的用戶空間region列表肮韧,以及RegionServer的服務(wù)器地址。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旺订,一起剝皮案震驚了整個濱河市弄企,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌区拳,老刑警劉巖拘领,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異樱调,居然都是意外死亡约素,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門笆凌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圣猎,“玉大人,你說我怎么就攤上這事乞而∷突冢” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵晦闰,是天一觀的道長放祟。 經(jīng)常有香客問我,道長呻右,這世上最難降的妖魔是什么跪妥? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮声滥,結(jié)果婚禮上眉撵,老公的妹妹穿的比我還像新娘侦香。我一直安慰自己,他們只是感情好纽疟,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布罐韩。 她就那樣靜靜地躺著,像睡著了一般污朽。 火紅的嫁衣襯著肌膚如雪散吵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天蟆肆,我揣著相機與錄音矾睦,去河邊找鬼。 笑死炎功,一個胖子當(dāng)著我的面吹牛枚冗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛇损,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赁温,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淤齐?” 一聲冷哼從身側(cè)響起股囊,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎更啄,沒想到半個月后毁涉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡锈死,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了穆壕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片待牵。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喇勋,靈堂內(nèi)的尸體忽然破棺而出缨该,到底是詐尸還是另有隱情,我是刑警寧澤川背,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布贰拿,位于F島的核電站,受9級特大地震影響熄云,放射性物質(zhì)發(fā)生泄漏膨更。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一缴允、第九天 我趴在偏房一處隱蔽的房頂上張望荚守。 院中可真熱鬧,春花似錦、人聲如沸矗漾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敞贡。三九已至泵琳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間誊役,已是汗流浹背获列。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留势木,地道東北人蛛倦。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像啦桌,于是被迫代替她去往敵國和親溯壶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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

  • 1. HBase介紹甫男,Hbase是什么且改? HBase -- Hadoop Database ,是一個高可靠板驳、高性能...
    奉先閱讀 3,744評論 1 36
  • 該文檔是用Hbase默認配置文件生成的又跛,文件源是Hbase-default.xml hbase.rootdir 這...
    我是嘻哈大哥閱讀 4,760評論 0 7
  • 最近在逐步跟進Hbase的相關(guān)工作,由于之前對Hbase并不怎么了解若治,因此系統(tǒng)地學(xué)習(xí)了下Hbase慨蓝,為了加深對Hb...
    飛鴻無痕閱讀 50,224評論 19 272
  • Hbase架構(gòu)與原理 HBase是一個分布式的、面向列的開源數(shù)據(jù)庫端幼,該技術(shù)來源于 Fay Chang所撰寫的Goo...
    全能程序猿閱讀 86,296評論 2 37
  • HBase那些事 @(大數(shù)據(jù)工程學(xué)院)[HBase, Hadoop, 優(yōu)化, HadoopChen, hbase]...
    分癡閱讀 3,939評論 3 17