国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于HBase的海量數(shù)據(jù)存儲和快速檢索

2019-05-24 14:11謝地王同喜
電腦知識與技術(shù) 2019年4期
關(guān)鍵詞:海量分布式

謝地 王同喜

摘要:隨著科技的發(fā)展,越來越多的信息需要被存儲到數(shù)據(jù)庫中。傳統(tǒng)的數(shù)據(jù)庫逐漸不能存儲海量的數(shù)據(jù),如何儲存海量數(shù)據(jù)是一個(gè)值得關(guān)注的問題。大數(shù)據(jù)的出現(xiàn),就是為了解決海量數(shù)據(jù)的存儲問題。隨著海量數(shù)據(jù)的不斷增加,傳統(tǒng)數(shù)據(jù)庫存儲空間也越來越大,數(shù)據(jù)操作性能變差,甚至最后可能導(dǎo)致服務(wù)器崩潰,且傳統(tǒng)數(shù)據(jù)庫擴(kuò)展費(fèi)用昂貴。基于列式存儲的HBase存儲技術(shù)能夠有效地處理海量數(shù)據(jù),通過列式存儲檢索能忽略掉部分列數(shù)據(jù)從而實(shí)現(xiàn)更快的檢索,研究海量數(shù)據(jù)的存儲與快速檢索能夠幫助我們高效的處理今后日益復(fù)雜的數(shù)據(jù),通過列式的分布式存儲技術(shù)將類似的數(shù)據(jù)存儲在一起壓縮率更高,檢索效率更好。

關(guān)鍵詞:HBase;海量;列式存儲;分布式;快速檢索

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2019)04-0014-02

1 引言

當(dāng)產(chǎn)生的億級別的數(shù)據(jù)被存儲到數(shù)據(jù)庫中,對數(shù)據(jù)操作的性能肯定會下降。當(dāng)對這一系列數(shù)據(jù)進(jìn)行檢索以及求和排序等操作的時(shí)候,訪問的速度會由于內(nèi)存占用過大而檢索速度降低,甚至?xí)l(fā)生數(shù)據(jù)庫丟失數(shù)據(jù),或者數(shù)據(jù)溢出等現(xiàn)象,有可能最后導(dǎo)致數(shù)據(jù)庫服務(wù)器崩潰,采用分布式HBase列式存儲技術(shù)能夠有效解決這些問題。在處理數(shù)據(jù)時(shí),可以將數(shù)據(jù)通過主節(jié)點(diǎn)分配到不同的節(jié)點(diǎn)上進(jìn)行并行處理。

2 國內(nèi)外研究現(xiàn)狀

伴隨科技的不斷進(jìn)步,各個(gè)行業(yè)都產(chǎn)生了大量的數(shù)據(jù),這些數(shù)據(jù)越來越多維化且復(fù)雜化,這些海量數(shù)據(jù)都是有用的,如何存儲這些海量的數(shù)據(jù)[4],以及如何實(shí)現(xiàn)海量數(shù)據(jù)的快速檢索以及讀寫操作,有著重要的意義。由此產(chǎn)生了對大數(shù)據(jù)的研究,大數(shù)據(jù)下產(chǎn)生各種適合存儲海量數(shù)據(jù)的數(shù)據(jù)庫,以及計(jì)算框架和模型,有利于快速存儲并檢索分析海量的數(shù)據(jù)。

在國內(nèi)為應(yīng)對海量數(shù)據(jù)的存儲及快速檢索,一些國內(nèi)的單位開始搭建自己的數(shù)據(jù)倉庫,比如中國銀行廣州分行就已經(jīng)建構(gòu)了屬于自己的數(shù)據(jù)倉庫,包括從數(shù)據(jù)的采集,處理以及海量數(shù)據(jù)的存儲已經(jīng)檢索方面,但是數(shù)據(jù)量相對來說比較小。比如網(wǎng)上購物平臺淘寶,每一個(gè)客戶相關(guān)的數(shù)據(jù)量級別至少是百萬以上,每天的數(shù)據(jù)量都是千億級別,萬億級別的數(shù)據(jù),而這些數(shù)據(jù)都是不能夠輕易地丟棄的,必須被實(shí)時(shí)存儲起來,并且能夠處理PB甚至比PB更高的實(shí)時(shí)數(shù)據(jù)。面對這些數(shù)據(jù),要構(gòu)建一個(gè)成本較低、高性能、高負(fù)載、分布式處理的海量數(shù)據(jù)庫,并且這些數(shù)據(jù)信息也包括圖片,視頻,本文,音頻等信息。淘寶公司采用了大數(shù)據(jù)技術(shù),用Hive數(shù)據(jù)倉庫和HBase數(shù)據(jù)庫對海量數(shù)據(jù)進(jìn)行存儲,查詢以及分析。HBase采用了分布式存儲檢索技術(shù),能夠多結(jié)點(diǎn)分布式處理這些數(shù)據(jù)。

Facebook每月的瀏覽量達(dá)到數(shù)億級別的瀏覽量,F(xiàn)acebook的照片量以及視頻音頻信息非常巨大,每個(gè)月超過數(shù)億級別的照片上傳到網(wǎng)站上面,同樣面對這些海量的數(shù)據(jù)信息。Facebook采用HBase來做數(shù)據(jù)的實(shí)時(shí)查詢以及檢索。

3 HBase存儲與快速檢索

3.1 HBase預(yù)分區(qū)存儲

把需要存儲的海量數(shù)據(jù)通過sqoop工具或者直接存儲到HBase表中,HBase數(shù)據(jù)庫在創(chuàng)建表的時(shí)候會自動分配出Region區(qū)域。在讀入數(shù)據(jù)的時(shí)候,數(shù)據(jù)會不停地存儲到這個(gè)Region區(qū)域中,直到這個(gè)分區(qū)足夠大的時(shí)候才會自動切分這些Region分區(qū),并且每個(gè)Region區(qū)域都存在著一個(gè)startKey和endKey,這兩個(gè)值確定了數(shù)據(jù)的存儲范圍,即當(dāng)Row Key的值落在某個(gè)區(qū)域就會被放入到某個(gè)Region區(qū)域。當(dāng)沒有對數(shù)據(jù)進(jìn)行分區(qū)的時(shí)候,當(dāng)數(shù)據(jù)達(dá)到一定值的時(shí)候會自動進(jìn)行分區(qū),由于在HBase本身的結(jié)構(gòu)特征,表中Row Key是通過升序方式進(jìn)行排序的,所以后面存入的數(shù)據(jù)都是被劃分到后面的一個(gè)區(qū)域中,前面的Region區(qū)域空間中并沒有存儲到后面導(dǎo)入的數(shù)據(jù),導(dǎo)致沒有完全填充滿數(shù)據(jù)。由于存儲的數(shù)據(jù)量非常大,會在該過程中會發(fā)生多次切分Region區(qū)域的情況,每次切分有一部分?jǐn)?shù)據(jù)都將不會被利用到,大大增加了存儲效率以及存儲空間,甚至可能導(dǎo)致HBase服務(wù)宕機(jī)。在應(yīng)對海量的數(shù)據(jù)時(shí),需要根據(jù)這些數(shù)據(jù)對表進(jìn)行分區(qū)處理,然后通過對Row Key進(jìn)行hash散列化,使這些海量數(shù)據(jù)能夠均勻地分布在Region分區(qū)內(nèi),從而大大提高Region區(qū)域的利用率。Region結(jié)構(gòu)圖如下:

算法思路:首先通過算法產(chǎn)生隨機(jī)的Row Key,這些行鍵會通過升序方式放入到一個(gè)集合中,然后進(jìn)行對對表進(jìn)行預(yù)分區(qū)處理,最后將這些Row Key均勻放入到分區(qū)塊中。通過 rowKeyGenerator類產(chǎn)生Row Key:

設(shè)置Region分區(qū)的數(shù)據(jù),需對Row Key進(jìn)行迭代遍歷,設(shè)置合適的Region分割值,最后將Row Key排序放入到相應(yīng)的塊中,完成預(yù)分區(qū)處理。

在預(yù)分區(qū)的過程中已經(jīng)設(shè)置好每次數(shù)據(jù)切割的split值,然后再將這些隨機(jī)產(chǎn)生的Row Key對應(yīng)到相應(yīng)的Region區(qū)域。減少了默認(rèn)的預(yù)分區(qū)過程中部分?jǐn)?shù)據(jù)塊中數(shù)據(jù)未填充滿,以及多次自動切分過程中的存儲效率問題,然后將這些海量的數(shù)據(jù)通過根據(jù)隨時(shí)產(chǎn)生的Row Key存儲到表結(jié)構(gòu)當(dāng)中。

3.2 HBase二級快速索引

將存儲的數(shù)據(jù)通過分區(qū)優(yōu)化策略,以及建表中列族優(yōu)化的策略將數(shù)據(jù)存儲到表中。為了實(shí)現(xiàn)海量數(shù)據(jù)的快速檢索,利用HBase表中的二級索引方式建立索引。傳統(tǒng)的一級索引方式只是將索引建立在Row Key中,只能基于Row Rey對數(shù)據(jù)進(jìn)行掃描,只能解決一些簡單的SQL語句。但是如果我們需要對HBase進(jìn)行一些不同列族之間的數(shù)據(jù)進(jìn)行聯(lián)合查詢的時(shí)候,我們必須要采取二級索引的方式,二級索引的方式必須要建立在Region級別之上,主要是為了防止將索引表和數(shù)據(jù)表建立在不同的Region區(qū)域下。

二級索引建立和查詢的思路過程:首先通過客戶端向各個(gè)Region區(qū)域發(fā)送消息,分別在各個(gè)Region區(qū)域建立索引,并存儲數(shù)據(jù)。檢索的過程是客戶端會向各個(gè)區(qū)域發(fā)送信息,各個(gè)Region區(qū)域會對相應(yīng)的數(shù)據(jù)進(jìn)行檢索,查詢,并將最后的結(jié)果返回給客戶端,客戶端獲取到數(shù)據(jù),最后提交數(shù)據(jù)。

(1)Region區(qū)域先建立起索引,索引信息如下:

(2)在Region收到客戶端發(fā)來的信息,建立Scanner對象對Region區(qū)域中的Row Key進(jìn)行搜尋:

(3)在搜尋的過程中會根據(jù)相應(yīng)的Row Key值進(jìn)行定位,得到索引的值。然后根據(jù)seekNext()方法得到下一個(gè)Row Key,然后得到索引過程中的值,后將相應(yīng)的值得到保存并將結(jié)果提高給客戶端實(shí)現(xiàn)數(shù)據(jù)的快速檢索。

通過二次索引能夠快速定位到需要檢索的數(shù)據(jù),有利于數(shù)據(jù)的快速檢索,并且能提高檢索效率,相比于一級索引具有更高的優(yōu)勢,更適合海量數(shù)據(jù)的檢索。

4 總結(jié)

傳統(tǒng)的數(shù)據(jù)庫已經(jīng)不再適合存儲海量的數(shù)據(jù),但可以通過將傳統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)通過sqooq工具導(dǎo)入到HBase中,通過HBase列式存儲能夠解決傳統(tǒng)數(shù)據(jù)庫在存儲海量數(shù)據(jù)時(shí)的難點(diǎn),加快數(shù)據(jù)的檢索效率。HBase列式存儲,主要是通過鍵值對方式進(jìn)行存儲,能夠支持實(shí)時(shí)的查詢,并且在數(shù)據(jù)導(dǎo)入到HBase表中可以先對表進(jìn)行預(yù)分區(qū)處理,使數(shù)據(jù)都能夠均勻地分布在每一個(gè)分區(qū)內(nèi),再采取二級索引的方式對數(shù)據(jù)進(jìn)行快速檢索,而傳統(tǒng)的行式存儲方式通過將一行行數(shù)據(jù)地放在同一個(gè)區(qū)域,在數(shù)據(jù)檢索時(shí)無法忽略無關(guān)的列,增加檢索耗時(shí)。當(dāng)然在為了加快數(shù)據(jù)檢索效率方面,可以將elasticResearch工具和HBase進(jìn)行聯(lián)合使用,elasticResearch主要是支持json數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的檢索,可以通過對HBase中的數(shù)據(jù)建立索引實(shí)現(xiàn)數(shù)據(jù)的快速定位。

參考文獻(xiàn):

[1] 李存琛. 海量數(shù)據(jù)分布式存儲技術(shù)的研究與應(yīng)用[D]. 北京郵電大學(xué),2012.

[2] 唐亦鵬. 海量數(shù)據(jù)研究系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 哈爾濱工業(yè)大學(xué),2014.

[3] 卓海藝. 基于HBase的海量數(shù)據(jù)實(shí)時(shí)查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京郵電大學(xué),2013.

[4] 齊方方. 海量數(shù)據(jù)存儲和準(zhǔn)實(shí)時(shí)查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 西南石油大學(xué),2015.

[5] Nick Dimiduk. HBase實(shí)戰(zhàn)[M]. 謝磊. 北京:人民郵電出版社,2013:1-315.

[6] 李軍. 大數(shù)據(jù):從海量到精準(zhǔn)[M] 北京:清華大學(xué)出版社,2014:1-302.

[7]趙剛. 大數(shù)據(jù)[M] 北京:電子工業(yè)出版社,2013 1-278.

[8] 付文靜. 基于HBase的大數(shù)據(jù)存儲查詢技術(shù)研究[D]. 電子科技大學(xué),2015.

[9] 馬翠云. 基于HBase的大規(guī)模數(shù)據(jù)存儲解決方案的設(shè)計(jì)和實(shí)現(xiàn)[D]. 山東大學(xué),2015.

[10] 馮曉普. HBase存儲的研究與應(yīng)用[D]. 北京郵電大學(xué),2014.

[11] Jeffrey Dean.Sanjy Ghemawat. MapReduce:Simplified data Process-ing On Large Clusters [J].Communications of the ACM,2005,51(1):107-113.

【通聯(lián)編輯:梁書】

猜你喜歡
海量分布式
一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
一個(gè)圖形所蘊(yùn)含的“海量”巧題
多通道海量數(shù)據(jù)記錄系統(tǒng)設(shè)計(jì)
一種海量衛(wèi)星導(dǎo)航軌跡點(diǎn)地圖匹配方法
西門子 分布式I/O Simatic ET 200AL
家庭分布式儲能的發(fā)展前景
基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲與組織研究