1. 程式人生 > >Hbase初識

Hbase初識

簡介

資料模型 相關資料庫 典型應用 優勢 劣勢
key-value Redis 快取 快速查詢 儲存資料缺乏結構化
列族 Cassandra,Hbase 分散式的檔案系統,大規模的資料儲存 易於分散式擴充套件 功能受限
document Mongo,CouchDB 易用 可擴充套件性差
Neo4J 社交網路 利用圖結構相關演算法 不易擴充套件

從NoSQL分類來說,Hbase和Cassandra是一類資料庫,都是列族資料型別。

關於hbae和cassandra的對比可以看下為什麼國內流行hbase,國外反而多用cassandra?,這裡不再贅述。

名詞介紹

表,行這些都是同關係型資料庫一致

列族

列族顧名思義就是列的組合,wide-column這種資料型別都是根據BigTable模型實現的,它是一個稀疏的、多維結構對映。實際儲存,就是列族的資料儲存在一起,而不是像關係型資料庫那樣,一行存在一起。所以列族是需要提前定義的。

key-value,wide-column,json幾種資料型別對比NoSQL概述-從Mongo和Cassandra談談NoSQL

region

region就是range partition,一組row key的範圍組合。region是自動分裂的。一般大小是1GB-2GB,超過配置的大小,就進行分裂。

部署架構

Hbase的部署架構比較複雜。對於一個分散式資料庫,叢集架構一般有三個角色:路由節點、配置資訊節點、分片資料節點。
有些資料庫將這些功能都整合到同一個節點,這樣的話擴容比較簡單,單點比較少。如果拆分成不同節點話,部署起來就比較麻煩,擴容的話也比較麻煩,每個部分都有可能需要去擴容,好處是職責隔離,不會因為耦合造成整個節點的故障。以下是HBase的叢集部署架構

Hbase Master

Hbase是AP型分散式資料庫,Master-Slave模式。Master負責管理所有的RegsionServer,也就是上面所說的配置資訊節點這個角色。
記錄了資料塊HRegions屬於哪個Region Server。當RegionServer增加或者下線時,需要進行HRegion的重新分配。一般為了可用性,Master節點個數要大於1,避免單點故障。

Region Server
Region Server負責資料的讀寫,資料存放在記憶體中,持續化需要和HDFS檔案系統進行I/O互動。HBase是列族資料庫,列的資料是存放在一起的,不同的行按照row key分佈,儲存在不同的Region Server中。

一般來說,擴容主要是擴容Region Server,因為主要是Region Server負責資料的讀寫。

Zookeeper
管理HMaster的資訊

HDFS DataNode

資料的儲存與備份。將資料儲存在HDFS的一個顯而易見的好處時,當叢集Region Server發生變化時,增加或者減少時,不需要在節點間進行資料的複製,這大大減少了節點的上下線時間,和I/O消耗。

分片

Hbase的分片策略很簡單,就是根據rowkey來分片,每個Region Server負責一組rowkey.

資料儲存與維護

資料儲存和Cassandra類似,先寫log和記憶體,記憶體memstore也是LSM樹,然後在flush到磁碟中,HFile,儲存在HDFS中。

當HFile超過一定大小後,進行資料的分離。

讀寫分析

讀操作

讀操作一般在Hbase裡面叫3跳,涉及到Hbase叢集的3個角色。

Meta table
HRegion的metadata資訊都儲存在.META表中,Region增加減少,這個資訊都會更改。

Root table
Root table是用來記錄META表資訊的,儲存在ZK中。

Hbase的讀一般需要三跳

非常繁瑣,所以路由資訊一般cache到client,減少client與Hbase各個節點之間的互動。

寫操作

沒什麼複雜的,和cassandra類似,不再贅述

總結

Hbase的叢集部署架構模式和Mongo類似,多角色方式。所以讀取資料的3跳也比較類似。單節點寫入的話和Cassandra類似。

參考

https://www.iteblog.com/archives/2516.h