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

基于HBase的大數(shù)據(jù)存儲(chǔ)的應(yīng)用場(chǎng)景分析

存儲(chǔ)
HBase是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),適用于結(jié)構(gòu)化的存儲(chǔ),底層依賴于Hadoop的HDFS,利用HBase技術(shù)可在廉價(jià)PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。因此HBase被廣泛使用在大數(shù)據(jù)存儲(chǔ)的解決方案中。

引言

HBase是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),適用于結(jié)構(gòu)化的存儲(chǔ),底層依賴于Hadoop的HDFS,利用HBase技術(shù)可在廉價(jià)PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。因此HBase被廣泛使用在大數(shù)據(jù)存儲(chǔ)的解決方案中。

為何使用HBase

HBase的優(yōu)點(diǎn):

列可以動(dòng)態(tài)增加,并且列為空就不存儲(chǔ)數(shù)據(jù),節(jié)省存儲(chǔ)空間。

Hbase自動(dòng)切分?jǐn)?shù)據(jù),使得數(shù)據(jù)存儲(chǔ)自動(dòng)具有水平scalability。

Hbase可以提供高并發(fā)讀寫(xiě)操作的支持。

HBase的缺點(diǎn):

不能支持條件查詢,只支持按照Row key來(lái)查詢。

HBase并不適合傳統(tǒng)的事物處理程序或關(guān)聯(lián)分析,不支持復(fù)雜查詢,一定程度上限制了它的使用,但是用它做數(shù)據(jù)存儲(chǔ)的優(yōu)勢(shì)也同樣非常明顯。

因?yàn)镠Base存儲(chǔ)的是松散的數(shù)據(jù),所以如果你的應(yīng)用程序中,數(shù)據(jù)表每一行的結(jié)構(gòu)是有差別的,那么可以考慮使用HBase。因?yàn)镠Base的列可以動(dòng)態(tài)增加,并且列為空就不存儲(chǔ)數(shù)據(jù),所以如果你需要經(jīng)常追加字段,且大部分字段是NULL值的,那可以考慮HBase。因?yàn)镠Base可以根據(jù)Rowkey提供高效的查詢,所以如果你的數(shù)據(jù)(包括元數(shù)據(jù)、消息、二進(jìn)制數(shù)據(jù)等)都有著同一個(gè)主鍵,或者你需要通過(guò)鍵來(lái)訪問(wèn)和修改數(shù)據(jù),使用HBase是一個(gè)很好地選擇。

如何使用HBase

場(chǎng)景一:賣(mài)家操作日志

賣(mài)家操作日志,顧名思義是用來(lái)記錄商家操作的系統(tǒng),從而可以保證商家可以精確查詢自己的各種操作。京東有幾十萬(wàn)的商家時(shí)時(shí)刻刻的進(jìn)行著各種操作,因此賣(mài)家操作日志的特點(diǎn)是:數(shù)據(jù)量大、實(shí)時(shí)性強(qiáng)、增多查少。

圖1

圖2

我們?cè)谧鲑u(mài)家操作日志初期,將所有的操作日志存放在ES中,操作日志的數(shù)據(jù)量是非常大的,但尷尬的是我們當(dāng)時(shí)所能申請(qǐng)到的ES資源有限。當(dāng)把大量的數(shù)據(jù)存儲(chǔ)到有限的ES集群中時(shí)便導(dǎo)致了性能的下降。在這種情況下,我們選擇了只在ES集群中存儲(chǔ)最近三個(gè)月的數(shù)據(jù),對(duì)其提供靈活的查詢,而長(zhǎng)期的數(shù)據(jù)存儲(chǔ)使用HBase來(lái)進(jìn)行。這樣的話我們便可以實(shí)現(xiàn)對(duì)近期操作靈活展現(xiàn),對(duì)長(zhǎng)期數(shù)據(jù)也有精確備份。

場(chǎng)景二:京麥消息日志的存儲(chǔ)

京麥消息日志的存儲(chǔ)是屬于京麥筋斗云系統(tǒng)(用于打造京麥消息生態(tài)系統(tǒng)閉環(huán))不可或缺的一部分。其中包含消息的全鏈路追蹤以及消息的統(tǒng)計(jì)分析。京麥消息每天都會(huì)有幾千萬(wàn)的消息量,如何對(duì)消息進(jìn)行追蹤和統(tǒng)計(jì)便成為了一個(gè)至關(guān)重要的問(wèn)題。消息追蹤要求實(shí)時(shí)性、多維度精確查詢,因此我們選擇將最近一周的消息日志存儲(chǔ)在ES。統(tǒng)計(jì)分析要求我們有足夠多的數(shù)據(jù),因此我們?cè)趯?shù)據(jù)存儲(chǔ)在ES中的同時(shí)也存儲(chǔ)在HBase中一份。最終再定期將HBase中的數(shù)據(jù)導(dǎo)入到京東的數(shù)據(jù)集市中,這樣我們便可以很方便的對(duì)京麥消息進(jìn)行統(tǒng)計(jì)分析。

HBase的數(shù)據(jù)結(jié)構(gòu)

 

要使用HBase我們首先要了解HBase的數(shù)據(jù)結(jié)構(gòu):

HBase會(huì)存儲(chǔ)系列的行記錄,行記錄有三個(gè)基本類型的定義:Row Key、Time Stamp、Column Family。

Row Key

與NoSQL數(shù)據(jù)庫(kù)一樣,Row Key是用來(lái)檢索記錄的主鍵。訪問(wèn)HBase table中的行,只有三種方式:

通過(guò)單個(gè)Row Key訪問(wèn)。

通過(guò)Row Key的range全表掃描。

Row Key可以是任意字符串(***長(zhǎng)度是64KB,實(shí)際應(yīng)用中長(zhǎng)度一般為 10 ~ 100bytes),在HBase內(nèi)部,Row Key保存為字節(jié)數(shù)組。

在存儲(chǔ)時(shí),數(shù)據(jù)按照Row Key的字典序(byte order)排序存儲(chǔ)。設(shè)計(jì)Key時(shí),要充分排序存儲(chǔ)這個(gè)特性,將經(jīng)常一起讀取的行存儲(chǔ)到一起(位置相關(guān)性)。

Column Family

HBase表中每個(gè)列都必須屬于某個(gè)列族,列族必須作為表模式定義的一部分預(yù)先給出(有點(diǎn)像關(guān)系型數(shù)據(jù)庫(kù)中的列名,定義完一般情況下就不會(huì)再去修改);

列名以列族作為前綴,每個(gè)列族都可以有多個(gè)列成員。新的列族成員(也就是列)可以隨后按需,動(dòng)態(tài)加入。

Hbase把同一列族里面的數(shù)據(jù)存儲(chǔ)在同一目錄下,由幾個(gè)文件保存。

Time Stamp

在HBase每個(gè)cell存儲(chǔ)單元對(duì)同一份數(shù)據(jù)有多個(gè)版本,根據(jù)唯一的時(shí)間戳來(lái)區(qū)分每個(gè)版本之間的差異,不同版本的數(shù)據(jù)按照時(shí)間倒序排序,***的數(shù)據(jù)版本排在最前面。

簡(jiǎn)述HBase的架構(gòu)原理

1. HBase的模塊

 

Master

HBase Master用于協(xié)調(diào)多個(gè)Region Server,偵測(cè)各個(gè)Region Server之間的狀態(tài),并平衡Region Server之間的負(fù)載。HBase Master還有一個(gè)職責(zé)就是負(fù)責(zé)分配Region給Region Server。HBase允許多個(gè)Master 節(jié)點(diǎn)共存,但是這需要Zookeeper的幫助。不過(guò)當(dāng)多個(gè)Master節(jié)點(diǎn)共存時(shí),只有一個(gè)Master是提供服務(wù)的,其他的Master節(jié)點(diǎn)處于待命的狀態(tài)。當(dāng)正在工作的Master節(jié)點(diǎn)宕機(jī)時(shí),其他的Master則會(huì)接管 HBase 的集群。

Region Server

對(duì)于一個(gè)Region Server而言,其包括了多個(gè)Region。Region Server的作用只是管理表格,以及實(shí)現(xiàn)讀寫(xiě)操作。Client 直接連接Region Server,并通信獲取HBase中的數(shù)據(jù)。對(duì)于Region而言,則是真實(shí)存放HBase數(shù)據(jù)的地方,也就說(shuō)Region是HBase可用性和分布式的基本單位。如果當(dāng)一個(gè)表格很大,并由多個(gè)CF組成時(shí),那么表的數(shù)據(jù)將存放在多個(gè)Region之間,并且在每個(gè)Region中會(huì)關(guān)聯(lián)多個(gè)存儲(chǔ)的單元(Store)。

Zookeeper

對(duì)于HBase而言,Zookeeper的作用是至關(guān)重要的。首先Zookeeper是作為HBase Master的HA解決方案。也就是說(shuō),是Zookeeper保證了至少有一個(gè)HBase Master處于運(yùn)行狀態(tài)。并且Zookeeper負(fù)責(zé)Region和Region Server的注冊(cè)。其實(shí)Zookeeper發(fā)展到目前為止,已經(jīng)成為了分布式大數(shù)據(jù)框架中容錯(cuò)性的標(biāo)準(zhǔn)框架。不光是HBase,幾乎所有的分布式大數(shù)據(jù)相關(guān)的開(kāi)源框架,都依賴于Zookeeper實(shí)現(xiàn)HA。

2. HBase的原理

首先我們需要知道HBase的集群是通過(guò)Zookeeper來(lái)進(jìn)行機(jī)器之前的協(xié)調(diào),也就是說(shuō)HBase Master與Region Server之間的關(guān)系是依賴Zookeeper來(lái)維護(hù)。當(dāng)一個(gè)Client需要訪問(wèn)HBase集群時(shí),Client需要先和Zookeeper來(lái)通信,然后才會(huì)找到對(duì)應(yīng)的Region Server。每一個(gè) Region Server管理著很多個(gè)Region。對(duì)于HBase來(lái)說(shuō),Region是HBase并行化的基本單元。因此,數(shù)據(jù)也都存儲(chǔ)在Region中。

這里我們需要特別注意,每一個(gè)Region都只存儲(chǔ)一個(gè)Column Family的數(shù)據(jù),并且是該CF中的一段(按Row 的區(qū)間分成多個(gè)Region)。Region所能存儲(chǔ)的數(shù)據(jù)大小是有上限的,當(dāng)達(dá)到該上限時(shí)(Threshold),Region會(huì)進(jìn)行分裂,數(shù)據(jù)也會(huì)分裂到多個(gè)Region中,這樣便可以提高數(shù)據(jù)的并行化,以及提高數(shù)據(jù)的容量。

每個(gè)Region包含著多個(gè)Store對(duì)象。每個(gè)Store包含一個(gè)MemStore,和一個(gè)或多個(gè)HFile。MemStore便是數(shù)據(jù)在內(nèi)存中的實(shí)體,并且一般都是有序的。當(dāng)數(shù)據(jù)向Region寫(xiě)入的時(shí)候,會(huì)先寫(xiě)入MemStore。當(dāng)MemStore中的數(shù)據(jù)需要向底層文件系統(tǒng)傾倒(Dump)時(shí)(例如MemStore中的數(shù)據(jù)體積到達(dá)MemStore配置的***值),Store便會(huì)創(chuàng)建StoreFile,而StoreFile就是對(duì)HFile一層封裝。所以MemStore中的數(shù)據(jù)會(huì)最終寫(xiě)入到HFile中,也就是磁盤(pán)IO。由于HBase底層依靠HDFS,因此HFile都存儲(chǔ)在HDFS之中。這便是整個(gè)HBase工作的原理簡(jiǎn)述。

使用HBase時(shí)應(yīng)注意的問(wèn)題

基于Hbase的系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)中,需要考慮的因素不同于關(guān)系型數(shù)據(jù)庫(kù),Hbase模式本身很簡(jiǎn)單,但賦予你更多調(diào)整的空間,有一些模式寫(xiě)性能很好,但讀取數(shù)據(jù)時(shí)表現(xiàn)不好,或者正好相反,類似傳統(tǒng)數(shù)據(jù)庫(kù)基于范式的OR建模,在實(shí)際項(xiàng)目中考慮Hbase設(shè)計(jì)模式是,我們需要從以下幾方面內(nèi)容著手:

這個(gè)表應(yīng)該有多少個(gè)列簇

列簇使用什么數(shù)據(jù)

每個(gè)列簇應(yīng)有多少個(gè)列

列名應(yīng)該是什么,盡管列名不必在建表時(shí)定義,但是讀寫(xiě)數(shù)據(jù)時(shí)是需要的

單元應(yīng)該存放什么數(shù)據(jù)

每個(gè)單元存儲(chǔ)什么時(shí)間版本

行健結(jié)構(gòu)是什么,應(yīng)該包括什么信息

總結(jié)

現(xiàn)如今各種數(shù)據(jù)存儲(chǔ)方案層出不窮,本文僅僅是結(jié)合兩個(gè)實(shí)戰(zhàn)場(chǎng)景就基于HBase的大數(shù)據(jù)存儲(chǔ)做了簡(jiǎn)單的分析,并對(duì)HBase的原理做了簡(jiǎn)單的闡述。如何使用好HBase,甚至于如何選擇一個(gè)***的數(shù)據(jù)存儲(chǔ)方案,還需要我們根據(jù)場(chǎng)景需要具體分析和設(shè)計(jì)。

責(zé)任編輯:武曉燕 來(lái)源: linkedkeeper
相關(guān)推薦

2019-05-05 09:03:06

HBase大數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)

2017-09-18 17:59:23

Hadoop數(shù)據(jù)分析

2019-03-27 15:35:35

大數(shù)據(jù)招聘互聯(lián)網(wǎng)

2011-03-07 15:24:17

LBS

2021-09-06 15:39:00

大數(shù)據(jù)技術(shù)醫(yī)療

2015-09-18 11:28:23

2015-08-03 13:36:40

Docker技術(shù)優(yōu)勢(shì)應(yīng)用場(chǎng)景

2020-12-21 14:42:42

大數(shù)據(jù)云計(jì)算人工智能

2012-10-23 09:32:07

2010-06-30 17:02:07

靜態(tài)路由

2018-09-04 12:03:31

HBase大數(shù)據(jù)存儲(chǔ)

2018-11-09 10:52:03

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

2010-08-31 19:45:26

DHCP server

2018-03-20 10:37:33

存儲(chǔ)大數(shù)據(jù)管理

2023-07-19 16:22:00

Hudi機(jī)器學(xué)習(xí)

2015-08-04 17:45:54

Docker應(yīng)用

2017-03-08 10:29:06

HBase大數(shù)據(jù)存儲(chǔ)

2013-09-09 15:55:12

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

2022-09-05 14:46:01

元宇宙區(qū)塊鏈人工智能

2015-09-25 10:39:16

大數(shù)據(jù)工具應(yīng)用場(chǎng)景
點(diǎn)贊
收藏

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