大資料技術原理與應用 分布式資料庫HBas

2021-12-30 10:13:35 字數 3642 閱讀 2444

1. hbase與hdfs、mapreduce、hive之間的關係

hadoop hdfs為hbase提供了高可靠性的底層儲存支援,hadoop mapreduce為hbase提供了高效能的計算能力,zookeeper為hbase提供了穩定服務和failover機制。pig和hive還為hbase提供了高層語言支援,使得在hbase上進行資料統計處理變的非常簡單。 sqoop則為hbase提供了方便的rdbms(關係型資料庫)資料匯入功能,使得傳統資料庫資料向hbase中遷移變的非常方便。

2. hbase與傳統關係型資料庫之間的區別

3. hbase的資料模型

表:hbase採用表來組織資料,表由行和列組成,列劃分為若干個列族

行:每個hbase表都由若干行組成,每個行由行鍵(row key)來標識。

列族:乙個hbase表被分組成許多「列族」(column family)的集合,它是基本的訪問控制單元

列限定符:列族裡的資料通過列限定符(或列)來定位

單元格:在hbase表中,通過行、列族和列限定符確定乙個「單元格」(cell),單元格中儲存的資料沒有資料型別,總被視為位元組陣列byte

時間戳:每個單元格都儲存著同乙份資料的多個版本,這些版本採用時間戳進行索引

hbase中需要根據行鍵、列族、列限定符和時間戳來確定乙個單元格,因此,可以視為乙個「四維座標」,即[行鍵, 列族, 列限定符, 時間戳]

hbase的概念檢視

hbase的物理檢視

列族contents

列族anchor

4. hbase的實現原理

hbase的實現包括三個主要的功能元件:

(1)庫函式:鏈結到每個客戶端

(2)乙個master主伺服器

(3)許多個region伺服器

主伺服器master負責管理和維護hbase表的分割槽資訊,維護region伺服器列表,分配region,負載均衡

region伺服器負責儲存和維護分配給自己的region,處理來自客戶端的讀寫請求,乙個region伺服器上儲存10-1000個region

客戶端並不是直接從master主伺服器上讀取資料,而是在獲得region的儲存位置資訊後,直接從region伺服器上讀取資料

客戶端並不依賴master,而是通過zookeeper來獲得region位置資訊,大多數客戶端甚至從來不和master通訊,這種設計方式使得master負載很小

5. region的定位

層次名稱 作用

第一層zookeeper檔案

記錄了root表的位置資訊

第二層root表

記錄了meta表的region位置資訊

root表只有乙個region,通過root表,就可以訪問meat表的資料

第三層meta表

記錄了使用者資料表的region位置資訊,meta表可以有多個region,儲存了hbase中所有使用者資料表的region位置資訊

6. hbase的執行機制

hbase的系統架構

客戶端客戶端包含訪問hbase的介面,同時在快取中維護著已經訪問過的region位置資訊,用來加快後續資料訪問過程

zookeeper伺服器

zookeeper可以幫助選舉出乙個master作為集群的總管,並保證在任何時刻總有唯一乙個master在執行,這就避免了master的「單點失效」問題

master伺服器

主伺服器master主要負責表和region的管理工作:

管理使用者對錶的增加、刪除、修改、查詢等操作

實現不同region伺服器之間的負載均衡

在region**或合併後,負責重新調整region的分布

對發生故障失效的region伺服器上的region進行遷移

region伺服器

region伺服器是hbase中最核心的模組,負責維護分配給自己的region,並響應使用者的讀寫請求

region伺服器的工作原理

(1)使用者讀寫資料過程

使用者寫入資料時,被分配到相應region伺服器去執行

使用者資料首先被寫入到memstore和hlog中

只有當操作寫入hlog之後,commit()呼叫才會將其返回給客戶端

當使用者讀取資料時,region伺服器會首先訪問memstore快取,如果找不到,再去磁碟上面的storefile中尋找

(2)快取的重新整理

系統會周期性地把memstore快取裡的內容刷寫到磁碟的storefile檔案中,清空快取,並在hlog裡面寫入乙個標記

每次刷寫都生成乙個新的storefile檔案,因此,每個store包含多個storefile檔案

每個region伺服器都有乙個自己的hlog 檔案,每次啟動都檢查該檔案,確認最近一次執行快取重新整理操作之後是否發生新的寫入操作;如果發現更新,則先寫入memstore,再刷寫到storefile,最後刪除舊的hlog檔案,開始為使用者提供服務

(3)storefile的合併

每次刷寫都生成乙個新的storefile,數量太多,影響查詢速度

呼叫store.compact()把多個合併成乙個

合併操作比較耗費資源,只有數量達到乙個閾值才啟動合併

hlog的工作原理

分布式環境必須要考慮系統出錯。hbase採用hlog保證系統恢復

hbase系統為每個region伺服器配置了乙個hlog檔案,它是一種預寫式日誌(write ahead log)

使用者更新資料必須首先寫入日誌後,才能寫入memstore快取,並且,直到memstore快取內容對應的日誌已經寫入磁碟,該快取內容才能被刷寫到磁碟

zookeeper會實時監測每個region伺服器的狀態,當某個region伺服器發生故障時,zookeeper會通知master。master首先會處理該故障region伺服器上面遺留的hlog檔案,這個遺留的hlog檔案中包含了來自多個region物件的日誌記錄。系統會根據每條日誌記錄所屬的region物件對hlog資料進行拆分,分別放到相應region物件的目錄下,然後,再將失效的region重新分配到可用的region伺服器中,並把與該region物件相關的hlog日誌記錄也傳送給相應的region伺服器。region伺服器領取到分配給自己的region物件以及與之相關的hlog日誌記錄以後,會重新做一遍日誌記錄中的各種操作,把日誌記錄中的資料寫入到memstore快取中,然後,重新整理到磁碟的storefile檔案中,完成資料恢復

共用日誌優點:提高對錶的寫操作效能;缺點:恢復時需要分拆日誌

大資料技術原理與應用第3講 分布式檔案系統HDFS

a.位元組 b.塊c.檔案 d.目錄 a.客戶端通過乙個可配置的埠向名稱節點主動發起tcp連線,並使用客戶端協議與名稱節點進行互動 b.名稱節點和資料節點之間則使用資料節點協議進行互動 c.客戶端與資料節點的互動是通過rpc remote procedure call 來實現的 d.hdfs通訊協議...

大資料技術學習 彈性分布式資料集RDD

一 rdd定義 rdd resilient distributed dataset 叫做分布式資料集,是spark中基本的資料抽象,它代表乙個不可變 資料和元資料 可分割槽 裡面的元素可平行計算的集合。其特點在於自動容錯,位置感知性排程和可伸縮性。二 rdd的屬性 1 一組分片。即資料集的基本組成單...

分布式,雲計算和大資料主流技術

1.apache solr 分布式資訊檢索 2.apache couchdb 非關係型資料庫 3.apache storm 流資料計算平台 4.apache uima 分布式資訊管理 5.hdfs 分布式檔案系統 6.gfs 分布式檔案系統 7.mapreduce 平行計算框架 8.bigtable...