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