Outline
- 什么是Hbase
- 為什么需要Hbase
- Hbase的基礎概念
- Hbase的架構
- Hbase的讀寫操作
什么是Hbase
HBase(Hadoop Database)是一種構建在HDFS之上的分布式貌踏、面向列(列族)的存儲系統(tǒng)讲衫;源自Google發(fā)表于的Bigtable論文层亿。HBase是Google Bigtable的克隆版葵诈,與Google Bigtable 利用GFS作為其文件存儲系統(tǒng)類
- HDFS為Hbase提供可靠的底層數(shù)據(jù)存儲服務
- MapReduce為Hbase提供高性能的計算能力
- Zookeeper為Hbase提供穩(wěn)定服務和Failover機制
Hbase是一個通過大量廉價的機器解決海量數(shù)據(jù)的高速存儲和讀取的分布式數(shù)據(jù)庫解決方案崎页。
BigTable發(fā)明的原因
搜索是一種定位你所關心信息的行為
為什么需要Hbase?
hdfs和hbase各自使用場景
Hbase是Hadoop平臺下的數(shù)據(jù)存儲引擎架馋,是一個非關系型數(shù)據(jù)庫--NoSQL數(shù)據(jù)庫
HDFS不支持隨機讀寫操作
Hbase和關系型數(shù)據(jù)庫的比較
Hbase的特點
優(yōu)點
- 分布式數(shù)據(jù)庫帅刊,海量存儲,易于拓展
- 數(shù)據(jù)的實時訪問陈症,隨機讀寫
- schemaless data model (“NoSQL”)
- 自我管理數(shù)據(jù)分片
- 強一致模型(當寫操作返回時蔼水,所有的讀將看到一樣的結果)
缺點
不支持SQL,不支持跨行跨表事務录肯,不支持二級索引趴腋,而且讀時延大。它不能用在OLTP(On-Line Transaction Processing聯(lián)機事務處理過程)業(yè)務论咏,比如支付業(yè)務的核心流程优炬,但適合存放歷史數(shù)據(jù),處理歷史數(shù)據(jù)的對賬厅贪、歷史數(shù)據(jù)的回溯等需求蠢护。
Hbase表的基礎概念
概念名稱 | 解釋 |
---|---|
Table(表) | 類似于傳統(tǒng)數(shù)據(jù)庫中的表 |
Column Family(列簇) | Table在水平方向有一個或者多個Column |
Row Key(行健) | Table的主鍵养涮;Table中的記錄按照Row Key排序 |
Region | 一定范圍的數(shù)據(jù)訪問和存儲葵硕;HBase數(shù)據(jù)管理的基本單位 |
Timestamp(時間戳) | 每一行數(shù)據(jù)均對應一個時間戳;也可以當做版本號单寂。 |
Hbase的架構和基本概念
Hbase是由Client贬芥、Zookeeper、Master宣决、HRegionServer蘸劈、HDFS等幾個組建組成,架構圖如下:
基本概念
概念 | 功能 |
---|---|
Client | 包含了訪問Hbase的接口尊沸,并維護cache |
Zookeeper | Hmaster的高可用威沫、RegionServer的監(jiān)控贤惯、元數(shù)據(jù)的入口以及集群配置的維護等 |
Hmaster | Hmaster的高可用、RegionServer的監(jiān)控棒掠、元數(shù)據(jù)的入口以及集群配置的維護等 |
Hlog | 每個HRegionServer中都會有一個HLog的實例孵构,存儲在HDFS上 |
HregionServer | HregionServer直接對接用戶的讀寫請求,是真正的“干活”的節(jié)點烟很,每個RegionServer為一定數(shù)量的region服務 |
Hregion | Hbase中分布式存儲和負載均衡的最小單元,會split颈墅,包含多個Store |
Store | Store = MemStore+StoreFile(>=1個) |
MemStore | 內(nèi)存,對應一個列族雾袱,KV |
StoreFile | StoreFile包含一個或多個HFile恤筛,以二進制流的形式存儲在HDFS上 |
HFile | 由block組成 |
HDFS | 為Hbase提供最終的底層數(shù)據(jù)存儲服務,同時為Hbase提供高可用的支持 |
HFile由很多個數(shù)據(jù)塊(Block)組成芹橡,并且有一個固定的結尾塊毒坛。其中的數(shù)據(jù)塊是由一個Header和多個Key-Value的鍵值對組成。在結尾的數(shù)據(jù)塊中包含了數(shù)據(jù)相關的索引信息林说,系統(tǒng)也是通過結尾的索引信息找到HFile中的數(shù)據(jù)煎殷。
Hbase的存儲機制
Hbase的讀寫操作
Hbase寫操作
HBase寫數(shù)據(jù)流程
1,Client先訪問zookeeper,從meta表獲取相應region信息腿箩,然后找到meta表的數(shù)據(jù)
2,根據(jù)namespace豪直、表名和rowkey根據(jù)meta表的數(shù)據(jù)找到寫入數(shù)據(jù)對應的Hregion信息
3,找到對應的regionserver
4,把數(shù)據(jù)分別寫到HLog和MemStore上一份
4,MemStore達到一個閾值后則把數(shù)據(jù)刷成一個StoreFile文件。(若MemStore中的數(shù)據(jù)有丟失珠移,則可以總HLog上恢復)
5,當多個StoreFile文件達到一定的大小后顶伞,會觸發(fā)Compact合并操作,合并為一個StoreFile剑梳,(這里同時進行版本的合并和數(shù)據(jù)刪除。)
6,當Storefile大小超過一定閾值后滑潘,會把當前的Region分割為兩個(Split)垢乙,并由Hmaster分配到相應的HRegionServer,實現(xiàn)負載均衡
Hlog
Hlog是Hbase實現(xiàn)WAL(Write ahead log语卤,預寫日志)方式產(chǎn)生的日志信息
當RegionServer出現(xiàn)故障的時候追逮,需要對Hlog進行回放來恢復數(shù)據(jù)。
保證數(shù)據(jù)的高可用4舛妗钮孵!
Hbase讀操作
1,Client先訪問zookeeper,從meta表讀取region的位置眼滤,然后讀取meta表中的數(shù)據(jù)巴席。meta中又存儲了用戶表的region信息。
2,根據(jù)namespace诅需、表名和rowkey在meta表中找到對應的region信息
3,找到這個region對應的regionserver
4,查找對應的region
5,先從MemStore找數(shù)據(jù)漾唉,如果沒有荧库,再到StoreFile上讀(為了讀取的效率)。
誰在使用Hbase
參考資料
Hbase技術詳細學習筆記
《HBase實戰(zhàn)》
Hadoop相關知識整理系列之一:HBase基本架構及原理