當前位置:成語大全網 - 新華字典 - hbase是如何做到並發寫的和隨機寫的

hbase是如何做到並發寫的和隨機寫的

閱讀數:9381

Hbase概述

hbase是壹個構建在HDFS上的分布式列存儲系統。HBase是Apache Hadoop生態系統中的重要 壹員,主要用於海量結構化數據存儲。從邏輯上講,HBase將數據按照表、行和列進行存儲。

如圖所示,Hbase構建在HDFS之上,hadoop之下。其內部管理的文件全部存儲在HDFS中。與HDFS相比兩者都具有良好的容錯性和擴展性,都可以 擴展到成百上千個節點。但HDFS適合批處理場景,不支持數據隨機查找,不適合增量數據處理且不支持數據更新。

Hbase是列存儲的非關系數據庫。傳統數據庫MySQL等,數據是按行存儲的。其沒有索引的查詢將消耗大量I/O 並且建立索引和物化視圖需要花費大量時間和資源。因此,為了滿足面向查詢的需求,數據庫必須被大量膨脹才能滿 足性能要求。

Hbase數據是按列存儲-每壹列單獨存放。列存儲的優點是數據即是索引。訪問查詢涉及的列-大量降低系統I/O 。並且每壹列由壹個線索來處理,可以實現查詢的並發處理。基於Hbase數據類型壹致性,可以實現數據庫的高效壓縮。

HBase數據模型

HBase是基於Google BigTable模型開發的, 典型的key/value系統。壹個Row key對應很多Column Family,Column Family中有很多Column。其中,保存了不同時間戳的數據。

如圖所示,Rowkey cutting對應列簇info和roles。其中,info中有key-value對hight-9ft,state-CA。更清晰的結構如下圖所:

Hbase的所有操作均是基於rowkey的。支持CRUD(Create、Read、Update和Delete)和 Scan操作。 包括單行操作Put 、Get、Scan。多行操作包括Scan和MultiPut。但沒有內置join操作,可使用MapReduce解決。

HBase物理模型

Hbase的Table中的所有行都按照row key的字典序排列。Table 在行的方向上分割為多個Region。、Region按大小分割的,每個表開始只有壹個region,隨 著數據增多,region不斷增大,當增大到壹個閥值的時候, region就會等分會兩個新的region,之後會有越來越多的 region。

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

Region雖然是分布式存儲的最小單元,但並不是存儲 的最小單元。Region由壹個或者多個Store組成,每個store保存壹個 columns family。每個Strore又由壹個memStore和0至多個StoreFile組成。memStore存儲在內存中,StoreFile存儲在HDFS上。

HBase基本架構

HBase構建在HDFS之上,其組件包括 Client、zookeeper、HDFS、Hmaster以及HRegionServer。Client包含訪問HBase的接口,並維護cache來加快對HBase的訪問。Zookeeper用來保證任何時候,集群中只有壹個master,存貯所有Region的尋址入口以及實時監控Region server的上線和下線信息。並實時通知給Master存儲HBase的schema和table元數據。HMaster負責為Region server分配region和Region server的負載均衡。如果發現失效的Region server並重新分配其上的region。同時,管理用戶對table的增刪改查操作。Region Server 負責維護region,處理對這些region的IO請求並且切分在運行過程中變得過大的region。

HBase 依賴ZooKeeper,默認情況下,HBase 管理ZooKeeper 實例。比如, 啟動或者停止ZooKeeper。Master與RegionServers 啟動時會向ZooKeeper註冊。因此,Zookeeper的引入使得 Master不再是單點故障。

Client每次寫數據庫之前,都會首先血Hlog日誌。記錄寫操作。如果不做日誌記錄,壹旦發生故障,操作將不可恢復。HMaster壹旦故障,Zookeeper將重新選擇壹個新的Master 。無Master過程中,數據讀取仍照常進行。但是,無master過程中,region切分、負載均衡等無法進行。RegionServer出現故障的處理原理是定時向Zookeeper匯報心跳,如果壹旦時 間內未出現心跳HMaster將該RegionServer上的Region重新分配到其他RegionServer上。失效服務器上“預寫”日誌由主服務器進行分割並派送給新的 RegionServer 。Zookeeper是壹個可靠地服務,壹般配置3或5個Zookeeper實例。

尋找RegionServer定位的順序是ZooKeeper --ROOT-(單Region) -.META. -用戶表 。如上圖所示。-ROOT- 表包含.META.表所在的region列表,該表只會有壹 個Region。 Zookeeper中記錄了-ROOT-表的location。 .META. 表包含所有的用戶空間region列表,以及 RegionServer的服務器地址。

HBase應用舉例

Hbase適合需對數據進行隨機讀操作或者隨機寫操作、大數據上高並發操作,比如每秒對PB級數據進行上千次操作以及讀寫訪問均是非常簡單的操作。

淘寶指數是Hbase在淘寶的壹個典型應用。交易歷史紀錄查詢很適合用Hbase作為底層數據庫。