張倩 孫純勇 張亮
【摘? 要】本文將以分布式序列為例,應(yīng)用Hbase分布式數(shù)據(jù)庫的相關(guān)原理,設(shè)計與實(shí)現(xiàn)一套應(yīng)用Hbase的高效海量分布式序列數(shù)據(jù)存儲方案。此外,本文所提出的數(shù)據(jù)存儲方案還結(jié)合了分布式數(shù)據(jù)分類碼的預(yù)分區(qū)和行鍵優(yōu)化策略,并以此為基礎(chǔ)有效解決海量數(shù)據(jù)存儲過程中服務(wù)器均衡負(fù)載問題,并通過構(gòu)建文件索引二進(jìn)制碼序列的方式實(shí)現(xiàn)數(shù)據(jù)信息的高效存儲效果,應(yīng)用Hbase協(xié)處理器實(shí)現(xiàn)分布式序列記錄單提交多表插入等功能效率,最終多種方式結(jié)合實(shí)現(xiàn)分布式多格式高效存儲。
【關(guān)鍵詞】Hbase;分布式序列;高效存儲;海量數(shù)據(jù)
引言
Hbase作為一種開源的非關(guān)系型分布式數(shù)據(jù)庫,其模型參考了谷歌的BigTable建模,因此Hbase不僅具有分布式、版本化、可拓展等特性,而且還與MapReduce、Spark等分布式計算機(jī)框架具有較好的結(jié)合性效果,該些內(nèi)容均有利于海量數(shù)據(jù)的高效存儲實(shí)現(xiàn),進(jìn)而為大數(shù)據(jù)科研工作提供便捷性支持。
1.Hbase概述
Hbase具有高性能、高可靠性、面向列、可伸縮等特點(diǎn),在海量數(shù)據(jù)存儲中應(yīng)用Habse不僅可以降低構(gòu)建大規(guī)模結(jié)構(gòu)化存儲集群成本,而且還可以提高海量數(shù)據(jù)的存儲效率。Hbase作為一種開源的非關(guān)系型分布式數(shù)據(jù)庫,其與關(guān)系型數(shù)據(jù)庫的主要區(qū)別在于Hbase表邏輯具有稀疏、有序等特征,可以視作為多維映射表。Hbase表邏輯主要由列族(Column Family)、列名(Column Qualifier)、單元(Cell)、表(Table)、行(Row)以及時間戳(Timestamp)組成,其中每一個時間戳均會對應(yīng)一個版本(Version),表中單元Cell與其他表邏輯組成內(nèi)容之間的基本關(guān)系如下:
從基本原理上來看,Hbase會將表分為多個Region,并將其分發(fā)到各個服務(wù)器中進(jìn)行存儲,其中每個Region則會由多個Store組成,每個Store則會分別對應(yīng)表中的一個列族;Store則是由一個memstore和0個到多個storefile組成,其中menstore主要做作為一個寫緩存存在,其會根據(jù)Hbase所預(yù)設(shè)的相關(guān)參考大小來控制flush操作生成storefile,最終storefile則會分解成為諸多hfile,之后分別存儲到hdfs系統(tǒng)中。
2.Hbase系統(tǒng)設(shè)計與實(shí)現(xiàn)
2.1數(shù)據(jù)表設(shè)計
在對Hbase數(shù)據(jù)表進(jìn)行設(shè)計過程中,由于列族將會與物理儲存結(jié)構(gòu)中的Store相對應(yīng),而當(dāng)Store中的memstore的大小超過預(yù)設(shè)參數(shù)閥值后,便會執(zhí)行flush操作,所以數(shù)據(jù)表中的列族數(shù)量不應(yīng)設(shè)置過多,最佳數(shù)量為1個或者2個。此外,每個列族中的數(shù)據(jù)記錄量也需要控制在一定范圍內(nèi),過多的數(shù)據(jù)記錄量將會導(dǎo)致數(shù)據(jù)分散到多個RegionServer節(jié)點(diǎn)中,進(jìn)而影響設(shè)計中對海量數(shù)據(jù)的查詢效果?;谏鲜鲆螅謩e進(jìn)行GBFF和FASTA兩種格式的數(shù)據(jù)表構(gòu)建,并且在兩種數(shù)據(jù)表中均只會設(shè)置一個列族。在進(jìn)行數(shù)據(jù)表列名設(shè)計時,則會將GBFF格式文件中第二部分特性FEATURES作為列名前綴,再與子屬性相結(jié)合,構(gòu)建出如FEATURES_Source形式的列名,如此將可以滿足上文中數(shù)據(jù)表設(shè)計的相關(guān)要求。
2.2分布式序列數(shù)據(jù)預(yù)分區(qū)與行鍵優(yōu)化
Hbase系統(tǒng)中region的不當(dāng)分配情況將會直接導(dǎo)致群熱點(diǎn)問題,促使客戶端對海量數(shù)據(jù)的存儲操作僅會作用于單個或者少量節(jié)點(diǎn),而剩余節(jié)點(diǎn)則會處于被閑置狀態(tài),此種情況不僅導(dǎo)致系統(tǒng)資源被無故浪費(fèi),還會降低Hbase系統(tǒng)的整體運(yùn)行性能。針對此種情況,Hbase預(yù)設(shè)有相應(yīng)的解決方案,常用的解決方案是通過手動方式對表功能進(jìn)行分區(qū),即在表創(chuàng)建構(gòu)建中采用預(yù)分區(qū),或者是在后期管理過程中對表進(jìn)行強(qiáng)制拆分或者是自動拆分。通過表分區(qū)將可以有效提高分布式集群的均衡負(fù)債能力,不過鑒于分區(qū)需要充分考慮數(shù)據(jù)本身的屬性及特點(diǎn),所以在實(shí)際分區(qū)前必須要對分布式序列數(shù)據(jù)的屬性和特征進(jìn)行充分考慮,最終選擇合適的分割點(diǎn)進(jìn)行分區(qū)活動。
分布式序列數(shù)據(jù)與普通數(shù)據(jù)存在較大差異性,其具有典型的同源性和多態(tài)性特點(diǎn),所以在進(jìn)行Hbase系統(tǒng)設(shè)計時,相關(guān)人員必須要對分布式序列數(shù)據(jù)進(jìn)行分析對比,然后確定各數(shù)據(jù)之間的同源性關(guān)系,進(jìn)而以此為基礎(chǔ)合理進(jìn)行分布式序列數(shù)據(jù)劃分歸納,為分區(qū)活動提供支持。在經(jīng)過多年的研究發(fā)展以后,如今對于海量分布式序列數(shù)據(jù)的分類管理已經(jīng)逐步形成相應(yīng)的標(biāo)準(zhǔn),并歸納出17種分類碼,可以有效提高分布式序列數(shù)據(jù)的分類分區(qū)效果。
在實(shí)際Hbase系統(tǒng)設(shè)計中,每種分類碼下的分布式序列數(shù)據(jù)量會也會所有不同,所以在進(jìn)行實(shí)際數(shù)據(jù)表構(gòu)建是,需要對每種分類碼下region數(shù)據(jù)進(jìn)行合理分配設(shè)置,具體分配策略和分割點(diǎn)需要根據(jù)行鍵來進(jìn)行合理設(shè)計。
行鍵(Rowkey)作為Hbase系統(tǒng)中數(shù)據(jù)表的主鍵,其具有標(biāo)識行記錄的唯一性特征。系統(tǒng)中行鍵行鍵設(shè)計將會直接影響到系統(tǒng)的海量數(shù)據(jù)查詢和集群分配效果,所以在設(shè)計中將會選擇分布式序列記錄檢索號(ACCESSION)來作為行鍵的主要組成內(nèi)容。此檢索號主要有兩個大寫字母和6個數(shù)字共同組成,且相鄰編號的海量數(shù)據(jù)分布式序列基于良好的同源性特點(diǎn),可以滿足設(shè)計要求。不過采用記錄檢索號作為行鍵后也會導(dǎo)致易出現(xiàn)局部熱點(diǎn)問題,所以在設(shè)計時還需要結(jié)合設(shè)計實(shí)際情況合理設(shè)計行鍵的預(yù)分區(qū)機(jī)制策略,避免出現(xiàn)局部熱點(diǎn)問題。
2.3文件索引
由于分布式序列數(shù)據(jù)中的二進(jìn)制編碼具有高重復(fù)性、長短不一等特性,并且某些分類碼下的二進(jìn)制編碼還會表現(xiàn)出數(shù)據(jù)量巨大等特征,所以在進(jìn)行實(shí)際Hbase系統(tǒng)設(shè)計時,不應(yīng)將分布式序列中的二進(jìn)制編碼之間作為系統(tǒng)存儲使用數(shù)據(jù),而是需要通過GBFF和FASTA兩種格式,將分布式序列中的具體序列進(jìn)行抽取,并生產(chǎn)相應(yīng)的序列文件,再將文件上傳到FTP文件系統(tǒng)中,并將上傳后的文件路徑作為文件索引存儲到Hbase系統(tǒng)中,此種方法不僅可以解決分布式序列數(shù)據(jù)二進(jìn)制編碼問題,而且還可以壓縮系統(tǒng)運(yùn)行的空間占用,進(jìn)一步提高系統(tǒng)的運(yùn)行性能。此外,基于Hbase系統(tǒng)的海量分布式序列數(shù)據(jù)存儲中存在的海量小文件存儲問題,常見解決方法愛的解決思路是將海量小文件進(jìn)行分類合并,構(gòu)成相應(yīng)的文件元數(shù)據(jù),然后通過對文件元數(shù)據(jù)進(jìn)行管理優(yōu)化設(shè)計的方式進(jìn)行解決,最后再通過加載索引文件的方式對文件元數(shù)據(jù)中的小文件進(jìn)行快速定位。
3.結(jié)語
本文以分布式序列數(shù)據(jù)為例,結(jié)合當(dāng)今市場上主流的GBFF和FASTA序列文件儲存格式進(jìn)行研究分析,進(jìn)而結(jié)合Hbase系統(tǒng)分布式存儲的實(shí)際原理及特點(diǎn),對應(yīng)用Hbase系統(tǒng)構(gòu)建相應(yīng)的分布式序列數(shù)據(jù)庫中,數(shù)據(jù)表、分布式序列數(shù)據(jù)預(yù)分區(qū)與行鍵優(yōu)化以及文件索引三方面內(nèi)容進(jìn)行設(shè)計研究,分析相關(guān)設(shè)計中存在的常見問題,并分別指出相應(yīng)的解決方案和優(yōu)化方法。結(jié)合當(dāng)今實(shí)際情況來看,該些解決方案和優(yōu)化方法將可以良好適應(yīng)大數(shù)據(jù)和云計算時代下對分布式序列數(shù)據(jù)高效存儲的實(shí)際要求,值得進(jìn)行普及推廣和應(yīng)用。
參考文獻(xiàn)
[1]王利琴,高衛(wèi)香,蘭軍,等.基于HBase的心電信號存儲系統(tǒng)的研究與實(shí)現(xiàn)[J].現(xiàn)代計算機(jī)(專業(yè)版),2018(04):79-82.
[2]陳銳,吳應(yīng)雙,曹杰,等.基于Hadoop和HBase的輸變電設(shè)備數(shù)據(jù)聚合平臺[J].電力大數(shù)據(jù),2020,v.23;No.249(03):68-74.
[3]傅智宙,王利明,唐鼎,等.基于同態(tài)加密的HBase二級密文索引方法研究[J].信息網(wǎng)絡(luò)安全,2020(4):55-64.