HBase之功能細節

2021-08-26 14:10:15 字數 2571 閱讀 9180

注:tablet等同與hbase中的region

圖釋說明:

(1)metadatatable

metadatatable是系統預定義的table,當使用者自定義**被拆分成多個tablet之後,metadata table用來儲存這些tablet的位址,在目錄層級中處於第3層

(2)root tablet

metadata**在分布式儲存過程中也會被拆分成多個tablet,其中第乙個tablet比較特殊,用來儲存其他tablet的位址,稱之為roottablet,在目錄層級中處於第2層

(3)chunbby file

用來儲存roottablet的位址,在目錄結構中處於頂層

這樣,客戶端可通過chubby file遍歷到任何tablet的位址

在hbase中:

region的概念等同於tablet

.meta.**等同於metadatatable

而-root-**等同於chunbby file

這樣,客戶端可通過-root- table遍歷到任何region的位址,並把這些位址在本地進行快取,以加快下次查詢效率

在hbase中,masterserver負責將region分配給regionserver

首先,看一下bigtable中tablet如何分配:

當master機器啟動的時候,它會處理如下事情:

(1)首先在chunbby中獲取masterlock,在分布式部署中,系統中只能有乙個master處於執行狀態,當其獲得master鎖之後,其他的master機器將會進入等待狀態

(2)master會掃瞄chunbby目錄,以獲取處於執行狀態的table server(regionserver)

(3)master會和每一台tabletserver進行通訊,來記錄哪些tablet已經成功分配

(4)master會掃瞄metadata**,如果發現有tablet不在已分配記錄中,則將其分配到合適的tablet server

在hbase中,是通過如下api來完成region的分配過程:

(1)master在啟動的時候,會去呼叫assignmentmanager類

(2)assignmentmanager通過查詢.meta.**來獲取region資訊

(3)如果region尚未分配,則呼叫loadbalance***ctory將其分配,預設的分配器(defaultloadbalancer)會將該region分配給乙個隨機的regionserver

(4)更新.meta.**資訊

在hdfs中,hbase的資料儲存呈如下目錄結構:

|__|__

|__|__

storefile是基於google的sstable來實現的,每個sstable相當於乙個持久儲存的、多維的、可序列化map,map的key和value都是可解釋型字元陣列,可從中提煉出具體的rowkey、timestamp、columnkey和columnvalue等資訊。

在物理儲存上sstable由多個block塊組成,sstable記錄了每個block快的索引位置,並且在被訪問的時候將這些塊索引載入到記憶體,以便系統快速定位block塊所在磁碟位置。

在google的bigtable體系中,tablet會持久化儲存到gfs檔案系統中,如圖:

圖釋說明:

(1)當有寫操作到達時,系統首先會將資訊寫入到tablet log,然後把所提交的資料儲存在memtable上,這樣,tablet log就記錄了每次寫操作的日誌資訊以及操作的資料資訊,當需要執行undo/redo操作式,可通過遍歷查詢該tablet log來實現撤銷/恢復的功能。

寫操作提交之後,資料並沒有持久化儲存到本地硬碟上,而是放到了memtable裡,memtable是儲存在記憶體當中的,當其大小達到一定上限之後,才持久化儲存到sstable file中去,隨後進行資料的壓縮處理(參考5-資料壓縮)

(3)tablet恢復

當tablet資料需要恢復到歷史版本時,tablet server首先會查詢metadata**,從中獲取該tablet的元資料資訊,包括:

儲存該tablet的sstable檔案

tablet的恢復點(儲存在tabletlog中)

隨後,tablet server會把要恢復的相關記錄載入到記憶體,根據tablet log所記錄的操作日誌來重新構建memtable

資料壓縮主要有3中方式,分別是:

(1)minor compaction:

當memtable的大小達到一定上限之後便會被系統凍結。此時,乙個新的memtable將會建立,而被凍結的memtable將會持久化儲存到sstable檔案中去。

(2)merging compaction:

每乙個minor compaction都會生成乙個sstable檔案,當minor compaction操作較多時, sstable檔案將會包含很多實體的歷史資訊,造成資料冗餘,解決辦法是系統會定期執行merging compaction,將相關sstable儲存的實體進行合併,以保證實體資訊處於最新版本,為查詢提供方便。

(3)major compaction:

將所有的sstable合併成乙個sstable稱之為major compaction,major compaction通常用來**邏輯上已被刪除的資料,以節省磁碟空間。

dubbo之功能理解

dubbo能解決什麼問題?1.怎麼去維護url 通過註冊中心去維護url 2.f5硬體負載均衡器的單點壓力比較大 軟負載均衡 3.怎麼去整理出服務之間的依賴關係 自動去整理各個服務之間的依賴 4.如果伺服器的呼叫量越來越大,伺服器容量問題怎麼去評估,擴容的指標 需要乙個監控平台,可以監控呼叫量,響應...

軟體測試之功能測試

功能測試 功能測試在測試工作中佔的比例最大,功能測試也叫黑盒測試。是把測試物件看作乙個黑盒子。利用黑盒測試法進行動態測試時,需要測試軟體產品的功能,不需測試軟體產品的內部結構和處理過程。採用黑盒技術設計測試用例的方法有 等價類劃分 邊界值分析 錯誤推測 因果圖和綜合策略。黑盒測試試圖發現以下型別的錯...

iTween基礎之功能簡介

一 itween 介紹 itween是乙個動畫庫,作者建立它的目的就是最小的投入實現最大的產出.讓你做開發更輕鬆,用它可以輕鬆實現各種動畫,晃動,旋轉,移動,褪色,上色,控制音訊等等 二 itween 原理 itween的核心是數值插值,簡單說就是給itween兩個數值 開始值,結束值 它會自動生成...