基于HBase分布式数据库海量数据序列存储优化

2021-03-08 10:14邓杰铭王榆心张柯汇王彦青宾茂梨
科学与财富 2021年4期

邓杰铭 王榆心 张柯汇 王彦青 宾茂梨

摘 要:针对海量数据分布式序列数据量大、增长速度快、序列重复性高等特点,结合HBase分布式数据库的相关理论和技术提出并实现了一套基于HBase的海量数据分布式序列存储方案。该方案设计了基于分布式数据分类码的预分区和行键优化策略,解决了服务器的均衡负载问题。通过构造文件索引替代二进制码序列实现了数据的高效存取。利用HBase协处理器实现了分布式序列记录单次提交多表插入的功能,提升了分布式多格式存储的效率。实验表明,通过上述方案设计的分布式序列存储系统具有良好的存储能力和扩展性。

关键词:HBase;分布式序列;分类码;文件索引;协处理器

0 引言

在海量数据存储方案中,以hadoop[1]分布式文件系统hdfs为基础的HBase数据库经过不断的发展完善得到了更加广泛的应用,特别以Facebook Message 系统对HBase 的应用为世界知名。HBase 本身作为谷歌公司Bigtable的开源实现,除了具有分布式、版本化、可扩展性的特征外,它与分布式计算框架如mapreduce  和spa-rk 等具有良好的结合性,这对于大数据量的科研工作非常便捷。本文以海量数据存储方式作为研究对象,结合当前分布式序列文件存储格式的特点,设计了基于HBase的分布式序列存储系统,利用基于数据分类码的预分区行键设计策略和协处理器机制对该系统进行优化,并通过实验验证该系统的可行性。

1 系统设计与实现

1.1 数据表设计

对HBase表进行设计时,列族数量不宜过多,因为HBase 表的列族对应于 HBase 物理存储结构 Store,当Store中的memstore达到flushing阀值时会触发所有列族的flushing操作,所以列族数量尽量控制在1到2个。根据 HBase 表设计相关原则,对GBFF格式和FASTA格式应分别建表,两表都只设置一个列族Column Family,在设计相应列名Column Qua-lifier时,特别针对GBFF格式文件第二部分特性FEA-TURES中包含多个子属性的结构,列名需将FEATURES作为前缀与子属性结合,如“FEATURES_source”这种形式,这样可以满足表中只存在一个列族的设计要求。

1.2 针对序列数据的预分区和行健优化策略

行键Rowkey 是HBase 数据表的主键,Rowkey[2] 的唯一性标示行记录的唯一性。由于HBase数据库只维护了主键Rowkey的索引,所以对Rowkey的设计直接影响数据的查询和整个集群的region分配,本系统设计方案中选取分布式序列记录检索号(ACCESSION)作为行键Rowkey的主要组成部分。在HBase中以检索号AC-CESSION作为行键Rowkey,由于Rowkey的排序默认字典序升序,虽然对于scan操作效率很高,但是同样易造成之前所述的局部热点问题  ,因此对于每一条分布式序列记录,提出一种结合预分区机制的行键生成策略。

(1) 设预分区Region数为N,当前分布式序列所属分类码Division[3]下的分布式序列数据量占比为A i ,由此可得该分类码所需的region数D i =N·A i ;

(2) 当前分布式序列检索号ACCESSION中的整数部分对D i 取模得到值S,将分类码与整数值S拼接得到字符串prefix。

(3) 对字符串prefix 做MD5哈希生成16位字符串prefixMD5,将字符串 prefixMD5 前 7 位与检索号 AC-CESSION拼接为16位Rowkey。

上述操作完成后即生成所需行键Rowkey,例如检索号为AB000100的分布式序列,其所属分类码为BCT,取模值为1,对应的Rowkey为“74378dc_ AB000100”。

1.3 协处理器优化

本文利用HBase协处理器Coprocessor实现单次提交多表插入的功能来解决上述问题。HBase提供了一套完整的Coprocessor[4]开发接口,采用java语言封装,主要有三种可供实现的协处理器:Co-processor、RegionObserver 和 Endpoint。RegionObse-rver给出了HBase表相关操作的钩子函数。

2实验结果与分析

查询性能比较基于4台服务器共200个并发线程的环境下进行,从表中可以看出在大数据量查询时,优化方案性能优势非常明显.

3 结束语

本文针对海量数据分布式序列多年来快速增长导致的存储维护问题,以海量数据分布式序列为研究对象,对分布式序列数据的组成结构和当前主流的 GBFF 和FASTA序列文件存储格式进行研究分析,结合HBase数据库的存储模型和HBase分布式存储的相关特性,对分布式序列在HBase数据库中的存储进行多维度的优化。实验结果表明经过优化设计的分布式序列存储方案具有更好的存储和查询扫描性能,同时该方案可以把分布式序列数据与基于hadoop的大数据分析工具良好地耦合,使分布式序列的研究分析更加便捷,满足了当前云计算环境下对分布式序列数据高效存取的需求。未来的研究工作主要针对分布式序列数据的压缩优化和索引优化以及对序列数据的版本控制。

参考文献:

[1] 王铭,田茂,赵鑫,等.基于Hadoop平台的数据迁移方法研究实现[J].计算机测量与控制,2018,26(4):225-230.

[2] 郑通,郭衛斌,范贵生.HDFS中海量小文件合并与预取优化方法的研究[J].计算机科学,2017,44(S2):516-519,541.

[3] 樊路遥,张晶,陈小龙,等.开源大数据框架在海洋信息处理中的应用[J].科技导报,2017,35(20):126-133.

[4] 周华平,刘光宗,张贝贝.基于索引偏移的MapReduce聚类负载均衡策略[J].计算机科学,2018,45(5):303-309.

[5] 丁祥武,解书亮,李继云.基于Spark的并行ETL[J].计算机工程与设计,2017,38(9):2580-2585.