数据预分区存储周期表创建方法、装置、设备和存储介质与流程

文档序号:17476737发布日期:2019-04-20 06:10阅读:207来源:国知局
数据预分区存储周期表创建方法、装置、设备和存储介质与流程

本发明实施例涉及计算机技术,尤其涉及一种数据预分区存储周期表创建方法、装置、设备和存储介质。



背景技术:

hbase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力,对大数据提供随机、实时的读写访问功能。

hbase的数据分片按表进行,以行为粒度,基于主键(rowkey)范围进行拆分,每个分片称为一个区域(region),包含所有行的一个子集,保存一个表里面的某段连续的数据。一个集群有多张表,每张表划分为多个region,每台服务器服务很多region。region是hbase中分布式存储和负载均衡的最小单元,

面对大数据平台产生的海量日志数据,一般采用分表处理,按照周期表的管理方式,例如每月建立一张新表,存储对应日期范围内产生的数据。因为hbase表按照区域进行分布式存储和负载均衡,所以需要提前创建表分区,称之为预分区。如果采用固定的预分区文件创建新表,随着时间不断地推移,数据是不断地增长的,并且分布规律也会发生变化,可能导致已经分好的区域已经装不住更多的数据,同时会进一步进行分裂(split),分裂时会消耗宝贵的集群i/o资源,为了减少性能损耗问题,需要持续观察数据并定期维护,采取人工手动运维方式,不仅费时费力,还可能因为处理不及时给系统的稳定性带来巨大的风险。



技术实现要素:

本发明提供一种数据存储预分区周期表创建方法、装置、设备和存储介质,以提高数据存储系统的性能和稳定性。

第一方面,本发明实施例提供一种数据存储预分区周期表创建方法,包括:

配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数;

根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件;

根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表。

在第一方面一种可能的实现方式中,所述根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件,包括:

根据所述表的配置参数中的表名称规则和表创建周期,获取以上一周期的数据存储预分区周期表作为采样表;

根据所述表创建周期和表区域分裂阈值与合并阈值,动态计算调整所述采样表,得到所述表预分区文件。

在第一方面一种可能的实现方式中,所述根据所述表的配置参数中的表名称规则和表创建周期,获取以上一周期的数据存储预分区周期表作为采样表,包括:

在第一次创建数据存储预分区周期表是,使用预设的表初始预分区文件作为所述采样表。

在第一方面一种可能的实现方式中,所述根据所述表创建周期和表区域分裂阈值与合并阈值,动态计算调整所述采样表,得到所述表预分区文件,包括:

按区域循环遍历所述采样表的数据文件,计算每个区域的存储空间大小;

根据所述表创建周期和表区域分裂阈值与合并阈值判断所述每个区域的存储空间大小是否超过所述分裂阈值或所述合并阈值;

对存储空间大小是否超过所述分裂阈值或所述合并阈值的区域进行分裂或合并处理,得到所述表预分区文件。

在第一方面一种可能的实现方式中,所述根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表,包括:

根据创建需求,在所述表预分区文件中添加所述扩展参数,得到所述数据存储预分区周期表,所述扩展参数包括列族、压缩算法、数据块缓存属性、数据块大小、保存的版本数、最小存储版本数中的至少一种。

第二方面,本发明实施例还提供了一种数据存储预分区周期表创建装置,包括:

参数配置模块,用于配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数;

文件创建模块,用于根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件;

表创建模块,用于根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表。

在第二方面一种可能的实现方式中,所述文件创建模块,具体用于根据所述表的配置参数中的表名称规则和表创建周期,获取以上一周期的数据存储预分区周期表作为采样表;根据所述表创建周期和表区域分裂阈值与合并阈值,动态计算调整所述采样表,得到所述表预分区文件。

在第二方面一种可能的实现方式中,所述文件创建模块,具体用于按区域循环遍历所述采样表的数据文件,计算每个区域的存储空间大小;根据所述表创建周期和表区域分裂阈值与合并阈值判断所述每个区域的存储空间大小是否超过所述分裂阈值或所述合并阈值;对存储空间大小是否超过所述分裂阈值或所述合并阈值的区域进行分裂或合并处理,得到所述表预分区文件。

在第二方面一种可能的实现方式中,所述表创建模块,具体用于根据创建需求,在所述表预分区文件中添加所述扩展参数,得到所述数据存储预分区周期表,所述扩展参数包括列族、压缩算法、数据块缓存属性、数据块大小、保存的版本数、最小存储版本数中的至少一种。

第三方面,本发明实施例还提供了一种数据存储预分区周期表创建设备,其特征在于,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面任一种可能的实现方式的数据存储预分区周期表创建方法

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如第一方面任一种可能的实现方式的数据存储预分区周期表创建方法。

本发明实施例提供的数据存储预分区周期表创建方法、装置、设备和存储介质,首先配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数,然后根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件,最后根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表,这种方式使新创建的表尽可能符合数据增长规律,在数据随时间推移而变化时,也不会产生数据量过大的高负载热点区域,或者数据量很小甚至为空的低负载区域,让数据区域分布均衡,集群服务器负载均衡,从而提高集群的性能和稳定性,同时通过任务调度自动优化,避免人工手动运维,降低运营维护成本。

附图说明

图1为本发明实施例提供的数据存储预分区周期表创建方法实施例一的流程图;

图2为本发明实施例提供的数据存储预分区周期表创建方法实施例二的流程图;

图3为本发明实施例提供的数据存储预分区周期表创建装置实施例一的结构示意图;

图4为本发明实施例提供的数据存储预分区周期表创建设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

图1为本发明实施例提供的数据存储预分区周期表创建方法实施例一的流程图,如图1所示,本实施例提供的数据存储预分区周期表创建方法包括:

步骤s101,配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数。

本实施例提供的数据存储预分区周期表创建方法可以应用于hbase系统的数据存储。由于hbase的数据分表按表进行,传统的hbase表采用固定的预分区文件创建新的预分区歧周期表,但随着时间不断地推移,数据是不断地增长的,并且分布规律也会发生变化,就会带来以下问题:(1)已经分好的区域,或许已经装不住更多的数据,存在写热点问题,同时会进一步进行分裂,分裂时会消耗宝贵的集群i/o资源。(2)已有的预分区规则不适用现在的数据分布特征,很多区域出现没有数据或者数据量很小,会增加集群的管理代价,同时因数据区域分布不均衡也会降低集群的性能。(3)为了减少性能损耗问题,需要持续观察数据并定期维护,采取人工手动运维方式,不仅费时费力,还可能因为处理不及时给系统的稳定性带来巨大的风险。

为了解决上述问题,本实施例提供一种动态创建数据存储预分期周期表的方法,使新创建的表尽可能符合数据增长规律,在数据随时间推移而变化时,也不会产生数据量过大的高负载热点区域,或者数据量很小甚至为空的低负载区域,避免手工运维干预,提高集群的性能和稳定性。

首先,需要配置待创建数据存储预分区周期表的配置参数,所述参数信息包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数。其中,表名称规则一般由包含日期格式的字符串组成,例如:yyyy代表年,mm代表年中的月份,dd代表月份中的天数。表创建周期描述如何进行分表,可选择按年、月、周、固定天数等方式。面对存储海量数据的时候,需要进行分表处理,例如每月建立一张表,存储对应日期区间产生的数据,以便提高数据管理的效率。表区域分裂阈值与合并阈值用于在动态生成表预分区文件时,根据计算的表区域空间大小,评估是否需要对区域进行分裂或者合并。扩展参数包括列族、压缩算法、数据块缓存属性、数据块大小、保存的版本数、最小存储版本数等,用于在动态创建表时,更精确地描述表的功能特性。

所述配置参数可以存储于配置文件中,存储位置可以是本地文件系统,或者网络文件系统,以及其他配置管理系统。文件格式可以可扩展标记语言(extensiblemarkuplanguage,xml)、另一种标记语言(yetanothermarkuplanguage,yaml)等不同的内容格式。

步骤s102,根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件。

依据表名称规则和表创建周期,可以确定表的基本框架,一般地,还需要一个已经存在的表作为采样表,根据表名称规则和表创建周期,可以在多个采样表中确定所需使用的采样表。然后根据表区域分裂阈值与合并阈值对采样表中的区域是否需要分裂或合并进行调整,从而得到表预分区文件。由于现有技术中,主要是由于表中各区域的大小分配与存储的数据大小不匹配而会产生各种问题,因此,在本实施例中,采用表区域分裂阈值与合并阈值对各区域进行分裂或合并调整,从而可以使创建的新的数据存储预分区周期表满足新的数据的存储需求。

进一步地,创建表预分区文件的过程可以包括:首先根据所述表的配置参数中的表名称规则和表创建周期,获取以上一周期的数据存储预分区周期表作为采样表,依据表名称规则和创建周期,将最近一个周期表作为采样表,判断采样表是否存在,如果存在就依据采样表动态计算并生成表预分区文件,否则使用预设的表初始预分区文件作为所述采样表。然后再根据所述表创建周期和表区域分裂阈值与合并阈值,动态计算调整所述采样表,得到所述表预分区文件。

在本发明实施例提供的数据存储预分区周期表创建中,最重要的步骤就是对区域进行分裂或合并的处理。具体包括:按区域循环遍历所述采样表的数据文件,计算每个区域的存储空间大小;根据所述表创建周期和表区域分裂阈值与合并阈值判断所述每个区域的存储空间大小是否超过所述分裂阈值或所述合并阈值;对存储空间大小是否超过所述分裂阈值或所述合并阈值的区域进行分裂或合并处理,得到所述表预分区文件。对区域进行分裂或合并的具体处理流程将在后续实施例中进行进一步详细说明。

步骤s103,根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表。

步骤s102中创建的表预分区文件由于是根据表区域分裂阈值与合并阈值对区域大小进行分裂或合并调整的,因此创建的表预分区文件可以满足数据存储需求。然后再根据配置参数中的扩展参数,对表预分区文件进行进一步地扩展,最后实现数据存储预分区周期表的动态创建。具体地,首先根据表名称规则和创建周期,获取待创建的表名称,依据上述步骤生成的表预分区文件,以及扩展参数如表列族、压缩算法、数据块缓存属性、数据块大小、保存的版本数、最小存储版本数等参数信息,创建新表并上线提供存储访问服务。

本实施例提供的数据存储预分区周期表创建方法,首先配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数,然后根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件,最后根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表,这种方式使新创建的表尽可能符合数据增长规律,在数据随时间推移而变化时,也不会产生数据量过大的高负载热点区域,或者数据量很小甚至为空的低负载区域,让数据区域分布均衡,集群服务器负载均衡,从而提高集群的性能和稳定性,同时通过任务调度自动优化,避免人工手动运维,降低运营维护成本。

图2为本发明实施例提供的数据存储预分区周期表创建方法实施例二的流程图,如图2所示,本实施例提供的数据存储预分区周期表创建方法包括:

步骤s201、按区域循环遍历采样表的数据文件,计算每个区域的存储空间大小,放在映射表1中。

其中采样表的数据文件(hfile)是hbase存储数据的文件组织形式,分成数据块、元数据块、索引块以及文件尾描述四部分。每个hbase表包含多个区域,每个区域对应多个hfile文件,在区域的分裂和合并过程中,hfile也会相应的进行拆分和归并,可以通过遍历统计区域下的所有hfile文件大小来计算区域物理存储空间。

步骤s202、通过管理节点(hmaster)顺序获取每个区域的开始主键和结束主键,结合映射表1,获取区域对应的存储大小。

其中有两个重要的属性,开始主键(startkey)与结束主键(endkey)是hbase中的两个重要属性,表示这个region维护的rowkey范围,当需要读/写数据时,如果rowkey落在某个开始/结束主键范围内,那么就会确定到目标region,然后读/写到相关的数据。

步骤s203、判断区域大小是否超出分裂阈值。如果当前区域超出预设分裂阈值,则执行步骤s204,否则执行步骤s205。

步骤s204、分裂区域,计算区域的中间主键,输出到表分区列表中,并重置累计值。当区域大小超出预设分裂阈值时,为了避免此区域将来数据量进一步增加,避免成为热点区域而影响性能,需要进行分裂,然后将分裂信息输出到表分区列表中,重置累计值,跳转到步骤s202继续处理下一个区域。

步骤s205、累计连续区域存储大小。

步骤s206、判断累计值是否超出合并阈值。如果超出预设合并阈值,则执行步骤s207,否则跳转到步骤s202继续处理下一个区域。

步骤s207、合并区域,计算合并后的开始主键和结束主键,输出到表分区列表中,并重置累计值。对于数据量很小甚至为空的连续区域,需要进行合并,以便能够降低集群的管理负担,并让集群各节点尽量以负载均衡方式承担压力,提高集群性能。

步骤s208、判断表所有区域是否处理完毕?如果表的所有区域都处理完毕,则执行步骤s209,否则跳转到步骤s202继续处理下一个区域。

步骤s209、顺序读取表分区列表,输出到表预分区文件。当采样表的所有区域都进行了分裂或合并规则评估后,将优化后的表分区信息输出到预分区文件中,用于动态创建新表。

图3为本发明实施例提供的数据存储预分区周期表创建装置实施例一的结构示意图,如图3所示,本实施例提供的数据存储预分区周期表创建装置包括:

参数配置模块31,用于配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数。

文件创建模块32,用于根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件。

表创建模块33,用于根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表。

本实施例提供的数据存储预分区周期表创建装置用于实现图1所示数据存储预分区周期表创建方法的技术方案,其实现原理和技术效果类似,此处不再赘述。

进一步地,在图3所示实施例的基础上,所述文件创建模块32,具体用于根据所述表的配置参数中的表名称规则和表创建周期,获取以上一周期的数据存储预分区周期表作为采样表;根据所述表创建周期和表区域分裂阈值与合并阈值,动态计算调整所述采样表,得到所述表预分区文件。

进一步地,在图3所示实施例的基础上,所述文件创建模块32,具体用于按区域循环遍历所述采样表的数据文件,计算每个区域的存储空间大小;根据所述表创建周期和表区域分裂阈值与合并阈值判断所述每个区域的存储空间大小是否超过所述分裂阈值或所述合并阈值;对存储空间大小是否超过所述分裂阈值或所述合并阈值的区域进行分裂或合并处理,得到所述表预分区文件。

进一步地,在图3所示实施例的基础上,所述表创建模块33,具体用于根据创建需求,在所述表预分区文件中添加所述扩展参数,得到所述数据存储预分区周期表,所述扩展参数包括列族、压缩算法、数据块缓存属性、数据块大小、保存的版本数、最小存储版本数中的至少一种。

图4为本发明实施例提供的数据存储预分区周期表创建设备的结构示意图,如图4所示,该数据存储预分区周期表创建设备包括处理器41和存储器42;数据存储预分区周期表创建设备中处理器41的数量可以是一个或多个,图4中以一个处理器41为例;数据存储预分区周期表创建设备中的处理器41和存储器42可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器42作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请图1实施例中的数据存储预分区周期表创建方法对应的程序指令/模块(例如,数据存储预分区周期表创建装置中的参数配置模块31、文件创建模块32、表创建模块33)。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而数据存储预分区周期表创建设备的各种功能应用以及数据处理,即实现上述的数据存储预分区周期表创建方法。

存储器42可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据数据存储预分区周期表创建设备的使用所创建的数据等。此外,存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。

本申请实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种数据存储预分区周期表创建方法,该方法包括:

配置待创建数据存储预分区周期表的配置参数,所述配置参数包括表名称规则、表创建周期、表区域分裂阈值与合并阈值、扩展参数;

根据所述表的配置参数中的表名称规则、表创建周期和表区域分裂阈值与合并阈值创建表预分区文件;

根据所述表预分区文件和所述扩展参数,动态创建数据存储预分区周期表。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述数据存储预分区周期表创建装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1