論HDFS上的分布式列存儲(chǔ)系統(tǒng)Hbase所具備優(yōu)點(diǎn)以及所支持的操作

今日頭條
馬士兵尚學(xué)堂
HBase是一個(gè)構(gòu)建在HDFS上的分布式列存儲(chǔ)系統(tǒng),主要用于海量結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),從邏輯上講,HBase將數(shù)據(jù)按照表、行和列進(jìn)行存儲(chǔ)。 HDFS適合批處理場(chǎng)景 不支持?jǐn)?shù)據(jù)隨機(jī)查找 不適合增量數(shù)據(jù)處理 不支持?jǐn)?shù)據(jù)更...

HBase是一個(gè)構(gòu)建在HDFS上的分布式列存儲(chǔ)系統(tǒng),主要用于海量結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ),從邏輯上講,HBase將數(shù)據(jù)按照表、行和列進(jìn)行存儲(chǔ)。

HDFS適合批處理場(chǎng)景

不支持?jǐn)?shù)據(jù)隨機(jī)查找

不適合增量數(shù)據(jù)處理

不支持?jǐn)?shù)據(jù)更新

以上HDFS不適合、不支持的場(chǎng)景,HBase都支持

大數(shù)據(jù)上高并發(fā)操作,比如每秒對(duì)PB級(jí)數(shù)據(jù)進(jìn)行上千次操作,并且讀寫(xiě)訪問(wèn)均是非常簡(jiǎn)單的操作。

論HDFS上的分布式列存儲(chǔ)系統(tǒng)Hbase所具備優(yōu)點(diǎn)以及所支持的操作

Hbase表的特點(diǎn)

大:一個(gè)表可以有數(shù)十億行,上百萬(wàn)列;

無(wú)模式:每行都有一個(gè)可排序的主鍵和任意多的列,列可以根據(jù)需要?jiǎng)討B(tài)的增加,同一張表中不同的行可以有截然不同的列;

面向列:面向列(族)的存儲(chǔ)和權(quán)限控制,列(族)獨(dú)立檢索;

稀疏:對(duì)于空(null)的列,并不占用存儲(chǔ)空間,表可以設(shè)計(jì)的非常稀疏;

數(shù)據(jù)多版本:每個(gè)單元中的數(shù)據(jù)可以有多個(gè)版本,默認(rèn)情況下版本號(hào)自動(dòng)分配,是單元格插入時(shí)的時(shí)間戳;

數(shù)據(jù)類(lèi)型單一:Hbase中的數(shù)據(jù)都是字符串,沒(méi)有類(lèi)型。

行存儲(chǔ)和列存儲(chǔ)的比較

傳統(tǒng)行式數(shù)據(jù)庫(kù)

數(shù)據(jù)是按行存儲(chǔ)的

沒(méi)有索引的查詢(xún)使用大量I/O

建立索引和物化視圖需要花費(fèi)大量時(shí)間和資源

面向查詢(xún)的需求,數(shù)據(jù)庫(kù)必須被大量膨脹才能滿(mǎn)足性能要求

列式數(shù)據(jù)庫(kù)

數(shù)據(jù)是按列存儲(chǔ)-每一列單獨(dú)存放

數(shù)據(jù)即是索引

指訪問(wèn)查詢(xún)涉及的列-大量降低系統(tǒng)I/O

每一列由一個(gè)線(xiàn)程來(lái)處理-查詢(xún)的并發(fā)處理

數(shù)據(jù)類(lèi)型一致,數(shù)據(jù)特征相似-高效壓縮

基本概念

Row Key

Byte array

表中每條記錄的“主鍵”

方便快速查找

Column Family

擁有一個(gè)名稱(chēng)(string)

包含一個(gè)或者多個(gè)相關(guān)列

Column

屬于某一個(gè)Column Family

包含在某一列中

familyName:columnName

Version Number

每個(gè)rowkey唯一

默認(rèn)值:系統(tǒng)時(shí)間戳

類(lèi)型為L(zhǎng)ong

Value(Cell)

Byte array

數(shù)據(jù)模型

HBase schema可以有多個(gè)Table

每個(gè)表可由多個(gè)Column Family組成

HBase可以有Dynamic Column

列名稱(chēng)是編碼在cell中的

不同的cell可以擁有不同的列

version number可由用戶(hù)提供

無(wú)需以遞增的順序插入

每一行的rowkey必須是唯一的

Table可能非常稀疏

很多cell可以是空的

Row Key是主鍵

HBase支持操作

所有操作都是基于rowkey的

支持crud和scan

單行操作:put、get、scan

多行操作:MultiPut、scan

沒(méi)有內(nèi)置join操作,可以使用MapReduce解決

物理模型

rowkey和version number在每個(gè)column family中都有一份

每個(gè)column family存儲(chǔ)在HDFS上的一個(gè)單獨(dú)文件中(就是store)

控制不會(huì)被保存,不占存儲(chǔ)空間

以上特點(diǎn)類(lèi)似分庫(kù)技術(shù)中的垂直切分,提高了并發(fā)訪問(wèn)速度

論HDFS上的分布式列存儲(chǔ)系統(tǒng)Hbase所具備優(yōu)點(diǎn)以及所支持的操作

物理存儲(chǔ)

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

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

3、Region按大小分割的,每個(gè)表開(kāi)始只有一個(gè)region,隨著數(shù)據(jù)增多,region不斷增大,當(dāng)增大到一個(gè)閥值的時(shí)候,region就會(huì)等分會(huì)兩個(gè)新的region,之后會(huì)有越來(lái)越多的region;

4、Region是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元。不同Region分布到不同RegionServer上;

5、Region雖然是分布式存儲(chǔ)的最小單元,但并不是存儲(chǔ)的最小單元。

Region由一個(gè)或者多個(gè)Store組成,每個(gè)store保存一個(gè)columns family;

每個(gè)Strore又由一個(gè)memStore和0至多個(gè)StoreFile組成;

memStore存儲(chǔ)在內(nèi)存中,StoreFile存儲(chǔ)在HDFS上。

HBase架構(gòu)

論HDFS上的分布式列存儲(chǔ)系統(tǒng)Hbase所具備優(yōu)點(diǎn)以及所支持的操作

HBase基本組件

Client

包含訪問(wèn)HBase的接口,并維護(hù)cache來(lái)加快對(duì)HBase的訪問(wèn)

Zookeeper

Hbase依賴(lài)Zookeeper,hbase會(huì)管理zookeeper的實(shí)例

保證任何時(shí)候,集群中只有一個(gè)master

存儲(chǔ)所有region的尋址入口

實(shí)時(shí)監(jiān)控region server的上線(xiàn)和下線(xiàn)信息,并實(shí)時(shí)通知給master

存儲(chǔ)hbase的schema和table元數(shù)據(jù)

Master

為region server分配region

負(fù)責(zé)region server的負(fù)載均衡

發(fā)現(xiàn)失效的region server并重新分配其上的region

管理用戶(hù)對(duì)table的增刪改查操作

Region Server

維護(hù)region,處理對(duì)這些region的IO請(qǐng)求

負(fù)責(zé)切分在運(yùn)行過(guò)程中變得過(guò)大的region

HBase容錯(cuò)性

Master容錯(cuò):zookeeper重新選擇一個(gè)新的master

無(wú)master過(guò)程中,數(shù)據(jù)讀取仍照常運(yùn)行

無(wú)master過(guò)程中,region切分、負(fù)載均衡等無(wú)法進(jìn)行

region server容錯(cuò):定時(shí)向zookeeper匯報(bào)心跳,如果一段時(shí)間內(nèi)未出現(xiàn)心跳

master將該region server上的region重新分配到其他region server上

失效服務(wù)器上預(yù)寫(xiě)日志由主服務(wù)器進(jìn)行分割并派送給新的region server

zookeeper容錯(cuò):zookeeper是一個(gè)可靠的服務(wù)

一般配置3或5個(gè)zookeeper實(shí)例

Region定位

論HDFS上的分布式列存儲(chǔ)系統(tǒng)Hbase所具備優(yōu)點(diǎn)以及所支持的操作

關(guān)系數(shù)據(jù)庫(kù)和HBase比較

論HDFS上的分布式列存儲(chǔ)系統(tǒng)Hbase所具備優(yōu)點(diǎn)以及所支持的操作

關(guān)系數(shù)據(jù)庫(kù)和HBase比較

Hbase在淘寶的應(yīng)用

淘寶指數(shù)

交易歷史記錄查詢(xún)系統(tǒng)

Facebook已經(jīng)放棄了自己創(chuàng)建的Cassandra,使用了HBase.

【1】想了解大數(shù)據(jù)知識(shí),可以關(guān)注我下方評(píng)論轉(zhuǎn)發(fā)后,私信“資料”。

【2】部分資料有時(shí)間限制,抓緊時(shí)間吧!

THEEND

最新評(píng)論(評(píng)論僅代表用戶(hù)觀點(diǎn))

更多
暫無(wú)評(píng)論