自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一分鐘搞懂HBase

開發(fā) 開發(fā)工具
本文主要講解HBase的有關(guān)內(nèi)容。

[[187187]]

什么是HBase?

HBase(Hadoop Database)是Apache的Hadoop項(xiàng)目的子項(xiàng)目,是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),就像Bigtable利用了Google文件系統(tǒng)(GFS)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。

為什么采用HBase?

HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù),HBase是介于Map Entry(key & value)和DB Row之間的一種數(shù)據(jù)存儲(chǔ)方式,有點(diǎn)類似于現(xiàn)在流行的Memcache,但不僅僅是簡(jiǎn)單的一個(gè)key對(duì)應(yīng)一個(gè) value,你還可以根據(jù)需要存儲(chǔ)多個(gè)屬性的數(shù)據(jù)結(jié)構(gòu),但沒有傳統(tǒng)數(shù)據(jù)庫(kù)表中那么多的關(guān)聯(lián)關(guān)系,這就是所謂的松散數(shù)據(jù)。

簡(jiǎn)單來說,你在HBase中創(chuàng)建的表可以看做是一張很大的表,而這個(gè)表的屬性可以根據(jù)需求去動(dòng)態(tài)增加,在HBase中沒有表與表之間關(guān)聯(lián)查詢。你只需要告訴你的數(shù)據(jù)存儲(chǔ)到HBase表的哪個(gè)column families 就可以了,不需要指定它的具體類型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事務(wù)此類的功能。

Apache HBase 和Google Bigtable 有非常相似的地方,一個(gè)數(shù)據(jù)行擁有一個(gè)可選擇的鍵和任意數(shù)量的列。表是疏松的存儲(chǔ)的,因此用戶可以給行定義各種不同的列,對(duì)于這樣的功能在大項(xiàng)目中非常實(shí)用,可以簡(jiǎn)化設(shè)計(jì)和升級(jí)的成本。

HBase與傳統(tǒng)RDBMS的區(qū)別

HBase與傳統(tǒng)RDBMS的區(qū)別

應(yīng)用場(chǎng)景

有時(shí)候了解軟件產(chǎn)品的***方法是看看它是怎么用的。它可以解決什么問題和這些解決方案如何適用于大型應(yīng)用架構(gòu),能夠告訴你很多。因?yàn)镠Base有許多公開的產(chǎn)品部署,我們正好可以這么做。本章節(jié)將詳細(xì)介紹一些人們成功使用HBase的使用場(chǎng)景。

注意:不要自我限制,認(rèn)為HBase只能解決這些使用場(chǎng)景。它是一個(gè)初生的技術(shù),根據(jù)使用場(chǎng)景進(jìn)行創(chuàng)新正驅(qū)動(dòng)著系統(tǒng)的發(fā)展。如果你有新想法,認(rèn)為可以受益于HBase提供的功能,試試吧。社區(qū)很樂于幫助你,也會(huì)從你的經(jīng)驗(yàn)中學(xué)習(xí)。這正是開源軟件精神。

互聯(lián)網(wǎng)搜索應(yīng)用

BigTable,和模仿出來的HBase,為這種文檔庫(kù)提供存儲(chǔ),BigTable提供行級(jí)訪問,所以爬蟲可以插入和更新單個(gè)文檔。搜索索引可以基于BigTable 通過MapReduce計(jì)算高效生成。

捕獲增量數(shù)據(jù)

數(shù)據(jù)通常是細(xì)水長(zhǎng)流,累加到已有數(shù)據(jù)庫(kù)以備將來使用,例如分析,處理和服務(wù)。許多HBase使用場(chǎng)景屬于這個(gè)類別—使用HBase作為數(shù)據(jù)存儲(chǔ),捕獲來自于各種數(shù)據(jù)源的增量數(shù)據(jù)。例如,這種數(shù)據(jù)源可能是網(wǎng)頁(yè)爬蟲(我們討論過的互聯(lián)網(wǎng)搜索應(yīng)用問題),可能是記錄用戶看了什么廣告和多長(zhǎng)時(shí)間的廣告效果數(shù)據(jù),也可能是記錄各種參數(shù)的時(shí)間序列數(shù)據(jù)。

半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)

對(duì)于數(shù)據(jù)結(jié)構(gòu)字段不夠確定或雜亂無章很難按一個(gè)概念去進(jìn)行抽取的數(shù)據(jù)適合用HBase。例如,當(dāng)業(yè)務(wù)發(fā)展需要存儲(chǔ)用戶的email,phone,address信息時(shí)RDBMS需要停機(jī)維護(hù),而HBase支持動(dòng)態(tài)增加。

記錄非常稀疏

RDBMS的行有多少列是固定的,為null的列浪費(fèi)了存儲(chǔ)空間。HBase為null的Column不會(huì)被存儲(chǔ),這樣既節(jié)省了空間又提高了讀性能。

多版本數(shù)據(jù)

根據(jù)Row key和Column key定位到的Value可以有任意數(shù)量的版本值,因此對(duì)于需要存儲(chǔ)變動(dòng)歷史記錄的數(shù)據(jù),用HBase就非常方便了。比如用戶表的address是會(huì)變動(dòng)的,業(yè)務(wù)上一般只需要***的值,但有時(shí)可能需要查詢到歷史值。

超大數(shù)據(jù)量

當(dāng)數(shù)據(jù)量越來越大,RDBMS數(shù)據(jù)庫(kù)撐不住了,就出現(xiàn)了讀寫分離策略,通過一個(gè)Master專門負(fù)責(zé)寫操作,多個(gè)Slave負(fù)責(zé)讀操作,服務(wù)器成本倍增。

隨著壓力增加,Master撐不住了,這時(shí)就要分庫(kù)了,把關(guān)聯(lián)不大的數(shù)據(jù)分開部署,一些join查詢不能用了,需要借助中間層。

隨著數(shù)據(jù)量的進(jìn)一步增加,一個(gè)表的記錄越來越大,查詢就變得很慢,于是又得搞分表,比如按ID取模分成多個(gè)表以減少單個(gè)表的記錄數(shù)。經(jīng)歷過這些事的人都知道過程是多么的折騰。

采用HBase就簡(jiǎn)單了,只需要加機(jī)器即可,HBase會(huì)自動(dòng)水平切分?jǐn)U展,跟Hadoop的無縫集成保障了其數(shù)據(jù)可靠性(HDFS)和海量數(shù)據(jù)分析的高性能(MapReduce)。

【本文為51CTO專欄作者“朱國(guó)立”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)“開發(fā)者圓桌”獲取聯(lián)系和授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2018-07-31 16:10:51

Redo Undo數(shù)據(jù)庫(kù)數(shù)據(jù)

2017-02-21 13:00:27

LoadAverage負(fù)載Load

2020-05-21 19:46:19

區(qū)塊鏈數(shù)字貨幣比特幣

2018-06-26 05:23:19

線程安全函數(shù)代碼

2017-07-06 08:12:02

索引查詢SQL

2022-07-18 06:16:07

單點(diǎn)登錄系統(tǒng)

2017-03-27 23:22:23

數(shù)據(jù)庫(kù)列式存儲(chǔ)

2016-09-12 17:28:45

云存儲(chǔ)應(yīng)用軟件存儲(chǔ)設(shè)備

2018-12-12 22:51:24

Java包裝語言

2020-07-09 07:37:06

數(shù)據(jù)庫(kù)Redis工具

2020-07-17 07:44:25

云計(jì)算邊緣計(jì)算IT

2011-02-21 17:48:35

vsFTPd

2015-11-12 10:32:40

GitHub控制系統(tǒng)分布式

2016-12-16 11:05:00

分布式互斥線程

2018-03-27 09:28:33

緩存策略系統(tǒng)

2021-08-06 08:50:45

加密貨幣比特幣區(qū)塊鏈

2020-06-11 08:04:12

WDMDWDMMWDM

2013-11-15 07:24:50

4G LTE圖解

2009-12-02 17:21:19

Cisco路由器配置

2023-03-27 09:40:01

GoWebAssembl集成
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)