91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase架構是怎么樣的

發布時間:2021-12-09 10:12:07 來源:億速云 閱讀:156 作者:小新 欄目:大數據

這篇文章主要介紹了HBase架構是怎么樣的,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

聊完場景和數據模型我們來說下HBase的架構,在網上找了張比較清晰的圖,我覺得這張圖能說明很多問題,那這一篇我們就重點來解析下這張圖

HBase架構是怎么樣的

角色與職責

先介紹下上圖中的幾個角色和Ta們的職責:

1.HMaster

  • 為Region server分配region;

  • 負責Region server的負載均衡;

  • 發現失效的Region server并重新分配其上的region;

  • 處理schema更新請求

2.Client

Client包含訪問HBase的接口,并維護cache(region的位置信息)來加快對HBase的訪問

3.Zookeeper

在之前的Zookeeper篇講過HBase和Zookeeper的聯系,忘記地同學可以去翻一下。

  • HMaster的HA

  • regionserver狀態信息

  • 存root表(用于記錄.META.表所在的regionServer,該表只會有一個regionServer)

  • 存儲HBase的schema和table元數據

  • 發現失效的Region,借助HMaster分配region

4.HRegionSever

即一臺服務器,擁有一個到多個HRegion

RegionServer

圖里HRegionServer里面的內容很多,大家可能會看得有點懵,我們來詳細說下這個HRegionServer里面的東西。

HRegionServer 包含 (1+)個 Region

一個 HRegionServer 包含一到多個Region,而Region就是一張HBase表按一定閾值橫向切割的一部分。

Region按大小分割的,每個表開始只有一個region,隨著數據增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,之后會有越來越多的region;

Region是Hbase中分布式存儲和負載均衡的最小單元,不同Region分布到不同RegionServer上;

Region 包含 (1+)個 Store = columns family 列族個數

Region由一個或者多個Store組成,每個store保存一個columns family;

Store 是一個抽象的概念就是一個存儲,它的個數和HDFS上的存儲目錄個數是一致的,而一個存儲目錄對應的就是一個columns family列族。

Store 包含(1)個 MemStore +(0+)個 StoreFile

Store 上面說了就是一個存儲,他包含了一個內存的存儲和0+個文件存儲,一個Store的所有文件都存在一個目錄下,這個目錄下的所有文件對應的是一個列族。 注意:

  • StoreFile是實際存儲數據的。是HFile的輕量級包裝。

  • StoreFile達到閾值個數(4)會進行合并;

  • 一個StoreFile達到閾值大小會進行分裂;

  • 分裂后由hmaster分配到不同region起到負載均衡作用(若出現hot region可以手動拆分)

上面說得可能有點抽象,我們來看具體的數據: 我們來沿用下上一篇的那個表:

HBase架構是怎么樣的

如表

假設這張表有幾萬行,一行就代表一萬行,那可能A和B可能是屬于RegionA,C和D可能是屬于RegionB,

RegionA和RegionB可能分布在不同的RegionServer上,

可見,RegionA有兩個列族,CF1和CF2,

即它有兩個Store,

即在HDFS上有兩個目錄分別用于存放CF1和CF2,

即CF1和CF2在內存里也分別各對應了一個MemStore

讀寫

這里先講個大概,后面的文章我會每一步詳細分析,比如region的分裂過程,StoreFile的合并過程,rowkey的定位詳細流程等等,歡迎持續關注。

Region定位流程:

  • Zookeeper:記錄了.META.表的位置。(1.X之后的版本廢除了-ROOT-表

  • .META.:根據給定的key找到RegionServer。.META.記錄所有的用戶空間region列表,以及RegionServer的服務器地址。

寫流程

  1. 向zookeeper發起請求,從ROOT表中獲得META所在的region,再根據table,namespace,rowkey,去meta表中找到目標數據對應的region信息以及regionserver

  2. 把數據分別寫到HLog和MemStore上一份 MemStore達到一個閾值后則把數據刷成一個StoreFile文件。若MemStore中的數據有丟失,則可以總HLog上恢復 當多個StoreFile文件達到一定的大小后,會觸發Compact合并操作,合并為一個StoreFile,這里同時進行版本的合并和數據刪除。 當Compact后,逐步形成越來越大的StoreFIle后,會觸發Split操作,把當前的StoreFile分成兩個,這里相當于把一個大的region分割成兩個region

讀流程

  1. 從zookeeper獲得root表所在region位置

  2. 根據table,namespace,rowkey去root表中獲得meta表所在region位置

  3. 根據table,namespace,rowkey去meta表中獲得這條記錄所在regionserver

  4. 首先檢查請求的數據是否在Memstore,寫緩存未命中的話再到讀緩存(blockCache)中查找,讀緩存還未命中才會到HFile文件中查找,最終返回merged的一個結果給用戶

  5. client端會對數據塊緩存

數據flush過程

  1. 當memstore數據達到閾值(默認是64M),將數據刷到硬盤,將內存中的數據刪除同時刪除Hlog中的歷史數據。

  2. 并將數據存儲到hdfs中。

  3. 在hlog中做標記點。

數據合并過程

  1. 當數據塊達到4塊,hmaster將數據塊加載到本地,進行合并

  2. 當合并的數據超過256M,進行拆分,將拆分后的region分配給不同的hregionserver管理

  3. 當hregionser宕機后,將hregionserver上的hlog拆分,然后分配給不同的hregionserver加載,修改.META.

  4. 注意:hlog會同步到hdfs


感謝你能夠認真閱讀完這篇文章,希望小編分享的“HBase架構是怎么樣的”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

都昌县| 兴和县| 梅州市| 梅河口市| 遂平县| 凤山县| 贵定县| 衡阳市| 建宁县| 大城县| 阳春市| 铜陵市| 鸡泽县| 衡南县| 台东县| 怀远县| 两当县| 嘉义县| 萝北县| 随州市| 巴楚县| 印江| 石楼县| 尤溪县| 年辖:市辖区| 宁武县| 泸溪县| 和平县| 平江县| 上虞市| 五常市| 石景山区| 乌鲁木齐县| 葫芦岛市| 正蓝旗| 靖远县| 韩城市| 新乡市| 邳州市| 南木林县| 泸溪县|