HBase的使用

前言

HBase是一個高可靠,高性能,面向列,可伸縮的分佈式存儲系統,適用於結構化的存儲,底層依賴於Hadoop的HDSF,利用HBase能夠在廉價PC server上搭建起大規模結構化存儲集羣。HBase被普遍應用於大數據存儲解決方案中。架構

HBase 特色

HBase優勢:併發

  • 列能夠動態增長,列爲空不會存儲數據,節省存儲空間
  • 自動切分數據,是的數據存儲具備水平擴展性
  • 能夠提供高併發讀寫操做的支持

HBase缺點:分佈式

  • 不支持條件查詢,只支持按照Row Key來查詢
  • 不適合傳統的事務處理或關聯分析,不支持複雜查詢

若是應用中的數據每行結構都有差異,能夠適用於HBase存儲鬆散數據。能夠動態增長列,若是列爲空不會存儲數據,若是提供的數據存在一個主鍵,能夠依靠HBase的rowkey提供高效查詢。高併發

HBase使用場景

賣家操做日誌oop

用來記錄商家操做的日誌系統,保證商家能夠精確查詢本身各類操做。賣家無時無刻再也不操做,因此賣家操做日誌具備數據量大,實時性強,增多查少特色。 性能

最初的設計是將操做日誌放到ES中,操做日誌數據量大,當時ES資源有限,因此將最近三個月的數據存儲到ES中,而長期數據存儲使用HBase進行。大數據

消息日誌存儲設計

消息日誌用來進行全鏈路追蹤及消息的統計分析,天天有幾千萬消息量。消息追蹤要求實時性,多維度精確查詢,將最近一週消息日誌存儲在ES中,在按期將HBase中數據倒入數據集市中,方便對消息進行統計分析。日誌

HBase架構

Masterserver

Master用於協調多個Region Server,監測各個Region Server之間的狀態,平衡Region Server之間負載。Master還負責分配Region給Region Server。容許多個Master節點工程,須要藉助ZK。多個Master節點共存時,只有一個Master是提供服務的,其餘Master節點處於待命狀態,當正在工做的Master節點宕機,其餘Master會接管HBase的集羣。

Region Server

一個Region Server中包括多個Region,Region Server做用是管理表格,實現讀寫操做。Client直接鏈接Region Server,通訊獲取HBase中的數據。Region則是真實存放HBase數據的地方,Region是HBase的可用性和分佈式的基本單位。若是一個表格很是大,由多個CF組成時,表的數據將存放在多個Region之間,並在每一個Region中會關聯多個存儲單元(Store)。

ZK

ZK做爲HBase Master的HA解決方案,ZK保證了至少只有一個HBase Master處於運行狀態。ZK負責Region和Region Server的註冊。

基本原理

HBase經過ZK進行機器之間的協調,Master和Region Server之間的關係經過ZK協調維護。當Client須要訪問HBase集羣時,client須要先和zk通訊,找到對應的Region Server。每一個region server管理多個region。

每一個region都只存儲一個column family數據,該CF中的一段(按照Row的區間分紅多個region)。region能存儲數據的大小是有上限的,達到上限時,region會進行分裂。數據會分裂到多個region中,這樣便於提升數據並行化,提升數據容量。

每一個region包含多個store對象,每一個sotre包含一個memstore,和一個或多個hfile。 memsotre是數據在內存中的實體,通常是有序存儲的,數據向region寫時,先寫入memsotre,當memstore中數據須要向底層文件系統Dump時,sotre會建立storefile,sotrefile是對hfile的封裝。因此memstore中數據最終會寫入到hfile中,就是磁盤io。因爲HBase底層依靠hdfs,hfile都存儲在hdfs上。

相關文章
相關標籤/搜索