注: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兩個數值 開始值,結束值 它會自動生成...