天天看點

Hbase原理、基本概念、基本架構

來自:http://blog.csdn.net/woshiwanxin102213/article/details/17584043

目錄(?)[-]

概述

Hbase資料模型

Hbase實體模型

HBase架構及基本元件

Hbase使用場景

Hbase與HDFS對比

參考文檔

Hbase原理、基本概念、基本架構

HBase是一個建構在HDFS上的分布式列存儲系統;

HBase是基于Google BigTable模型開發的,典型的key/value系統;

HBase是Apache Hadoop生态系統中的重要一員,主要用于海量結構化資料存儲;

從邏輯上講,HBase将資料按照表、行和列進行存儲。

與hadoop一樣,Hbase目标主要依靠橫向擴充,通過不斷增加廉價的商用伺服器,來增加計算和存儲能力。

Hbase表的特點

大:一個表可以有數十億行,上百萬列;

無模式:每行都有一個可排序的主鍵和任意多的列,列可以根據需要動态的增加,同一張表中不同的行可以有截然不同的列;

面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索;

稀疏:空(null)列并不占用存儲空間,表可以設計的非常稀疏;

資料多版本:每個單元中的資料可以有多個版本,預設情況下版本号自動配置設定,是單元格插入時的時間戳;

資料類型單一:Hbase中的資料都是字元串,沒有類型。

Hbase邏輯視圖

Hbase原理、基本概念、基本架構
注意上圖中的英文說明

Hbase基本概念

RowKey:是Byte array,是表中每條記錄的“主鍵”,友善快速查找,Rowkey的設計非常重要。 Column Family:列族,擁有一個名稱(string),包含一個或者多個相關列 Column:屬于某一個columnfamily,familyName:columnName,每條記錄可動态添加 Version Number:類型為Long,預設值是系統時間戳,可由使用者自定義 Value(Cell):Byte array

每個column family存儲在HDFS上的一個單獨檔案中,空值不會被儲存。

Key 和 Version number在每個 column family中均有一份;

HBase 為每個值維護了多級索引,即:<key, column family, column name, timestamp>

實體存儲:

1、Table中所有行都按照row key的字典序排列;

2、Table在行的方向上分割為多個Region;

3、Region按大小分割的,每個表開始隻有一個region,随着資料增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,之後會有越來越多的region;

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

Hbase原理、基本概念、基本架構

5、Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元。Region由一個或者多個Store組成,每個store儲存一個

columns

family;每個Strore又由一個memStore和0至多個StoreFile組成,StoreFile包含HFile;memStore存儲在

記憶體中,StoreFile存儲在HDFS上。

Hbase原理、基本概念、基本架構
Hbase原理、基本概念、基本架構

Hbase基本元件說明:

Client 包含通路HBase的接口,并維護cache來加快對HBase的通路,比如region的位置資訊 Master 為Region server配置設定region 負責Region server的負載均衡 發現失效的Region server并重新配置設定其上的region 管理使用者對table的增删改查操作 Region Server Regionserver維護region,處理對這些region的IO請求 Regionserver負責切分在運作過程中變得過大的region Zookeeper作用 通過選舉,保證任何時候,叢集中隻有一個master,Master與RegionServers 啟動時會向ZooKeeper注冊 存貯所有Region的尋址入口 實時監控Region server的上線和下線資訊。并實時通知給Master 存儲HBase的schema和table中繼資料 預設情況下,HBase 管理ZooKeeper 執行個體,比如, 啟動或者停止ZooKeeper Zookeeper的引入使得Master不再是單點故障
Hbase原理、基本概念、基本架構

Write-Ahead-Log(WAL)

Hbase原理、基本概念、基本架構

該機制用于資料的容錯和恢複:

個HRegionServer中都有一個HLog對象,HLog是一個實作Write Ahead

Log的類,在每次使用者操作寫入MemStore的同時,也會寫一份資料到HLog檔案中(HLog檔案格式見後續),HLog檔案定期會滾動出新的,并

删除舊的檔案(已持久化到StoreFile中的資料)。當HRegionServer意外終止後,HMaster會通過Zookeeper感覺

到,HMaster首先會處理遺留的

HLog檔案,将其中不同Region的Log資料進行拆分,分别放到相應region的目錄下,然後再将失效的region重新配置設定,領取

到這些region的HRegionServer在Load Region的過程中,會發現有曆史HLog需要處理,是以會Replay

HLog中的資料到MemStore中,然後flush到StoreFiles,完成資料恢複

HBase容錯性

Master容錯:Zookeeper重新選擇一個新的Master

無Master過程中,資料讀取仍照常進行;

無master過程中,region切分、負載均衡等無法進行;

RegionServer容錯:定時向Zookeeper彙報心跳,如果一旦時間内未出現心跳,Master将該RegionServer上的Region重新配置設定到其他RegionServer上,失效伺服器上“預寫”日志由主伺服器進行分割并派送給新的RegionServer

Zookeeper容錯:Zookeeper是一個可靠地服務,一般配置3或5個Zookeeper執行個體

Region定位流程:

Hbase原理、基本概念、基本架構

尋找RegionServer

ZooKeeper--> -ROOT-(單Region)--> .META.--> 使用者表

-ROOT-

表包含.META.表所在的region清單,該表隻會有一個Region;

Zookeeper中記錄了-ROOT-表的location。

.META.

表包含所有的使用者空間region清單,以及RegionServer的伺服器位址。

storing large amounts  of data(100s of TBs)

need high write throughput

need efficient random access(key lookups) within large data sets

need to scale gracefully with data

for structured and semi-structured data

don't need fullRDMS capabilities(cross row/cross table transaction, joins,etc.)

大資料量存儲,大資料量高并發操作

需要對資料随機讀寫操作

讀寫通路均是非常簡單的操作

兩者都具有良好的容錯性和擴充性,都可以擴充到成百上千個節點;

HDFS适合批處理場景

不支援資料随機查找

不适合增量資料處理

不支援資料更新

Hbase原理、基本概念、基本架構

參考文檔:

1、http://www.alidata.org/archives/1509(存儲模型比較詳細)

2、http://www.searchtb.com/2011/01/understanding-hbase.html(技術架構以及存儲模型)

3、http://wenku.baidu.com/view/b46eadd228ea81c758f578f4.html(讀和寫的流程比較詳細)