日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase权威指南,架构:存储

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase权威指南,架构:存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

存儲

?

HBase 主要處理兩種文件:一種是預寫日志(Write-Ahead Log,WAL),另一種是實際的數據文件。這兩種文件主要由 HRegionServer 管理。

一個基本的流程是客戶端首先聯系 ZooKeeper 子集群(quorum)查找行鍵,通過 ZooKeeper 獲取含有 -ROOT- 的 region 服務器,通過 -ROOT- region 服務器可以查詢到含有 .META. 表的 region 服務器,最終,通過查詢 .META. 服務器來獲取客戶端查詢的行鍵數據所在的 region 服務器。

在啟動 HBase 時,HMaster 負責將所有 region 分配到 HRegion Server 上,其中也包括特別的 -ROOT- 和 .META. 表。

HRegionServer 負責打開 region,并創建對應的 HRegion 實例。當 HRegion 被打開后,它會為每個表的 HColumnFamily 創建一個 Store 實例,這些列族是用戶之前創建表時定義的。每個 Store 實例包含一個或多個 StoreFile 實例,它們是實際數據存儲文件 HFile 的輕量級封裝。每個 Store 還有其對應的一個 MemStore,一個 HRegionServer 分享了一個 HLog 實例。

寫路徑

當用戶向 HRegionServer 發起 HTable.put(Put) 請求時,其會將請求交給對應的 HRegion 實例來處理。

第一步要決定數據是否需要寫到由 HLog 類實現的預寫日志中。一旦數據被寫入到 WAL 中,數據就會被防到 MemStore 中,同時還會檢查 MemStore 是否已經滿了,如果滿了,就會被請求刷寫到磁盤中去。刷寫請求由另外一個 HRegionServer 的線程處理,它會把數據寫到 HDFS 中的一個新 HFile。

另外,關閉 region 服務器會強制所有的 memstore 被刷寫到磁盤。

文件

HBase 使用一個 HDFS 中可配置的根目錄,默認設為 "/hbase"。

$HADOOP_HOME/bin/hadoop dfs -lsr /hbase 0 /hbase/.logs 0 /hbase/.logs/foo.internal,60020,1309812147645 0 /hbase/.logs/foo.internal,60020,1309812147645/ foo.internal%2C60020%2C1309812147645.1309812151180 0 /hbase/.oldlogs 38 /hbase/hbase.id 3 /hbase/hbase.version 0 /hbase/testtable 487 /hbase/testtable/.tableinfo 0 /hbase/testtable/.tmp 0 /hbase/testtable/1d562c9c4d3b8810b3dbeb21f5746855 0 /hbase/testtable/1d562c9c4d3b8810b3dbeb21f5746855/.oldlogs 124 /hbase/testtable/1d562c9c4d3b8810b3dbeb21f5746855/.oldlogs/ hlog.1309812163957 282 /hbase/testtable/1d562c9c4d3b8810b3dbeb21f5746855/.regioninfo 0 /hbase/testtable/1d562c9c4d3b8810b3dbeb21f5746855/.tmp

文件可以被分為兩類,一類位于 HBase 根目錄下,另一類位于根目錄中的表目錄下。

根級文件

第一組文件是被 HLog 實例管理的 WAL 文件,這些日志文件被創建在 HBase 的根目錄下一個名為 .logs 的目錄下。對于每個 HRegionServer,日志目錄中都包含一個對應的子目錄。在每個子目錄中有多個 HLog 文件。一個 region 服務器的所有 region 共享同一組 HLog 文件。

當所有包含的修改都被持久化到存儲文件中,從而不需要日志文件時,它們會被防到 HBase 根目錄下的 .oldlogs 目錄下。在 10 分鐘后,舊的日志文件將被 maser 刪除。

hbase.id 和 habse.version 文件包含集群的唯一 ID 和文件格式版本信息。

表級文件

在 HBase 中,每張表都有自己的目錄,其位于文件系統中 HBase 根目錄下。每張表目錄包括一個名為 .tableinfo 的頂層文件,其中包括表和列族的定義。.tmp 目錄中包含一些臨時數據。

region 級文件

region 目錄中也有一個 .regioninfo 文件,這個文件包含了對應 region 的 HRegionInfo 實例序列化后的信息。與 .tableinfo 文件類似,它能被外部工具用來查看 region 的相關信息。

region 拆分

一個 region 超過了配置中 region 大小的最大值,region 就需要拆分,其會創建一個對應的 splitis 目錄,它被用來臨時存放兩個字 region 相關的數據。

合并

隨著 memstore 的刷寫會生成很多磁盤文件。如果文件的數目達到閾值,合并過程將把它們合并成數量更少的體積更大的文件。這個過程持續到這些文件最大的文件超過配置的最大存儲文件大小,此時會觸發一個 region 拆分。

壓縮合并有兩種,即 minor 和 major。minor 合并負責重寫最后生成的幾個文件到一個更大的文件中。major 合并將所有文件壓縮成一個單獨的文件。在執行壓縮檢查時,系統自動決定運行哪種合并。

HFile 格式

實際的存儲文件功能是由 HFile 類實現的,它被專門創建以達到一個目的:有效地存儲 HBase 的數據。

?

這些文件是可變長度的,唯一固定的塊是 FIle Info 塊和 Trailer 塊。Index 塊記錄 Data 和 Meta 塊的偏移量。每個塊都包含一個 magic 頭部和一定數量的序列化的 KeyValue 實例。

HBase 存儲文件的塊與 Hadoop 的塊之間沒有匹配關系。事實上,這兩種塊類型之間根本沒有相關性。

?

KeyValue 格式

本質上,HFile 中的每個 KeyValue 都是一個低級的字節數組,它允許零復制訪問數據。

?

該結構以兩個分布表示鍵長度(Key Lengh)和值長度(Value Lengh)的定義數字開始。

?

獲取以上Java高級架構最新視頻,歡迎

加入Java進階架構交流群:734066324。直接點擊鏈接加入群聊【Java進階架構師】:https://jq.qq.com/?_wv=1027&k=5Fbnv8G

總結

以上是生活随笔為你收集整理的HBase权威指南,架构:存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。