數據存儲-Hbase基礎

Outline

  • 什么是Hbase
  • 為什么需要Hbase
  • Hbase的基礎概念
  • Hbase的架構
  • Hbase的讀寫操作

什么是Hbase

HBase(Hadoop Database)是一種構建在HDFS之上的分布式、面向列(列族)的存儲系統;源自Google發表于的Bigtable論文。HBase是Google Bigtable的克隆版,與Google Bigtable 利用GFS作為其文件存儲系統類

  • HDFS為Hbase提供可靠的底層數據存儲服務
  • MapReduce為Hbase提供高性能的計算能力
  • Zookeeper為Hbase提供穩定服務和Failover機制
    Hbase是一個通過大量廉價的機器解決海量數據的高速存儲和讀取的分布式數據庫解決方案。

BigTable發明的原因

搜索是一種定位你所關心信息的行為


hbase_search

為什么需要Hbase?

hdfs和hbase各自使用場景

Hbase是Hadoop平臺下的數據存儲引擎,是一個非關系型數據庫--NoSQL數據庫


image

HDFS不支持隨機讀寫操作

Hbase和關系型數據庫的比較

hbase_vs_RDBMS
hbase_table

Hbase的特點

優點
  • 分布式數據庫,海量存儲,易于拓展
  • 數據的實時訪問,隨機讀寫
  • schemaless data model (“NoSQL”)
  • 自我管理數據分片
  • 強一致模型(當寫操作返回時,所有的讀將看到一樣的結果)
缺點

不支持SQL,不支持跨行跨表事務,不支持二級索引,而且讀時延大。它不能用在OLTP(On-Line Transaction Processing聯機事務處理過程)業務,比如支付業務的核心流程,但適合存放歷史數據,處理歷史數據的對賬、歷史數據的回溯等需求。

Hbase表的基礎概念

hbase_concept
概念名稱 解釋
Table(表) 類似于傳統數據庫中的表
Column Family(列簇) Table在水平方向有一個或者多個Column
Row Key(行健) Table的主鍵;Table中的記錄按照Row Key排序
Region 一定范圍的數據訪問和存儲;HBase數據管理的基本單位
Timestamp(時間戳) 每一行數據均對應一個時間戳;也可以當做版本號。

Hbase的架構和基本概念

Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等幾個組建組成,架構圖如下:


hbase_arch
基本概念
概念 功能
Client 包含了訪問Hbase的接口,并維護cache
Zookeeper Hmaster的高可用、RegionServer的監控、元數據的入口以及集群配置的維護等
Hmaster Hmaster的高可用、RegionServer的監控、元數據的入口以及集群配置的維護等
Hlog 每個HRegionServer中都會有一個HLog的實例,存儲在HDFS上
HregionServer HregionServer直接對接用戶的讀寫請求,是真正的“干活”的節點,每個RegionServer為一定數量的region服務
Hregion Hbase中分布式存儲和負載均衡的最小單元,會split,包含多個Store
Store Store = MemStore+StoreFile(>=1個)
MemStore 內存,對應一個列族,KV
StoreFile StoreFile包含一個或多個HFile,以二進制流的形式存儲在HDFS上
HFile block組成
HDFS 為Hbase提供最終的底層數據存儲服務,同時為Hbase提供高可用的支持

HFile由很多個數據塊(Block)組成,并且有一個固定的結尾塊。其中的數據塊是由一個Header和多個Key-Value的鍵值對組成。在結尾的數據塊中包含了數據相關的索引信息,系統也是通過結尾的索引信息找到HFile中的數據。

Hbase的存儲機制

Hbase的讀寫操作

Hbase寫操作
image

HBase寫數據流程
1,Client先訪問zookeeper,從meta表獲取相應region信息,然后找到meta表的數據
2,根據namespace、表名和rowkey根據meta表的數據找到寫入數據對應的Hregion信息
3,找到對應的regionserver
4,把數據分別寫到HLog和MemStore上一份
4,MemStore達到一個閾值后則把數據刷成一個StoreFile文件。(若MemStore中的數據有丟失,則可以總HLog上恢復)
5,當多個StoreFile文件達到一定的大小后,會觸發Compact合并操作,合并為一個StoreFile,(這里同時進行版本的合并和數據刪除。)
6,當Storefile大小超過一定閾值后,會把當前的Region分割為兩個(Split),并由Hmaster分配到相應的HRegionServer,實現負載均衡

Hlog

Hlog是Hbase實現WAL(Write ahead log,預寫日志)方式產生的日志信息
當RegionServer出現故障的時候,需要對Hlog進行回放來恢復數據。
保證數據的高可用!!

Hbase讀操作

1,Client先訪問zookeeper,從meta表讀取region的位置,然后讀取meta表中的數據。meta中又存儲了用戶表的region信息。
2,根據namespace、表名和rowkey在meta表中找到對應的region信息
3,找到這個region對應的regionserver
4,查找對應的region
5,先從MemStore找數據,如果沒有,再到StoreFile上讀(為了讀取的效率)。

誰在使用Hbase
hbase_who_use

參考資料

Hbase技術詳細學習筆記
《HBase實戰》
Hadoop相關知識整理系列之一:HBase基本架構及原理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1,無知付出的慘痛的代價 時至今日,我依然無法介懷,依然心痛不已。 當8個月前帶孩子去醫院補牙的照片映入眼簾時,我...
    峮子說閱讀 2,693評論 2 1
  • 瑪雅印記的每一個圖騰都不僅僅有一層面的含義,每一個印記都給了挑戰,同時賦予你解決的鑰匙~ 感覺和占星不同,占星的每...
    李瑆點點星光閱讀 909評論 0 1
  • 剛才看了好幾遍二姐發的才看明白二姐說的。我自然而然的想成少承擔一點了。我受了太多的寵愛,所以養成了不承擔的習慣。我...
    焦子老師閱讀 123評論 0 1