一种基于hive的数据老化方法、装置及设备与流程

文档序号:17090072发布日期:2019-03-13 23:20阅读:422来源:国知局
一种基于hive的数据老化方法、装置及设备与流程

本发明涉及数据老化处理技术领域,特别是涉及一种基于hive的数据老化方法。本发明还涉及一种基于hive的数据老化装置、设备及计算机可读存储介质。



背景技术:

hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为分布式计算任务执行。

目前,hive在用于大数据处理时,由于大数据本身具有存储量巨大的特点,特别是很多实际生产系统中,每日都有大量的新增数据,日益膨胀的数据对系统的存储资源有巨大的挑战。当分布式文件系统所依赖的物理磁盘占满时,不但新增数据无法写入,并且,原有的数据的计算由于涉及到临时文件生成的问题需要占用一定的磁盘空间,也导致受到很大的影响。

目前,当存储空间占满时,在不能增加硬件资源的情况下,只能通过手动选择存储表进行drop(一种删除操作)来释放空间,但是对于作为大数据仓库的分布式文件系统来说,从海量数据表中手工选择哪些表去drop,不仅筛选比较复杂,并且有可能误删还在使用的数据,准确率和可靠性较低。

因此,如何提供一种能够解决上述问题的基于hive的数据老化方法是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种基于hive的数据老化方法,能够实现对hive数据区的自动扫描及老化判断以及老化区的删除,效率高,且准确性和可靠性更高;本发明的另一目的是提供一种基于上述方法的装置、设备和计算机可读存储介质。

为解决上述技术问题,本发明提供了一种基于hive的数据老化方法,包括:

接收到对于hive的数据区的读写访问时,在hive的元数据库内刷新所述读写访问对应的数据区的访问时间记录;

判断当前是否满足预设扫描条件;

若满足所述预设扫描条件,则扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除所述老化区的内容。

优选地,所述数据区具体为hive的数据表分区。

优选地,所述预设扫描条件包括定时时间;所述判断当前是否满足预设扫描条件的过程包括:

判断当前时刻是否满足所述定时时间,若是,则满足所述预设扫描条件,否则,不满足所述预设扫描条件。

优选地,所述预设扫描条件包括hive所处的分布式系统的存储空间的占用率达到预设高载阈值;所述判断当前是否满足预设扫描条件的过程包括:

判断当前hive所处的分布式系统的存储空间的占用率是否达到预设高载阈值,若是,则满足所述预设扫描条件,否则,不满足所述预设扫描条件。

优选地,所述预设老化条件包括所述访问时间记录距当前时刻超出预设时间阈值。

优选地,所述预设老化条件包括所述访问时间记录属于全部访问时间记录中距离当前时刻最远的k个记录。

优选地,所述扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除所述老化区的内容的过程包括:

依次扫描并判断当前扫描的访问时间记录是否满足预设老化条件,若满足所述预设老化条件,则所述当前扫描的访问时间记录对应的数据区为老化区,并记录所述老化区的标识,继续扫描下一个访问时间记录;否则,直接扫描下一个访问时间记录,直至全部数据区的访问时间记录扫描完毕;

全部数据区的访问时间记录扫描完毕后,统一删除记录的全部标识对应的老化区的内容。

为解决上述技术问题,本发明还提供了一种基于hive的数据老化装置,包括:

时间记录模块,用于接收到对于hive的数据区的读写访问时,在hive的元数据库内刷新所述读写访问对应的数据区的访问时间记录;

扫描判断模块,用于判断当前是否满足预设扫描条件,若满足所述预设扫描条件,触发老化判断模块;

所述老化判断模块,用于则扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除所述老化区的内容。

为解决上述技术问题,本发明还提供了一种基于hive的数据老化设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如以上任一项所述的基于hive的数据老化方法的步骤。

为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上任一项所述的基于hive的数据老化方法的步骤。

本发明提供了一种基于hive的数据老化方法,在接收到对于hive数据区的读写访问时,首先在hive的元数据库内刷新该读写访问所对应的数据区的访问时间记录,即在hive的元数据库中保存有各个数据的访问时间记录,且该访问时间记录随着读写访问的进行实时刷新。后续本发明会在满足预设扫描条件时,对全部访问时间记录进行扫描并判断当前扫描的访问时间记录是否满足预设老化条件,若满足,则将该访问时间记录对应的数据区作为老化区,并在后续删除判断为老化区的数据区中的内容。可见,本发明通过设置预设扫描条件、预设老化条件以及为每个数据区设置访问时间记录,能够实现对hive数据区的自动扫描及老化判断,并对判断为老化区的数据区内容进行删除,整个过程不需要人为的参与,相比人工筛选的方法,工作量小,效率高,且不容易出现错误,准确性和可靠性更高。本发明还提供了一种基于上述方法的装置、设备和计算机可读存储介质,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种基于hive的数据老化方法的过程的流程图;

图2为本发明提供的另一种基于hive的数据老化方法的过程的流程图;

图3为本发明提供的另一种基于hive的数据老化方法的过程的流程图;

图4为本发明提供的一种基于hive的数据老化装置的结构示意图。

具体实施方式

本发明的核心是提供一种基于hive的数据老化方法,能够实现对hive数据区的自动扫描及老化判断以及老化区的删除,效率高,且准确性和可靠性更高;本发明的另一目的是提供一种基于上述方法的装置、设备和计算机可读存储介质。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种基于hive的数据老化方法,参见图1所示,图1为本发明提供的一种基于hive的数据老化方法的过程的流程图;该方法包括:

步骤s1:接收到对于hive的数据区的读写访问时,在hive的元数据库内刷新读写访问对应的数据区的访问时间记录;

可以理解的是,hive的数据区本质上是分布式文件系统(一般是hdfs)的一个目录,这里的访问时间记录也可以理解为数据访问时间戳,是用来反映每个数据区最新一次受到访问的时间。当然,由于目前的分布式文件系统的读写接口并不包含上述刷新访问时间记录的功能,因此,需要对目前的分布式文件系统的读写接口进行一定的改造,具体的改造方式本发明不做限定。

步骤s2:判断当前是否满足预设扫描条件,若满足预设扫描条件,进入步骤s3;若不满足,则重复本步骤操作;

可以理解的是,对于大数据的应用场景,hive的数据区数量非常多,相对应的访问时间记录也非常多。因此,若是实时的进行扫描的话,会给系统带来非常大的负担,也会占用很长的时间,并且hive的数据区中也并不是时时都会产生待删除的老化数据。因此,通过设定预设扫描条件,将该条件作为一个限定,使得只有在满足预设扫描条件的情况下才会进行一次扫描,从而删除一次hive数据区中老化的区域来释放空间。这种方式能够在满足自动删除老化区域的目的的前提下,尽可能的减少扫描及判断老化区的过程给系统所带来的负担。

步骤s3:扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除所述老化区的内容。

可以理解的是,访问时间记录表明的是其对应的数据区最近一次收到访问的时间,因此,访问时间记录距离当前越近,则表明该访问时间记录对应的数据区受到访问的时间距离当前越近,即目前该数据区内的数据较为活跃,这部分数据还在使用中。因此,通过判断访问时间记录是否满足预设老化条件,即够一定程度上筛选出哪部分数据区中的数据仍在使用,哪部分数据区已经很久没有收到访问,从而实现数据区老化与否的甄别。

本发明提供的一种基于hive的数据老化方法,在接收到对于hive数据区的读写访问时,首先在hive的元数据库内刷新该读写访问所对应的数据区的访问时间记录,即在hive的元数据库中保存有各个数据的访问时间记录,且该访问时间记录随着读写访问的进行实时刷新。后续本发明会在满足预设扫描条件时,对全部访问时间记录进行扫描并判断当前扫描的访问时间记录是否满足预设老化条件,若满足,则将该访问时间记录对应的数据区作为老化区,并在后续删除判断为老化区的数据区中的内容。可见,本发明通过设置预设扫描条件、预设老化条件以及为每个数据区设置访问时间记录,能够实现对hive数据区的自动扫描及老化判断,并对判断为老化区的数据区内容进行删除,整个过程不需要人为的参与,相比人工筛选的方法,工作量小,效率高,且不容易出现错误,准确性和可靠性更高。

其中,参见图2所示,图2为本发明提供的另一种基于hive的数据老化方法的过程的流程图。删除老化区的内容这一过程可以是在每确定一个数据区为老化区后,立即删除老化区的内容:即步骤s3的内容为:

步骤s311:判断当前是否包含未扫描的访问时间记录,若是,进入步骤s312;若否,则扫描结束;

步骤s312:对之前未扫描的访问时间记录进行扫描,并判断当前扫描的访问时间记录对应的数据区是否满足预设老化条件,若满足预设老化条件,则当前扫描的访问时间记录对应的数据区为老化区,进入步骤s41;否则,返回步骤s311;

即依次扫描并判断当前扫描的访问时间记录是否满足预设老化条件。

步骤s41:删除老化区的内容,会返回步骤s311。

可以理解的是,在本实施例中,在每扫描一个访问时间记录时,若该访问时间记录满足预设老化条件,则立即删除该访问时间记录对应的数据区中的内容,之后再继续扫描下一个访问时间记录。采用这种实时删除的方式的话,假如扫描过程中突然受到某些原因导致中断,无法继续扫描,则之前扫描出的老化区中的内容也已经完成了删除,实现了部分老化区的空间释放。这样使得之前的扫描过程没有白费,即使后续不再进行扫描,系统的存储空间也已经得到了一定程度的释放,可以允许后续正常工作。因此,这种删除老化区的方式,能够提高删除的可靠性。

在另一实施例中,参见图3所示,图3为本发明提供的另一种基于hive的数据老化方法的过程的流程图。删除老化区的内容这一过程也可以是:在全部访问时间记录的扫描完成后,统一删除扫描出来的全部老化区。即步骤s3的内容为:

步骤s321:判断当前是否包含未扫描的访问时间记录,若是,进入步骤s322;若否,进入步骤s42。

步骤s322:对之前未扫描的访问时间记录进行扫描,并判断当前扫描的访问时间记录对应的数据区是否满足预设老化条件,若满足预设老化条件,进入步骤s323;否则,返回步骤s321;

步骤s323:当前扫描的访问时间记录对应的数据区为老化区,并记录所述老化区的标识;之后返回步骤s321;

步骤s42:删除记录的全部标识对应的数据区的内容。

可以理解的是在本实施例中,并不是在每扫描到一个老化区后立即对其进行删除,而是仅记录下老化区的标识,之后继续扫描下一个访问时间记录,直到全部访问时间记录扫描完毕后,才会将记录的全部老化区数据统一进行删除。这种方式不需要每扫描到一个老化区后即进入中断程序去删除老化区中的内容,程序的连贯性更强。并且,相比一个老化区一个老化区单独删除的方式,本实施例这种统一删除的方式,在待删除的多个老化区位置连续的情况下,只需要找到这一连续区域的首尾地址即可实现整体的删除,删除效率更高。

在其他实施例中,在记录老化区时,也可以不记录老化区的标识,而是在老化区上添加标记,后续步骤s42调整为:删除包含标记的全部数据区。当然,在其他的实施例中,还可采用其他的方式来记录哪些数据区为老化区,本发明对此不作限定。

作为优选地,数据区具体为hive的数据表分区。

可以理解的是,在hive的应用场景中,数据是保存在数据表中的,但是一张数据表往往包含非常多的数据,例如包含有某一个项目一年的数据。由于这个数据量非常大,因此,一张数据表中往往同时包含有老化的数据和活跃的数据。因此,直接删除一张数据表中的数据或者保留一张数据表中的全部数据,均不是十分合适。故本实施例中优选将数据区限定为数据表分区,这里的数据表分区指的是数据表中的一部分内容,例如,可以为某一个月或者某一天的数据。这种情况下,使得每个数据区中的数据量较小,后续判断是否删除的时候也较为容易。当然,以上仅为一种优选实施例,数据区具体也可以为hive数据表,本发明对此不做限定。

其中,判断是否满足预设扫描条件的操作可以周期性进行,例如每隔1s进行,或者时间更短(即可以认为实时进行),当然,本发明不限定上述判断操作的进行周期,也不限定上述判断操作是否为周期性进行的。

作为优选地,预设扫描条件包括定时时间;判断当前是否满足预设扫描条件的过程包括:

判断当前时刻是否满足定时时间,若是,则满足预设扫描条件,否则,不满足预设扫描条件。

可以理解的是,在本实施例中,采用的是定时扫描的方式。这里的定时时间可以设置为某一个或某几个固定时刻,在当前时刻达到该固定时刻的时候,即触发扫描。例如,这里的固定时刻可以为中午12点。当然,本发明不限定这种情况下固定时刻的具体数值。另外,这里的定时时间还可以为扫描周期,例如,扫描周期可以设置为四个小时,此时判断当前时刻是否满足定时时间过程,即为判断当前时刻距离上一次触发扫描的时刻时间是否达到扫描周期,若达到,则满足预设扫描条件。本发明也不限定扫描周期的具体数值。以上仅为两种具体的实施例,仅是用于表明本实施例中采用的是定时扫描的方式,这里的定时时间的具体内容本发明不做限定。

在另一优选实施例中,预设扫描条件包括hive所处的分布式系统的存储空间的占用率达到预设高载阈值;判断当前是否满足预设扫描条件的过程包括:

判断当前hive所处的分布式系统的存储空间的占用率是否达到预设高载阈值,若是,则满足预设扫描条件,否则,不满足预设扫描条件。

可以理解的是,本实施例中是依据分布式系统的存储空间的占用率的情况来触发是否进行扫描,即当存储空间面临存储压力,需要释放空间的时候,则触发扫描。这里的预设高载阈值指的是存储空间的占用率的一个较高的阈值。当存储空间的占用率达到了预设高载阈值时,则表明此时存储空间需要进行释放。这里的预设高载阈值优选不设置为百分之百,因为当存储空间的占用率达到百分之百时,表明此时存储空间已经完全无法使用,但是,由于扫描需要一定的时间,这种情况下在扫描过程中,后续的数据无法进行保存,从而影响系统的正常使用。因此,优选在存储空间的占用率未达到百分之百时,即进行扫描,虽然此时存储空间的占用率很高,但是扫描过程中仍然可以进行使用,从而提高分布式系统的可靠性。当然,本发明不限定预设高载阈值具体数值。

以上几种预设扫描条件仅为几种优选实施例,在具体应用时,可以将以上几种预设扫描条件结合使用,或者也可以根据需求设置其他预设扫描条件,本发明对此不作限定。

另外,判断是否满足预设扫描条件的操作可以实时进行,或者按照预设周期,周期性地进行,本发明对此不作限定。

作为优选地,预设老化条件包括访问时间记录距当前时刻超出预设时间阈值。

可以理解的是,由于访问时间记录表明的是该数据区最近一次受到访问的时间。因此,当访问时间记录距当前时刻的时间超出了预设时间阈值时,即表明该访问时间记录对应的数据区已经很长时间没有收到访问了,该数据区中的数据属于非活跃数据,需要进行删除。反之该数据区中的数据属于活跃数据不能删除。这种判断方式能够从时间上直观的反应各个数据区中的数据的活跃程度,避免删除了活跃数据,删除的准确性较高。其中,上述预设时间阈值的数值可以根据实际情况进行设定,本发明对此不作限定。

在另一种优选实施例中,预设老化条件包括访问时间记录属于全部访问时间记录中距离当前时刻最远的k个记录。

可以理解的是,本实施例中,采用的删除方式是将全部访问时间记录中最长时间没有访问的k个记录进行删除。这种方式,在系统中的数据过多,需要删除,但是全部数据区的访问时间记录均距离当前时刻时间较短的时候,较为适用。因为这种情况下,必须要对部分数据区中的数据进行删除。因此,本实施例从这些数据区中找到最不活跃的k个数据区进行删除。这种方式能够保证在任何情况下只要系统中的数据过多,均能够找到相应的数据区进行删除,从而实现空间的释放,尽可能避免了扫描完成后空间未释放的情况出现,空间释放的操作的可靠性更高。

以上几种预设老化条件仅为几种优选实施例,在具体应用时,可以将以上几种预设老化条件结合使用,或者也可以根据需求设置其他预设老化条件,本发明对此不作限定。

本发明还提供了一种基于hive的数据老化装置,参见图4所示,图4为本发明提供的一种基于hive的数据老化装置的结构示意图。该装置包括:

时间记录模块1,用于接收到对于hive的数据区的读写访问时,在hive的元数据库内刷新读写访问对应的数据区的访问时间记录;

扫描判断模块2,用于判断当前是否满足预设扫描条件,若满足预设扫描条件,触发老化判断模块3;

老化判断模块3,用于扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除所述老化区的内容。

本发明提供的基于hive的数据老化装置是用于实现以上基于hive的数据老化方法的,因此,这里的基于hive的数据老化装置与前述基于hive的数据老化方法一一对应。

本发明还提供了一种基于hive的数据老化设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现以下方法:

接收到对于hive的数据区的读写访问时,在hive的元数据库内刷新读写访问对应的数据区的访问时间记录;

判断当前是否满足预设扫描条件;

若满足预设扫描条件,则扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除老化区的内容。

在优选实施例中,处理器执行上述方法所对应的数据区具体为hive的数据表分区。

在优选实施例中,所述存储器存储的计算机程序中的预设扫描条件包括定时时间;判断当前是否满足预设扫描条件的过程包括:

判断当前时刻是否满足定时时间,若是,则满足预设扫描条件,否则,不满足预设扫描条件。

在另一优选实施例中,所述存储器存储的计算机程序中的预设扫描条件包括hive所处的分布式系统的存储空间的占用率达到预设高载阈值;判断当前是否满足预设扫描条件的过程包括:

判断当前hive所处的分布式系统的存储空间的占用率是否达到预设高载阈值,若是,则满足预设扫描条件,否则,不满足预设扫描条件。

在一优选实施例中,所述存储器存储的计算机程序中的预设老化条件包括访问时间记录距当前时刻超出预设时间阈值。

在另一优选实施例中,所述存储器存储的计算机程序中的预设老化条件包括访问时间记录属于全部访问时间记录中距离当前时刻最远的k个记录。

在另一优选实施例中,所述处理器执行计算机程序执行上述扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除老化区的内容的过程包括:

依次扫描并判断当前扫描的访问时间记录是否满足预设老化条件,若满足预设老化条件,则当前扫描的访问时间记录对应的数据区为老化区,并记录老化区的标识,继续扫描下一个访问时间记录;否则,直接扫描下一个访问时间记录,直至全部数据区的访问时间记录扫描完毕;

全部数据区的访问时间记录扫描完毕后,统一删除记录的全部标识对应的老化区的内容。

本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现以下方法:

接收到对于hive的数据区的读写访问时,在hive的元数据库内刷新读写访问对应的数据区的访问时间记录;

判断当前是否满足预设扫描条件;

若满足预设扫描条件,则扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除老化区的内容。

在优选实施例中,处理器执行上述方法所对应的数据区具体为hive的数据表分区。

在一优选实施例中,所述计算机程序中的预设扫描条件包括定时时间;判断当前是否满足预设扫描条件的过程包括:

判断当前时刻是否满足定时时间,若是,则满足预设扫描条件,否则,不满足预设扫描条件。

在另一优选实施例中,所述计算机程序中的预设扫描条件包括hive所处的分布式系统的存储空间的占用率达到预设高载阈值;判断当前是否满足预设扫描条件的过程包括:

判断当前hive所处的分布式系统的存储空间的占用率是否达到预设高载阈值,若是,则满足预设扫描条件,否则,不满足预设扫描条件。

在一优选实施例中,所述计算机程序中的预设老化条件包括访问时间记录距当前时刻超出预设时间阈值。

在另一优选实施例中,所述计算机程序中的预设老化条件包括访问时间记录属于全部访问时间记录中距离当前时刻最远的k个记录。

在另一优选实施例中,所述处理器执行计算机程序执行上述扫描hive的全部数据区的访问时间记录,将访问时间记录满足预设老化条件的数据区作为老化区,并删除老化区的内容的过程包括:

依次扫描并判断当前扫描的访问时间记录是否满足预设老化条件,若满足预设老化条件,则当前扫描的访问时间记录对应的数据区为老化区,并记录老化区的标识,继续扫描下一个访问时间记录;否则,直接扫描下一个访问时间记录,直至全部数据区的访问时间记录扫描完毕;

全部数据区的访问时间记录扫描完毕后,统一删除记录的全部标识对应的老化区的内容。

以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,相关专业技术人员在不脱离本发明精神和构思前提下推演出的其他改进和变化,均应包含在本发明的保护范围之内。

还需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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