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