HBase原理及調(diào)優(yōu)-讀寫

1.Region定位

Region按大小分割,每個(gè)表以開始只有一個(gè)region,隨著數(shù)據(jù)不斷地插入表,region不斷增大,當(dāng)增大到一定閾值時(shí),HBase會(huì)根據(jù)一定規(guī)則將表進(jìn)行水平拆分,形成兩個(gè)Region

Region是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元,最小單元就是表示不同的region可以分布在不同的regionServer上,但一個(gè)region不會(huì)拆分到多個(gè)server

1.1 META表--記錄用戶表和管理情況

①M(fèi)ETA表:記錄了各個(gè)RegionServer所管理的表和region信息。(元數(shù)據(jù)表)
②與一般HBase表結(jié)構(gòu) 一樣,采用鍵值對(duì)和面向列的存儲(chǔ)
③META表數(shù)據(jù)過(guò)多,也會(huì)進(jìn)行自動(dòng)分區(qū)



1.2 數(shù)據(jù)存儲(chǔ)與讀取-Store

Store存儲(chǔ)是HBase存儲(chǔ)的核心

MemStore:內(nèi)存寫緩存
· HBase將最近接收到的數(shù)據(jù)緩存在內(nèi)存中(in Memstore),在持久化到HDFS之前完成排序,然后再快速的順序?qū)懭際DFS
· 緩存最近增加的頻繁使用的數(shù)據(jù),提高數(shù)據(jù)讀取的速度
· 持久化寫入之前,根據(jù)配置優(yōu)化表數(shù)據(jù)

StoreFile:當(dāng)MemStore滿了以后會(huì)Flush成一個(gè)StoreFile(底層實(shí)現(xiàn)是HFile),
· 當(dāng)StoreFile文件數(shù)量增長(zhǎng)到一定閾值,會(huì)觸發(fā)Compaction合并操作
· Memstore的數(shù)據(jù)插入是有序的,因此每個(gè)storefile最終會(huì)合并成一個(gè)有序的大的storefile。

HBase寫流程
1.客戶端首先訪問zookeeper,從meta表得到寫入數(shù)據(jù)對(duì)應(yīng)的region信息和相應(yīng)的region服務(wù)器
2.MemStore達(dá)到一個(gè)閾值后則把數(shù)據(jù)刷成一個(gè)StoreFile文件
3.當(dāng)Storefile文件達(dá)到一定的數(shù)量后,會(huì)觸發(fā)Compact合并操作,合并為一個(gè)大的StoreFile,最終以Hfile的形式存于HDFS中
4.當(dāng)Storefile大小超過(guò)一定閾值后,會(huì)把當(dāng)前的Region分割為兩個(gè),并由Master分配到相應(yīng)的RegionServer,實(shí)現(xiàn)負(fù)載均衡

HBase讀文件流程

1.客戶端先訪問zookeeper,從meta表讀取Region的信息對(duì)應(yīng)的服務(wù)器
2.客戶端向?qū)?yīng)Region服務(wù)器發(fā)送讀取數(shù)據(jù)的請(qǐng)求,Region接收請(qǐng)求后,先從MemStore找數(shù)據(jù),如果沒有,再到StoreFile讀取,然后將數(shù)據(jù)返回給客戶端
? ? ? ? · get操作:先定位到鍵值對(duì)所在的分區(qū),再并行的查詢?cè)摲謪^(qū)中所有storefile中是否由指定行鍵的鍵值對(duì),由于storefile是排序過(guò)的,因此這種并行查詢可以很快得到結(jié)果

? ? ? ? · scan操作:根據(jù)限定條件,比如列族和行鍵的范圍確定需要掃描的分區(qū),并在這些分區(qū)的storefile中進(jìn)行分布式掃描和過(guò)濾。

1.3? WAL機(jī)制

Hlog:預(yù)寫日志(Write Ahead Log)文件,當(dāng)數(shù)據(jù)寫入memstore之前,RegionServer會(huì)將數(shù)據(jù)寫入到Hlog中

當(dāng)region服務(wù)故障,讀取Hlog文件作災(zāi)難恢復(fù)

· HLog寫入到HDFS中,記錄所有的變更;

· 鍵值寫入時(shí)不會(huì)被排序
· 鍵值對(duì)寫入HLog時(shí),會(huì)寫入所屬的表和分區(qū),以及記錄序號(hào)和時(shí)間戳
· 數(shù)據(jù)持久化操作之后,RegionServer會(huì)將不需要的HLog清除掉,并將這一清除事件寫入Zookeeper。
· 以追加文件的方式將不同region的日志混在一起,減少磁盤尋址次數(shù),提高對(duì)table的寫性能;
· 如果一臺(tái)regionServer下線,為了恢復(fù)其上的region,需要將HLog進(jìn)行拆分,然后分發(fā)到其他regionserver上進(jìn)行恢復(fù)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Hbase的邏輯結(jié)構(gòu) Hbase物理存儲(chǔ)結(jié)構(gòu) 不同列族分別存在不同的文件夾里。 數(shù)據(jù)模型 與MySQL比較 MyS...
    黑色叉腰魔頭閱讀 1,072評(píng)論 0 2
  • 簡(jiǎn)介 HBase —— Hadoop Database的簡(jiǎn)稱,Google BigTable的另一種開源實(shí)現(xiàn)方式,...
    編碼前線閱讀 328評(píng)論 0 0
  • 簡(jiǎn)介 HBase —— Hadoop Database的簡(jiǎn)稱,Google BigTable的另一種開源實(shí)現(xiàn)方式,...
    尼小摩閱讀 583評(píng)論 0 3
  • 一、Hbase介紹 1、Hbase簡(jiǎn)介 Hbase是Hadoop Database的簡(jiǎn)稱 ,Hbase項(xiàng)目是由Po...
    施智沂閱讀 1,381評(píng)論 0 1
  • 比特科技: 存儲(chǔ)、數(shù)據(jù)庫(kù)、大數(shù)據(jù)技術(shù) ? HBase原理和設(shè)計(jì) http://www.bitstech.net/...
    葡萄喃喃囈語(yǔ)閱讀 765評(píng)論 0 11

友情鏈接更多精彩內(nèi)容