HBase 學習一(基礎入門)

2022-09-03 19:00:14 字數 3165 閱讀 7046

hbase 是乙個分布式的、面向列的開源資料庫,該技術**於 fay chang 所撰寫的 google ** 「bigtable:乙個結構化資料的分布式儲存系統」 。就像 bigtable 利用了 google 檔案系統(file system)所提供的分布式資料儲存一樣,hbase 在 hadoop 之上提供了類似於 bigtable 的能力。hbase 是 apache 的 hadoop 專案的子專案。hbase 不同於一般的關聯式資料庫,它是乙個適合於非結構化資料儲存的資料庫。另乙個不同的是 hbase 基於列的而不是基於行的模式。

大:乙個表可以有上億行,上百萬列。

面向列:面向列表(簇)的儲存和許可權控制,列(簇)獨立檢索。

稀疏:對於為空(null)的列,並不占用儲存空間,因此,表可以設計的非常稀疏。

無模式:每一行都有乙個可以排序的主鍵和任意多的列,列可以根據需要動態增加,同一張表中不同的行可以有截然不同的列。

資料多版本:每個單元中的資料可以有多個版本,預設情況下,版本號自動分配,版本號就是單元格插入時的時間戳。

資料型別單一:hbase 中的資料都是字串,沒有型別。

支援過期:hbase 支援 ttl 過期特性。使用者設定過期時間,超過 ttl 的資料會被系統自動清理。

hbase 以表的形式儲存資料。表由行和列組成。列劃分為若干個列簇(column family),如下圖所示。

rowkey 可以使用任意字串(最大長度為 64kb,實際應用中長度一般為 10 ~ 100bytes),在 hbase 內部,row key 儲存為位元組陣列。

在 hbase 使用過程中,設計 rowkey 是乙個很重要的環節。我們在進行 rowkey 設計的時候可參照如下步驟:

結合業務場景特點,選擇合適的字段來做為 rowkey, 且按照查詢頻次來放置字段順序。

通過設計的 rowkey 能盡可能的將資料打散到整個集群中,均衡負載,避免熱點問題。

設計的 rowkey 應盡量簡短。

與 nosql 一樣,rowkey 是用來檢索記錄的主鍵。訪問 hbase table 中的行,只有三種方式:

通過單個 rowkey 訪問。

通過 scan 方式,設定 startrow 和 stoprow 引數進行範圍匹配。

全表掃瞄,即直接掃瞄整張表中的所有行記錄。

物理儲存上 hbase 將 table 在行的方向上分割為多個 hregion, 每個 hregion 分散在不同的 hregionserver 中。

每個 hregion 由多個 store 構成, 每個 store 由乙個 memstore 和0或多個 storefile 組成, 每個 store 儲存乙個 columns family。

hbase 中的元件包括 client、zookeeper、hmaster、hregionserver、hregion、store、memstore、storefile、hfile、hlog 等。

hbase 中的每張表都通過行鍵(rowkey)按照一定的範圍被分割成多個子表(hregion),乙個 hregion 超過一定閾值就要被分割成兩個,這個過程由hregionserver管理, 而 hregion 的分配由hmaster管理。

為 hregion server 分配 hregion。

負責 hregion server 的負載均衡。

發現失效的 hregion server 並重新分配其上 hregion。

hdfs 上的垃圾檔案**。

處理 schema 更新請求。

hmaster 僅僅維護 hregion 的元資料資訊,而 table 的元資料資訊儲存在 zookeeper 上,因此,hmaster 的負載很低。

維護 hmaster 分配給他的 hregion,並處理對這些 hregion 的 io 請求(client 訪問 hbase 上的資料並不需要 hmaster 參與)。

負責切分正在執行過程中變得過大的 hregion。

table 在行的方向上分割為多個 hregion ,hregion 是 hbase 中分布式儲存和負載均衡的最小單元,即不同的 hregion 可以分布在不同的 hregion server 上,但同乙個 hregion 是不會拆分到多個 hregion server 上。

hregion 按大小分割,每個表一般只有乙個 hregion ,隨著資料不斷的插入表,hregion 不斷增大,當 hregion 的某個列簇達到一定的閾值時就會分成兩個新的 hregion 。

保證任何時候,集群中只有乙個 hmaster,避免 hmaster 的單點故障。

儲存所有 hregion 的定址入口。

實時監控 hregion server 的上線和下線資訊,並實時通知 hmaster。

儲存 hbase 的 schema 和 table 元資料。

hbase 依賴 zookeeper,預設情況下 hbase 管理 zookeeper 例項(啟動或關閉 zookeeper),hmaster 與 hregionservers 啟動時會向 zookeeper 註冊,使 hmaster 可以隨時感知到各個 hregionserver 的健康狀態。

首先當乙個請求發生時,hbase client 使用 rpc 機制與 hmaster 和 hregion server 進行通訊。對於管理類操作,client 與 hmaster 進行 rpc 通訊;對於資料讀寫操作,client 與 hregion server 進行 rpc 通訊。

hbase client 使用 rpc 機制與 hmaster 和 hregion server 進行通訊,但如何定址呢?由於 zookeeper 中儲存了 meta 表的位址和 hmaster 的位址,所以 hbase client 需要先到 zookeeper 上進行定址。

hbase client 訪問 zookeeper,可以根據 meta 表獲取到 hregion server 位址。

HBase學習筆記(一) 基礎入門

hbase的原型是google的bigtable 受到了該 思想的啟發,目前作為hadoop的子專案來開發維護,用於支援結構化的資料儲存。hbase是乙個高可靠性 高效能 面向列 可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase的目標是儲存...

Hbase入門簡單學習

hadoop主要解決大規模資料離線批量處理,但無法滿足大規模實時資料的處理,所以誕生了hbase。hbase是乙個分布式資料庫,它必須通過行鍵 列族 列限定符 時間戳來定位資料。hbase的功能元件 hbase由庫函式,master和regionserver組成 表和region 乙個hbase表最...

零基礎 HBase從學習入門開始

基本了解 hbase 是乙個分布式的 面向列的開源資料庫,該技術 於 fay chang 所撰寫的google bigtable 乙個結構化資料的分布式儲存系統 就像bigtable利用了google檔案系統 file system 所提供的分布式資料儲存一樣,hbase在hadoop之上提供了類似...