一文帶你讀懂 Hbase 的架構組成

来源:https://www.cnblogs.com/datadance/archive/2022/05/16/16276543.html
-Advertisement-
Play Games

hi,大家好,我是大D。今天咱們繼續深挖一下 HBase 的架構組成。 Hbase 作為 NoSQL 資料庫的代表,屬於三駕馬車之一 BigTable 的對應實現,HBase 的出現很好地彌補了大數據快速查詢能力的空缺。在前面咱們也有介紹過 HBase 的數據模型,感興趣的小伙伴可以翻看下。談談你對 ...


hi,大家好,我是大D。今天咱們繼續深挖一下 HBase 的架構組成。

Hbase 作為 NoSQL 資料庫的代表,屬於三駕馬車之一 BigTable 的對應實現,HBase 的出現很好地彌補了大數據快速查詢能力的空缺。在前面咱們也有介紹過 HBase 的數據模型,感興趣的小伙伴可以翻看下。談談你對HBase數據模型的認識?

HBase 的核心架構由五部分組成,分別是 HBase Client、HMaster、Region Server、ZooKeeper 以及 HDFS。它的架構組成如下圖所示。

下麵我們對 HBase 架構組成的每一部分詳細介紹一下。

1.HBase Client

HBase Client 為用戶提供了訪問 HBase 的介面,可以通過元數據表來定位到目標數據的 RegionServer,另外 HBase Client 還維護了對應的 cache 來加速 Hbase 的訪問,比如緩存元數據的信息。

2.HMaster

HMaster 是 HBase 集群的主節點,負責整個集群的管理工作,主要工作職責如下:

  • 分配Region:負責啟動的時候分配Region到具體的 RegionServer;
  • 負載均衡:一方面負責將用戶的數據均衡地分佈在各個 Region Server 上,防止Region Server數據傾斜過載。另一方面負責將用戶的請求均衡地分佈在各個 Region Server 上,防止Region Server 請求過熱;
  • 維護數據:發現失效的 Region,並將失效的 Region 分配到正常的 RegionServer 上,並且在Region Sever 失效的時候,協調對應的HLog進行任務的拆分。

3.Region Server

Region Server 直接對接用戶的讀寫請求,是真正的幹活的節點,主要工作職責如下。

  • 管理 HMaster 為其分配的 Region;
  • 負責與底層的 HDFS 交互,存儲數據到 HDFS;
  • 負責 Region 變大以後的拆分以及 StoreFile 的合併工作。

與 HMaster 的協同:當某個 RegionServer 宕機之後,ZK 會通知 Master 進行失效備援。下線的 RegionServer 所負責的 Region 暫時停止對外提供服務,Master 會將該 RegionServer 所負責的 Region 轉移到其他 RegionServer 上,並且會對所下線的 RegionServer 上存在 MemStore 中還未持久化到磁碟中的數據由 WAL 重播進行恢復。

下麵給大家詳細介紹下 Region Serve數據存儲的基本結構,如下圖所示。一個 Region Server 是包含多個 Region 的,這裡僅展示一個。

  • Region:每一個 Region 都有起始 RowKey 和結束 RowKey,代表了存儲的Row的範圍,保存著表中某段連續的數據。一開始每個表都只有一個 Region,隨著數據量不斷增加,當 Region 大小達到一個閥值時,Region 就會被 Regio Server 水平切分成兩個新的 Region。當 Region 很多時,HMaster 會將 Region 保存到其他 Region Server 上。

  • Store:一個 Region 由多個 Store 組成,每個 Store 都對應一個 Column Family, Store 包含 MemStore 和 StoreFile。

    • MemStore:作為HBase的記憶體數據存儲,數據的寫操作會先寫到 MemStore 中,當MemStore 中的數據增長到一個閾值(預設64M)後,Region Server 會啟動 flasheatch 進程將 MemStore 中的數據寫人 StoreFile 持久化存儲,每次寫入後都形成一個單獨的 StoreFile。當客戶端檢索數據時,先在 MemStore中查找,如果MemStore 中不存在,則會在 StoreFile 中繼續查找。
    • StoreFile:MemStore 記憶體中的數據寫到文件後就是StoreFile,StoreFile底層是以 HFile 的格式保存。HBase以Store的大小來判斷是否需要切分Region。

當一個Region 中所有 StoreFile 的大小和數量都增長到超過一個閾值時,HMaster 會把當前Region分割為兩個,並分配到其他 Region Server 上,實現負載均衡。

  • HFile:HFile 和 StoreFile 是同一個文件,只不過站在 HDFS 的角度稱這個文件為HFile,站在HBase的角度就稱這個文件為StoreFile。

  • HLog:負責記錄著數據的操作日誌,當HBase出現故障時可以進行日誌重放、故障恢復。例如,磁碟掉電導致 MemStore中的數據沒有持久化存儲到 StoreFile,這時就可以通過HLog日誌重放來恢複數據。

4.ZooKeeper

HBase 通過 ZooKeeper 來完成選舉 HMaster、監控 Region Server、維護元數據集群配置等工作,主要工作職責如下:

  • 選舉HMaster:通ooKeeper來保證集中有1HMaster在運行,如果 HMaster 異常,則會通過選舉機制產生新的 HMaster 來提供服務;
  • 監控Region Server: 通過 ZooKeeper 來監控 Region Server 的狀態,當Region Server 有異常的時候,通過回調的形式通知 HMaster 有關Region Server 上下線的信息;
  • 維護元數據和集群配置:通過ooKeeper儲B信息並對外提供訪問介面。

5.HDFS

HDFS 為 HBase 提供底層數據存儲服務,同時為 HBase提供高可用的支持, HBase 將 HLog 存儲在 HDFS 上,當伺服器發生異常宕機時,可以重放 HLog 來恢複數據。

另外,非常歡迎大家加我VX: Abox_0226 ,備註「進群」,有關大數據技術的問題在群里一起探討。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ##方法一: ###1、首先打開控制面板,然後將右側的查看方式設置為大圖標,接著選擇區域和語言。 ###2、進入到界面之後,先定位到上方的格式,接著把格式設置為中文。 ###3、之後再定位到上方的位置,選擇中國。 ###4、接著再定位到上方的管理選項,然後點擊更改系統區域設置。 ###5、接著在彈出 ...
  • rpm命令 rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 發行版專門用來管理 Linux 各項套件的程式,由於它遵循 GPL 規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。RPM 套件管理方式的出現,讓 Linux 易於安裝,升級 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 centos換源+安裝postgresql http://mirror.nsc.liu.se/centos-store/8.2.2004/isos/x86_64/ 鏡像安裝網站 https://mirrors.edge.kernel.org/pu ...
  • 本文例子參考《STM32單片機開發實例——基於Proteus虛擬模擬與HAL/LL庫》 源代碼:https://github.com/LanLinnet/STM33F103R6 項目要求 實現通過串口助手發送單位元組數據,單片機收到數據後,交換高4位與低4位,將新的數據通過串口發回串口助手。例如,串口 ...
  • 前言: 這是《VMware 虛擬機圖文安裝和配置 Rocky Linux 8.5 教程》一文的姐妹篇教程,如果你需要閱讀它,請點擊這裡。 2020 年,CentOS 宣佈:計劃未來將重心從 CentOS Linux 轉移到 CentOS Stream。CentOS 8 的生命周期已於 2021 年 ...
  • 一、Azkaban API概述 通常,企業里一般不用使用web UI去設置或者執行任務,只是單純的在頁面上查看任務或者排查問題,更多的是通過Azkaban API去提交執行任務計劃。Azkaban提供了一些常用的API操作,可以通過curl或其他HTTP請求客戶端訪問。但是API調用都需要首先進行適 ...
  • 導讀: 美團是一個生活服務領域的平臺,需要大量知識來理解用戶的搜索意圖,同時對於商家側我們也需要利用現有的知識對海量信息進行挖掘與提取,進而優化用戶體驗。今天分享的主題是知識圖譜在美團推薦場景中的應用。主要包括以下幾方面內容: 美團知識圖譜介紹 美團推薦場景介紹 美團推薦中的知識應用 總結與展望 - ...
  • 大家好,我是大D。 不知是否有小伙伴們疑問,為什麼列式存儲會廣泛地應用在 OLAP 領域,和行式存儲相比,它的優勢在哪裡?今天我們一起來對比下這兩種存儲方式的差別。 其實,列式存儲並不是一項新技術,最早可以追溯到 1983 年的論文 Cantor。然而,受限於早期的硬體條件和應用場景,傳統的事務型數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...