溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié)

發(fā)布時(shí)間:2020-07-24 15:08:34 來(lái)源:網(wǎng)絡(luò) 閱讀:152 作者:wx5d42865f47214 欄目:大數(shù)據(jù)

好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié),為什么有hbase

  隨著數(shù)據(jù)的逐漸增大,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)無(wú)法滿足對(duì)數(shù)據(jù)的查詢和存儲(chǔ),而hive不是數(shù)據(jù)庫(kù),只是數(shù)據(jù)倉(cāng)庫(kù),雖然能夠滿足簡(jiǎn)單的存儲(chǔ)要求,但是始終無(wú)法滿足對(duì)非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)的存儲(chǔ)和查詢

?

2hbase是什么

  Hbase是阿帕奇旗下的一款開(kāi)源的,多版本的,可擴(kuò)展的非關(guān)系型數(shù)據(jù)庫(kù)。

  他是基于谷歌的bigtable的基礎(chǔ)上,建立在hdfs上的一款提供高?可靠性的,高性能的列式存儲(chǔ),可伸縮,實(shí)時(shí)讀寫的nosql的數(shù)據(jù)庫(kù)系統(tǒng)

?

3適用場(chǎng)景

?????海量數(shù)據(jù)存儲(chǔ)

?????隨機(jī)實(shí)時(shí)讀寫和管理數(shù)據(jù)

?

4特點(diǎn)

??????列式存儲(chǔ)

??????模式:無(wú)模式(不需要use gp1808,就可以直接創(chuàng)建表了,所以導(dǎo)致hbase中的表是不可以重名的)

??????數(shù)據(jù)類型:?jiǎn)我坏?/span>byte[]

??????多版本(version):每個(gè)值都可以有多個(gè)版本

??????稀疏存儲(chǔ):如果kvnull,則不占用存儲(chǔ)空間

?

5結(jié)構(gòu)框架

?

Client

  hbase的客戶端,包含訪問(wèn)的hbase的接口(linux shell ,java api

?????維護(hù)一些cache(緩存)來(lái)加速hbase的速度,比如region的位置信息

?

Zookeeper:

好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié)

???????監(jiān)控hmaster的狀態(tài),保證有且只有一個(gè)activehmaster,達(dá)到高可用

???????存儲(chǔ)所有的region的尋址入口,

???????實(shí)時(shí)監(jiān)控hregionserver的狀態(tài),將regionserrver的上下線信息實(shí)時(shí)通知給hmaster

???????存儲(chǔ)hbase的所有表的信息hbase的元數(shù)據(jù))

?

Hmster(hbase的老大)

?????regionserver分配region(新建表)

?????負(fù)責(zé)regionserver負(fù)載均衡

?????負(fù)責(zé)region的重新分配(處理hregionserver異常,hregion裂變)

?????Hdfs上的垃圾文件回收

?????處理schema的更新請(qǐng)求

?

Hregionserverhbase的小弟) ??

?????維護(hù)老大給他的region(管理本機(jī)上的region)

?????處理client對(duì)regionIO請(qǐng)求,并和hdfs交互

?????Regionserver負(fù)責(zé)切分在運(yùn)行過(guò)程中變大的region

?

Hregion:

?????Hbase中分布式的存儲(chǔ)和負(fù)載的最小單元,表或者是表的一部分

 ?。?span >在HBase中數(shù)據(jù)按主鍵排序,同時(shí)表按主鍵劃分為多個(gè)Region

Region按大小分割的,隨著數(shù)據(jù)增多,Region不斷增大,當(dāng)增大到一個(gè)閥值的Region就會(huì)分成兩個(gè)新的Region

  Region雖然是分布式存儲(chǔ)的最小單元,但并不是存儲(chǔ)的最小單元。每個(gè)Region包含著多個(gè)Store對(duì)象。每個(gè)Store包含一個(gè)MemStore或若干StoreFile,StoreFile包含一個(gè)或多個(gè)HFileMemStore存放在內(nèi)存中,StoreFile存儲(chǔ)在HDFS上。

Hlog;

?????對(duì)hbase的操作進(jìn)行記錄,使用walWrite-Ahead-Log)寫數(shù)據(jù),優(yōu)先寫入log,然后再寫入memstore,以防數(shù)據(jù)丟失時(shí)可以進(jìn)行日志回滾回復(fù)數(shù)據(jù)

Store

??????相當(dāng)于一個(gè)列簇。

?

Memstore:128M

???????內(nèi)存緩沖區(qū),用于將數(shù)據(jù)批量刷新到hdfs

?

Hstorefile(hfile)

???????Hbase中的數(shù)據(jù)是以hfile的形式存儲(chǔ)到hdfs

?????

好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié)

寫流程:

1client通過(guò)zookeeper的調(diào)度,向regionserver發(fā)出寫數(shù)據(jù)請(qǐng)求,在region中寫數(shù)據(jù)

2數(shù)據(jù)被寫入regionmemstore,直達(dá)memstore達(dá)到預(yù)設(shè)的閾值(128M

3memstore中的數(shù)據(jù)被flush成一個(gè)storefile

4隨著storefile文件的不斷增多,當(dāng)其數(shù)量增長(zhǎng)到一定閾值的時(shí)候,觸發(fā)了compact合并操作,將多個(gè)storefile合并成一個(gè)storefile,同時(shí)進(jìn)行版本合并和數(shù)據(jù)刪除

5storefiles通過(guò)不斷的compact合并操作,逐漸形成越來(lái)越大的storefile

6單個(gè)storefile大小超過(guò)一定閾值之后,觸發(fā)spilt操作,把當(dāng)前的region切分成2個(gè)新的region,父region會(huì)下線,新切出的2個(gè)字region會(huì)被hmaster分配到相應(yīng)的regionserver上,使得原先的一個(gè)region的壓力的以分配到2個(gè)region

?

讀流程:

1client訪問(wèn)zookeeper,查找root表,獲取meta表的信息

2meta表中查找,獲取存放的目標(biāo)的region信息,從而找到對(duì)應(yīng)的regionserver

3通過(guò)regionserver獲取需要查詢的數(shù)據(jù)

4regionserver的內(nèi)存分為memstoreblockcache兩部分,memstore主要用于寫數(shù)據(jù),blockcache主要用于讀數(shù)據(jù),請(qǐng)求先到memstore中查數(shù)據(jù),查不到就在blockcache在查,再查不到就會(huì)到storefile上讀,并把讀的結(jié)果放入blockcache

?

尋址過(guò)程:client-->Zookeeper-->-ROOT--->.META.-->RegionServer-->Region-->client

好程序員大數(shù)據(jù)學(xué)習(xí)路線Hbase總結(jié)

Rowkey:行鍵,和mysql的主鍵一樣,不允許重復(fù),按照字典順序排列

Columnfamily:列簇

Column:列

Timestamp:時(shí)間戳,默認(rèn)顯示最新的時(shí)間戳

Version:版本號(hào),記錄數(shù)據(jù)的版本

Cell:單元格,一個(gè)key?一個(gè)value


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI