应用Hbase高效存储海量数据的实现
2020-03-08张倩孙纯勇张亮
张倩 孙纯勇 张亮
【摘 要】本文将以分布式序列为例,应用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.