数据处理方法及其系统转让专利

申请号 : CN201610417289.6

文献号 : CN107506356B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 侍建超

申请人 : 北京京东尚科信息技术有限公司北京京东世纪贸易有限公司

摘要 :

本发明是关于一种数据处理方法及其系统,属于数据处理技术领域。该方法包括:将一数据仓库中的冷数据转移存储于一冷数据集群中;监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。本发明能够提高冷数据存储的灵活性,自动控制冷数据集群与数据仓库之间的数据转移。

权利要求 :

1.一种数据处理方法,其特征在于,包括:

将一数据仓库中的冷数据转移存储于一冷数据集群中;

监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;

根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;

当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。

2.根据权利要求1所述的方法,其特征在于,其中将该数据仓库中的该冷数据转移存储于该冷数据集群中包括:配置系统定时扫描所述数据仓库中的数据分区;

判断各个数据分区是否在预设时长内被访问;

将在所述预设时长内没有被访问的数据分区内的数据定义为冷数据,并将所述冷数据从所述数据仓库中转移存储至所述冷数据集群,且从所述数据仓库中删除相应的冷数据。

3.根据权利要求1或2所述的方法,其特征在于,其中监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对包括:解析所述查询语句,从所述查询语句中获取当前要查询的数据的表名称及该表名称对应的表的数据分区范围;

解析用于存储文件和目录的元数据信息的fsimage文件,通过该fsimage文件中该表的元数据信息获取其中的数据分区信息;

通过比对当前要查询的数据对应的该表的所述数据分区范围和所述数据分区信息,确定当前要查询的数据是否全部位于所述数据仓库内。

4.根据权利要求1所述的方法,其特征在于,还包括:当所述查询语句查询的数据没有全部位于所述数据仓库中时,发出一自动提醒信息,其用于提醒当前发起查询的用户,当前查询的数据中没有位于所述数据仓库中的数据部分已被转移至所述冷数据集群;

当接收到该用户发送的确认拉回相应的冷数据请求时,则将所述冷数据自动拉回所述数据仓库。

5.根据权利要求4所述的方法,其特征在于,其中将所述冷数据自动拉回所述数据仓库包括:当接收到该用户发送的确认拉回相应的冷数据请求时,触发一预先配置的调度程序;

将该表名称、确认拉回的冷数据对应的数据分区作为参数传递给所述调度程序;

所述调度程序将相应的冷数据自动拉回所述数据仓库。

6.根据权利要求5所述的方法,其特征在于,还包括:比对所述冷数据集群与所述数据仓库中该被拉回的冷数据对应的数据分区的文件大小;

若两者文件大小一致,则删除所述冷数据集群中该被拉回的冷数据对应的数据分区上的数据;

若两者文件大小不一致,则删除所述数据仓库中该被拉回的冷数据,所述调度程序重新执行将相应的冷数据自动拉回所述数据仓库。

7.一种数据处理系统,其特征在于,包括:

转移模块,其用于将一数据仓库中的冷数据转移存储于一冷数据集群中;

监控模块,其用于监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;

判断模块,其用于根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;

拉回模块,其用于当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。

8.根据权利要求7所述的系统,其特征在于,其中所述监控模块包括:第一解析单元,其用于解析所述查询语句,从所述查询语句中获取当前要查询的数据的表名称及该表名称对应的表的数据分区范围;

第二解析单元,其用于解析用于存储文件和目录的元数据信息的fsimage文件,通过该fsimage文件中该表的元数据信息获取其中的数据分区信息;

比对单元,其用于通过比对当前要查询的数据对应的该表的所述数据分区范围和所述数据分区信息,确定当前要查询的数据是否全部位于所述数据仓库内。

9.根据权利要求7所述的系统,其特征在于,还包括:提醒模块,其用于当所述查询语句查询的数据没有全部位于所述数据仓库中时,发出一自动提醒信息,其用于提醒当前发起查询的用户,当前查询的数据中没有位于所述数据仓库中的数据部分已被转移至所述冷数据集群;当接收到该用户发送的确认拉回相应的冷数据请求时,则调用所述拉回模块将所述冷数据自动拉回所述数据仓库。

10.根据权利要求9所述的系统,其特征在于,其中所述拉回模块包括:触发单元,其用于当接收到该用户发送的确认拉回相应的冷数据请求时,触发一预先配置的调度程序;

参数传递单元,其用于将该表名称、确认拉回的冷数据对应的数据分区作为参数传递给所述调度程序;

自动拉回单元,其用于所述调度程序将相应的冷数据自动拉回所述数据仓库。

11.一种电子设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

将一数据仓库中的冷数据转移存储于一冷数据集群中;

监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;

根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;

当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。

12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。

说明书 :

数据处理方法及其系统

技术领域

[0001] 本发明涉及数据处理技术,尤其涉及一种数据处理方法及其系统。

背景技术

[0002] 随着互联网及电商的快速发展、业务形式的多样化以及人们对互联网依赖程度的增加,企业数据仓库所承载的数据量呈现爆发式的增长,海量数据的存储、加工与查询也给集群带来了非常大的挑战。
[0003] 有些久远的数据并不会被经常调用,但是又有可能偶尔用到,所以不能删除这些数据,随着时间的增长,这样的数据会越来越多,不仅存储起来比较浪费空间,如果使用不当,还会大大降低查询效率。如何有效地管理海量数据,成为集群管理者越来越重视的话题。
[0004] 数据仓库中大部分事实表是按照一定的业务时间,进行分区存储。一样的业务时间,存储在同一个分区中,以dt表示分区。使用这些事实表的时候,只要知道自己需要的数据大概在什么分区中,就可以通过限定分区范围来降低查询范围,提高查询效率。因此,现有技术中,通过扫描数据仓库中的表每天被查询的分区,一旦发现某分区的数据在一定时间内没有被查询,那么,将该分区的数据转移到冷数据集群,以节省集群资源,节省磁盘空间。
[0005] 以用户基本信息表gdm_m01_userinfo_basic_sum为例,该表以用户注册时间作为时间戳,将相同时间戳的数据放入对应的分区,例如dt=‘2016-03-08’分区中,存放注册时间为2016年3月8日注册的用户的相关信息。随着时间的积累,该表分区越来越多,并且很多历史数据并不会经常使用,当自动扫描程序扫描到dt=‘2013-01-01’的分区在90天内没有访问,那么,系统自动将该分区转移到冷数据集群,当某一分区一旦被转移到冷数据集群以后,再在数据仓库中查询该分区的数据时,不会查到该数据。如果有需要用到已转移到冷数据集群的数据,就需要提起冷数据恢复申请,等待专业的人员再将该数据转移回来。
[0006] 这样,一旦数据被转移到冷数据集群,在数据仓库中将查不到该数据,当有用户要查询该数据时,查询结果错误。不了解冷数据拉取规则的,将会质疑数据的完整性,导致用户去查找数据异常的原因,原因找到以后,需要提交申请,将冷数据重新拉回,才能正常使用,极大的增加了工作量。
[0007] 因此,需要一种新的数据处理方法及其系统。
[0008] 在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

[0009] 本发明提供一种数据处理方法及其系统,能够提高冷数据存储的灵活性。
[0010] 本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
[0011] 根据本发明的一方面,提供一种数据处理方法,包括:将一数据仓库中的冷数据转移存储于一冷数据集群中;监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。
[0012] 根据本发明的一实施方式,其中将该数据仓库中的该冷数据转移存储于该冷数据集群中包括:配置系统定时扫描所述数据仓库中的数据分区;判断各个数据分区是否在预设时长内被访问;将在所述预设时长内没有被访问的数据分区内的数据定义为冷数据,并将所述冷数据从所述数据仓库中转移存储至所述冷数据集群,且从所述数据仓库中删除相应的冷数据。
[0013] 根据本发明的一实施方式,其中监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对包括:解析所述查询语句,从所述查询语句中获取当前要查询的数据的表名称及该表名称对应的表的数据分区范围;解析用于存储文件和目录的元数据信息的fsimage文件,通过该fsimage文件中该表的元数据信息获取其中的数据分区信息;通过比对当前要查询的数据对应的该表的所述数据分区范围和所述数据分区信息,确定当前要查询的数据是否全部位于所述数据仓库内。
[0014] 根据本发明的一实施方式,还包括:当所述查询语句查询的数据没有全部位于所述数据仓库中时,发出一自动提醒信息,其用于提醒当前发起查询的用户,当前查询的数据中没有位于所述数据仓库中的数据部分已被转移至所述冷数据集群;当接收到该用户发送的确认拉回相应的冷数据请求时,则将所述冷数据自动拉回所述数据仓库。
[0015] 根据本发明的一实施方式,其中将所述冷数据自动拉回所述数据仓库包括:当接收到该用户发送的确认拉回相应的冷数据请求时,触发一预先配置的调度程序;将该表名称、确认拉回的冷数据对应的数据分区作为参数传递给所述调度程序;所述调度程序将相应的冷数据自动拉回所述数据仓库。
[0016] 根据本发明的一实施方式,还包括:比对所述冷数据集群与所述数据仓库中该被拉回的冷数据对应的数据分区的文件大小;若两者文件大小一致,则删除所述冷数据集群中该被拉回的冷数据对应的数据分区上的数据;若两者文件大小不一致,则删除所述数据仓库中该被拉回的冷数据,所述调度程序重新执行将相应的冷数据自动拉回所述数据仓库。
[0017] 根据本发明的再一个方面,提供一种数据处理系统,包括:转移模块,其用于将一数据仓库中的冷数据转移存储于一冷数据集群中;监控模块,其用于监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;判断模块,其用于根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;拉回模块,其用于当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。
[0018] 根据本发明的一实施方式,其中所述监控模块包括:第一解析单元,其用于解析所述查询语句,从所述查询语句中获取当前要查询的数据的表名称及该表名称对应的表的数据分区范围;第二解析单元,其用于解析用于存储文件和目录的元数据信息的fsimage文件,通过该fsimage文件中该表的元数据信息获取其中的数据分区信息;比对单元,其用于通过比对当前要查询的数据对应的该表的所述数据分区范围和所述数据分区信息,确定当前要查询的数据是否全部位于所述数据仓库内。
[0019] 根据本发明的一实施方式,还包括:提醒模块,其用于当所述查询语句查询的数据没有全部位于所述数据仓库中时,发出一自动提醒信息,其用于提醒当前发起查询的用户,当前查询的数据中没有位于所述数据仓库中的数据部分已被转移至所述冷数据集群;当接收到该用户发送的确认拉回相应的冷数据请求时,则调用所述拉回模块将所述冷数据自动拉回所述数据仓库。
[0020] 根据本发明的一实施方式,其中所述拉回模块包括:触发单元,其用于当接收到该用户发送的确认拉回相应的冷数据请求时,触发一预先配置的调度程序;参数传递单元,其用于将该表名称、确认拉回的冷数据对应的数据分区作为参数传递给所述调度程序;自动拉回单元,其用于所述调度程序将相应的冷数据自动拉回所述数据仓库。
[0021] 根据本发明的另一个方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:将一数据仓库中的冷数据转移存储于一冷数据集群中;监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。
[0022] 本发明公开的数据处理方法及其系统,通过自动监控数据仓库的查询语句,判断当前要查询的数据是否全部位于该数据仓库,当表中的某一或某些分区数据已经被转移到冷数据集群时,执行自动拉回,从而能够实现冷数据集群与数据仓库之间的数据灵活转移,同时降低了数据仓库的数据量,也节省了集群资源。
[0023] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

[0024] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
[0025] 图1示意性示出根据本发明示例实施方式的数据处理方法的流程图;
[0026] 图2示意性示出根据本发明另一示例实施方式的数据处理方法的流程图;
[0027] 图3示意性示出图2所绘数据处理方法中的冷数据集群和数据仓库中的数据存储示意图;
[0028] 图4示意性示出图2所绘数据处理方法中提醒用户的对话框示意图;
[0029] 图5示意性示出图2所绘数据处理方法中数据拉回成功的对话框示意图;
[0030] 图6示意性示出根据本发明示例实施方式的数据处理系统的框图。

具体实施方式

[0031] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
[0032] 此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、系统、步骤等。在其它情况下,不详细示出或描述公知结构、方法、系统、实现、材料或者操作以避免喧宾夺主而使得本发明的各方面变得模糊。
[0033] 附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器系统和/或微控制器系统中实现这些功能实体。
[0034] 以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的系统和方法的例子。
[0035] 图1示意性示出根据本发明示例实施方式的数据处理方法的流程图。
[0036] 如图1所示,在步骤S110,将一数据仓库中的冷数据转移存储于一冷数据集群中。
[0037] 需要说明的是,本发明实施例中的数据仓库(Data Warehouse,可简写为DW或DWH)是为支持决策管理建立的,是面向主题、集成的、稳定的、随时间变化的数据集合。数据仓库是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
[0038] 数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
[0039] 数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到当前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
[0040] 冷数据是指在一定时间内没有被访问或者被使用的数据。冷数据集群是指利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。
[0041] 每个数据仓库都包含一个或者多个事实数据表(the fact table)。本发明实施例中所述表是指按照业务时间分区存储的事实表。事实数据表可能包含业务销售数据,如现金登记事务所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性维度表的主键,而维度表包含事实记录的特性。事实数据表不应该包含描述性的信息,也不应该包含除数字度量字段及使事实与维度表中对应项的相关索引字段之外的任何数据。
[0042] 例如:
[0043] 客户基本情况表(账号Integer9,姓名Character12,出生地Character20,初次交易时间Date,……)。
[0044] 客户变动情况表(账号Integer9,省Character20,市Character20,县Character20,街道Character20,邮政编码Character6,……)。
[0045] 商品交易情况表(账号Integer9,商品编号Character10,交易时间Date,交易量Number10,2,……)。
[0046] 在示例性实施例中,其中所述步骤S110进一步包括:
[0047] 步骤S111,配置系统定时扫描所述数据仓库中的数据分区。
[0048] 步骤S112,判断各个数据分区是否在预设时长内被访问。
[0049] 步骤S113,将在所述预设时长内没有被访问的数据分区内的数据定义为冷数据,并将所述冷数据从所述数据仓库中转移存储至所述冷数据集群,且从所述数据仓库中删除相应的冷数据。
[0050] 在步骤S120,监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对。
[0051] 在示例性实施例中,其中所述步骤S120进一步包括:
[0052] 步骤S121,解析所述查询语句,从所述查询语句中获取当前要查询的数据的表名称及该表名称对应的表的数据分区范围。
[0053] 步骤S122,解析用于存储文件和目录的元数据信息的fsimage文件,通过该fsimage文件中该表的元数据信息获取其中的数据分区信息。
[0054] 这里的元数据被定义为:提供关于信息资源或数据的一种结构化的数据,是对信息资源的结构化的描述。其作用为:描述信息资源或数据本身的特征和属性,规定数字化信息的组织,具有定位、发现、证明、评估、选择等功能。元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件(PE,Portable Executable,可移植的可执行的文件)文件或存储在内存中的程序进行描述。将代码编译为PE文件时,便会将元数据插入到该文件的一部分中,而将代码转换为Microsoft中间语言(MSIL,Microsoft Intermediate Language)并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时,运行库将元数据加载到内存中,并引用它来发现有关代码的类、成员、继承等信息。
[0055] 步骤S123,通过比对当前要查询的数据对应的该表的所述数据分区范围和所述数据分区信息,确定当前要查询的数据是否全部位于所述数据仓库内。
[0056] 在步骤S130,根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;当所述查询语句查询的数据没有全部位于所述数据仓库中时,进入下一步;反之,跳转到步骤S150。
[0057] 在步骤S140,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。
[0058] 在示例性实施例中,还包括:当所述查询语句查询的数据没有全部位于所述数据仓库中时,发出一自动提醒信息,其用于提醒当前发起查询的用户,当前查询的数据中没有位于所述数据仓库中的数据部分已被转移至所述冷数据集群;当接收到该用户发送的确认拉回相应的冷数据请求时,则将所述冷数据自动拉回所述数据仓库。
[0059] 在示例性实施例中,其中将所述冷数据自动拉回所述数据仓库包括:当接收到该用户发送的确认拉回相应的冷数据请求时,触发一预先配置的调度程序;将该表名称、确认拉回的冷数据对应的数据分区作为参数传递给所述调度程序;所述调度程序将相应的冷数据自动拉回所述数据仓库。
[0060] 在示例性实施例中,还包括:比对所述冷数据集群与所述数据仓库中该被拉回的冷数据对应的数据分区的文件大小;若两者文件大小一致,则删除所述冷数据集群中该被拉回的冷数据对应的数据分区上的数据;若两者文件大小不一致,则删除所述数据仓库中该被拉回的冷数据,所述调度程序重新执行将相应的冷数据自动拉回所述数据仓库。
[0061] 在步骤S150,结束。向用户返回查询结果。
[0062] 下面以所述预设时长为90天为例进行说明。当然,这里的预设时长可以根据系统需求自动设置的,并不以此为限。
[0063] 图2示意性示出根据本发明另一示例实施方式的数据处理方法的流程图。
[0064] 如图2所示,在步骤S210,配置系统自动扫描程序,定时(例如,每天凌晨开始)扫描该数据仓库中的表的各个分区的数据。
[0065] 数据仓库(例如,hive)的元数据存储在NameNode端的fsimage文件(持久化地存储文件和目录的元数据信息的文件)中,配置java程序,解析该fsimage文件,获取该文件中每个元数据的末次访问时间。
[0066] NameNode管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。NameNode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建。
[0067] fsimage是一个二进制文件,当中记录了HDFS(Hadoop Distributed File System,分布式文件系统)中所有文件和目录的元数据信息。把文件和目录的元数据信息持久化地存储到fsimage文件中,每次启动时从中将元数据加载到内存中构建目录结构树,之后的操作记录在edits log中。定期将edits与fsimage合并刷到fsimage中。loadFSImage(File curFile)用于从fsimage中读入NameNode持久化的信息。
[0068] 在步骤S220,判断该数据仓库中的表的各个分区的数据在最近90天是否有访问?如果有访问,则进入下一步;反之,跳转到步骤S240。
[0069] 将上述步骤中获取到的每个元数据以及对应的末次访问时间,存放到hive数据仓库的表中,将该表例如命名为Tab1,访问Tab1,获取末次访问时间在90天以前的元数据对应的表名以及分区名。
[0070] 在步骤S230,将最近90天有访问的分区对应的数据继续保留在该数据仓库中。
[0071] 在步骤S240,将最近90天无访问的分区对应的数据转移至所述冷数据集群。
[0072] 配置调度程序,该调度程序以上述获取的表名及分区名作为变量,执行distcp命令将末次访问时间在90天以前的表对应的分区的数据复制到该冷数据集群。
[0073] distcp(分布式拷贝)是用于集群内部或者集群之间拷贝数据的常用命令。它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。
[0074] 在示例性实施例中,还包括:distcp命令执行完以后,比对该冷数据集群与该数据仓库上该被复制的数据对应的文件大小,若大小一致,则执行rm命令(删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下的所有文件及子目录均删除),删除该数据仓库上已经转移至所述冷数据集群的数据;若大小不一致,则删除该冷数据集群中相应的数据,重新执行distcp命令,直至比对该冷数据集群与该数据仓库上的该被复制的数据对应的文件大小一致。其中,导致distcp命令执行完以后,导致该冷数据集群与该数据仓库上该被复制的数据对应的文件大小不一致的可能原因包括:在数据转移过程中,网络异常或者冷数据集群调整。
[0075] 拷贝完成后,建议生成源端和目的端文件的列表,并交叉检查,来确认拷贝真正成功。因为distcp使用Map/Reduce和文件系统API(Application Programming Interface,应用程序编程接口)进行操作,所以这三者或它们之间有任何问题都会影响拷贝操作。一些distcp命令的成功执行可以通过再次执行带-update参数的该命令来完成。
[0076] 值得注意的是,当另一个客户端同时在向源文件写入时,拷贝很有可能会失败。尝试覆盖HDFS上正在被写入的文件的操作也会失败。如果一个源文件在拷贝之前被移动或删除了,拷贝失败同时输出异常FileNotFoundException。
[0077] 以用户基本信息表gdm_m01_userinfo_basic_sum为例,假设该表有自dt=‘2010-01-01’至今的分区,其中,dt=‘2010-01-01’与dt=‘2013-01-01’之间的分区(包含这两天)的数据在90天内没有访问,那么,将该范围内的分区数据转移到冷数据集群,剩余分区数据仍保留在数据仓库。即转移以后,数据仓库的分区与冷数据集群的分区的总和,是该表的所有数据,两部分数据做到“不重不漏”,如图3所示。
[0078] 至此完成了将冷数据从数据仓库转移至冷数据集群的过程。
[0079] 在步骤S250,用户向所述数据仓库发出查询语句(例如,SQL查询语句)。
[0080] 在步骤S260,配置系统自动监控程序,所述自动监控程序检测所述数据仓库接收到的用户提交的查询语句。
[0081] 配置java程序,解析用户输入的SQL查询语句,从SQL查询语句中,获取本次查询的表名及分区范围。
[0082] 调用上述步骤S210中的同一java程序,解析fsimage文件,获取该文件中该表的元数据信息,获取其中的分区信息。
[0083] 在步骤S270,判断当前查询的数据是否全部位于所述数据仓库中?如果当前查询的数据全部位于所述数据仓库中,则进入下一步;反之,跳转到步骤S290。
[0084] 对比本次查询的表的分区范围与该数据仓库的同一表的分区信息,确认本次查询的表的分区范围是否在该数据仓库的同一表的分区范围内。
[0085] 例如,某用户需要查询用户基本信息表gdm_m01_userinfo_basic_sum的分区范围dt=’2012-01-01’至dt=’2014-01-01’内的数据,查询语句如下:
[0086] select*from gdm.gdm_m01_userinfo_basic_sum where dt>='2012-01-01'and dt<='2014-01-01',
[0087] 自动监控程序扫描监控到的该用户的SQL查询语句,提取其中的表名称“gdm.gdm_m01_userinfo_basic_sum”与分区范围“dt>='2012-01-01'and dt<='2014-01-01'”,将该查询语句的本次查询分区范围与数据仓库中该表的分区范围作比对,发现dt=’2012-01-01’至dt=’2013-01-01’的分区并不在数据仓库中。
[0088] 在步骤S280,直接输出本次查询结果。
[0089] 在步骤S290,当前查询的数据没有全部位于所述数据仓库中时,触发自动提醒程序,向该用户发出自动提醒。
[0090] 将上述步骤S270中比对出的数据仓库不存在的分区范围信息传送给自动提醒程序。弹出对话框(如图4所示),提醒用户所查询的数据的部分或者全部已被转移到冷数据集群,是否需要拉回。
[0091] 在另一发明实施例中,也可以不需要上述的自动提醒程序,当系统检测到本次查询的数据没有全部位于数据仓库时,自动执行拉回程序将相应的冷数据从冷数据集群中拉回到该数据仓库中。
[0092] 在步骤S2100,系统判断该用户是否确认需要拉回该没有位于所述数据仓库中的数据部分?当用户确认拉回时,进入下一步;反之,跳转到步骤S2120。
[0093] 在步骤S2110,调用自动拉回程序,将相应的冷数据从所述冷数据集群中自动拉回到所述数据仓库中。
[0094] 配置自动拉回程序,一旦用户选择需要从冷数据集群拉回到数据仓库,则触发自动拉回程序,将该查询语句中所需要的分区数据从冷数据集群中拉回到数据仓库中,拉回完成之后,自动提醒用户数据已拉回,供用户正常查询。
[0095] 在示例性实施例中,所述步骤S2110进一步包括:
[0096] 步骤S2111,配置调度程序,一旦用户选择拉回本次查询中没有位于数据仓库的数据,则触发该调度程序。
[0097] 步骤S2112,将本次查询的表名、需要拉回的分区作为参数传递给该调度程序。
[0098] 步骤S2113,该调度程序执行distcp命令,将相应的数据从冷数据集群拉回数据仓库。
[0099] 步骤S2114,distcp命令执行完以后,比对冷数据集群与数据仓库上的该相应数据所在的文件大小。若大小一致,则执行rm命令,删除冷数据集群上的相应数据;若大小不一致,则删除数据仓库中的相应数据,重新执行distcp命令,直至比对两者大小一致。
[0100] 步骤S2115,一旦拉回成功,返回成功标识,弹出拉回成功对话框(如图5所示)。
[0101] 在步骤S2120,仅输出存在于所述数据仓库中的数据部分。
[0102] 图6示意性示出根据本发明示例实施方式的数据处理系统的框图。
[0103] 如图6所示,该系统包括:转移模块610,其用于将一数据仓库中的冷数据转移存储于一冷数据集群中;监控模块620,其用于监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;判断模块630,其用于根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;拉回模块640,其用于当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。
[0104] 在示例性实施例中,其中所述监控模块620包括:第一解析单元,其用于解析所述查询语句,从所述查询语句中获取当前要查询的数据的表名称及该表名称对应的表的数据分区范围;第二解析单元,其用于解析用于存储文件和目录的元数据信息的fsimage文件,通过该fsimage文件中该表的元数据信息获取其中的数据分区信息;比对单元,其用于通过比对当前要查询的数据对应的该表的所述数据分区范围和所述数据分区信息,确定当前要查询的数据是否全部位于所述数据仓库内。
[0105] 在示例性实施例中,还包括:提醒模块,其用于当所述查询语句查询的数据没有全部位于所述数据仓库中时,发出一自动提醒信息,其用于提醒当前发起查询的用户,当前查询的数据中没有位于所述数据仓库中的数据部分已被转移至所述冷数据集群;当接收到该用户发送的确认拉回相应的冷数据请求时,则调用所述拉回模块将所述冷数据自动拉回所述数据仓库。
[0106] 在示例性实施例中,其中所述拉回模块640包括:触发单元,其用于当接收到该用户发送的确认拉回相应的冷数据请求时,触发一预先配置的调度程序;参数传递单元,其用于将该表名称、确认拉回的冷数据对应的数据分区作为参数传递给所述调度程序;自动拉回单元,其用于所述调度程序将相应的冷数据自动拉回所述数据仓库。
[0107] 本发明实施例中的模块对应上述方法实施例中的内容,在此不再详述。
[0108] 本发明实施方式还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:将一数据仓库中的冷数据转移存储于一冷数据集群中;监控所述数据仓库接收的查询语句,将所述查询语句中的表名称及该表名称对应的表的数据分区范围和所述数据仓库中相应表的同一数据分区范围进行比对;根据比对结果,判断所述查询语句查询的数据是否全部存储于所述数据仓库中;当所述查询语句查询的数据没有全部位于所述数据仓库中时,将存储于所述冷数据集群中的相应表中的、没有位于所述数据仓库中的数据分区范围部分的冷数据自动拉回所述数据仓库。
[0109] 所述电子设备可以是计算机系统或者服务器,以通用计算设备的形式表现。计算机系统/服务器的组件可以包括但不限于:一个或者多个处理器或者处理单元,系统存储器,连接不同系统组件(包括系统存储器和处理单元)的总线。
[0110] 总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0111] 计算机系统/服务器典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0112] 系统存储器可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)和/或高速缓存存储器。计算机系统/服务器可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统可以用于读写不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)。可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0113] 具有一组(至少一个)程序模块的程序/实用工具,可以存储在例如存储器中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本发明所描述的实施例中的功能和/或方法。
[0114] 计算机系统/服务器也可以与一个或多个外部设备(例如键盘、指向设备、显示器等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器交互的设备通信,和/或与使得该计算机系统/服务器能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,计算机系统/服务器还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器通过总线与计算机系统/服务器的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0115] 本发明公开的一种数据处理方法及其系统,根据数据被访问的情况,将90天未被访问的数据自动拉到冷数据集群,然后配置程序,时刻扫描数据仓库提交的查询语句,一旦发现某查询语句要查询的数据已经被转移到冷数据集群,则触发提醒设置,提示用户该数据已被转移,是否需要拉回,一旦用户选择是,则触发自动拉回程序,将对应数据所在分区自动拉回到数据仓库,这样,就不会影响用户的正常使用。
[0116] 图1和2示出根据本发明示例实施方式的数据处理方法的流程图。该方法可例如利用如图6所示的数据处理系统实现,但本发明不限于此。需要注意的是,图1和2仅是根据本发明示例实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,图1和2所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块/进程/线程中同步或异步执行的。
[0117] 通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施方式的方法。
[0118] 本发明实施例公开的数据处理方法及其系统,通过配置系统自动扫描程序、自动监控程序和自动拉回程序,根据用户需求,灵活掌握数据仓库与冷数据集群之间的数据转移,既降低了数据仓库的存储,节省了集群资源,提高了资源利用率,又保证了用户的正常使用,灵活掌握冷数据集群与数据仓库的数据转移,降低了数据仓库的数据量。
[0119] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0120] 以上具体地示出和描述了本发明的示例性实施方式。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。