掌桥专利:专业的专利平台
掌桥专利
首页

任务动态调整方法、装置以及设备

文献发布时间:2023-06-19 11:11:32


任务动态调整方法、装置以及设备

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种任务动态调整方法、装置以及设备。

背景技术

HBase是一个分布式的、面向列的开源数据库。HBase的分布式NoSql数据库主要基于HDFS文件系统进行数据落地。由于HDFS系统不支持文件实时修改,因此为了解决对于实时数据的修改问题,目前HBase采用的设计方式一般为保存数据的多个版本,数据的不同版本可能随着数据的写入落在多个小的数据文件(一般不超过128M)上,HBase在服务器节点后台定期对小数据文件进行整理合并(compact),将小文件中的冗余数据去除后重新写成新的文件。此过程类似于windows操作系统的定期磁盘碎片整理。

HBase会默认在后台启动处理小文件整理任务的两个线程池,分别为长合并(longCompact)和短合并(shortCompact)。根据每次需要执行的任务数量以及需要合并的文件大小,来确定整理任务具体交给哪个线程池执行,longCompact负责执行较大的小文件整理,shortCompact负责执行较小的文件整理。当一个线程池空闲时,服务器也会动态将另一个线程池的任务分给相对空闲的线程池。

HBase数据库技术需要事先指定一定数量的线程执行后台的小文件整理策略,但是该方法存在如下几个问题:

随着现代服务器性能的逐渐提升,HBase集群中单节点可挂载的磁盘越来越多,可以容纳的数据量越来越大,实时访问性能会越来越好,也会伴随着小文件数量可能越来越多。

当前HBase的整理机制虽然提供了一定的动态调节能力,但是根据实际运维场景看,很难满足现实的能力。若指定的HBase整理线程池的线程数量太少,对于小文件过多的情况下,整理任务处理不及时,会导致数据的冗余版本过多,在客户端实时访问HBase时,会不得不访问多个文件版本,导致IO次数过多,实时性能下降。

若单纯的提高HBase后台整理线程池的线程数量,则过多的整理线程会大量占用服务器CPU和磁盘IO资源,导致服务器整体吞吐量下降。

发明内容

本发明实施例提供一种任务动态调整方法、装置以及设备,以提高HBase的任务动态调节能力。

第一方面,本发明实施例提供了一种任务动态调整方法,其特征在于,所述方法包括:

响应任务处理事件,根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量;

若是,则根据服务器硬件资源信息、服务器并发量和待处理文件信息中的至少一种,确定减少工作线程或增加工作线程;

其中,所述服务器硬件资源信息包括:服务器硬盘IO资源信息、服务器CPU资源和进程JVM(Java虚拟机)内存资源信息中的至少一种;所述待处理文件信息包括:待处理文件总数和/或目标文件占比,目标文件是指文件大小超过设定大小阈值的待处理文件。

第二方面,一种任务动态调整装置,其特征在于,所述方法包括:

调整确定模块,用于响应任务处理事件,根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量;

线程调整模块,用于若是,则根据服务器硬件资源信息、服务器并发量和待处理文件信息中的至少一种,确定减少工作线程或增加工作线程;

其中,所述服务器硬件资源信息包括:服务器硬盘IO输入输出资源信息、服务器CPU中央处理器资源和进程JVM内存资源信息中的至少一种;所述待处理文件信息包括:待处理文件总数和/或目标文件占比,目标文件是指文件大小超过设定大小阈值的待处理文件。

第三方面,本发明实施例还提供了一种设备,所述设备包括:

一个或多个处理器;

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

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本实施例中任一所述的任务动态调整方法。

本发明实施例通过根据服务器资源压力(CPU、JVM堆内存、硬盘)、服务器实时并发情况、待整理的文件数量、文件大小等多个调整因子,由服务器动态调节HBase的后台整理线程数量,以达到服务器吞吐量、实时性能、资源利用等多个方面的平衡。换而言之,通过本发明可以实现在不影响HBase集群吞吐量的前提下,通过动态调节小文件整理任务,提高集群的数据的实时处理能力和服务器资源利用率。

附图说明

图1为本发明实施例一提供的一种任务动态调整方法的流程图;

图2是本发明实施例二提供的一种任务动态调整方法的流程图;

图3是本发明实施例三提供的一种任务动态调整方法的流程图;

图4是本发明实施例四提供的一种任务动态调整装置的结构示意图;

图5为本发明实施例五提供的一种设备的结构示意图。

具体实施方式

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

实施例一

图1为本发明实施例一提供的一种任务动态调整方法的流程图。本实施例可适用于对后台任务处理的线程数量进行动态调整,以达到服务器吞吐量、实时性能、资源利用等多个方面的平衡的情况。典型地,本发明实施例可适用于HBase对小文件进行整理的应用场景。该方法可以由一种任务动态调整装置来执行,该装置可以由软件和/或硬件的方式实现。参见图1,本申请实施例提供的任务动态调整方法包括:

S110、响应任务处理事件,根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量。

其中,任务处理事件可以是触发执行任务处理的任意事件,例如触发任务处理的指令。

具体地,根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量,包括:

计算待处理文件个数和已开启工作线程的数量的差值;

若计算的差值大于设定阈值,则确定需要调整工作线程的开启数量。

为提高判断的准确率,所述根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量,包括:

判断所述待处理文件个数是否小于第一阈值,其中所述第一阈值根据已开启工作线程的数量确定;

根据判断结果确定是否需要调整工作线程的开启数量。

具体地,第一阈值可以是已开启工作线程的数量的设定倍数。

进一步地,所述根据判断结果确定是否需要调整工作线程的开启数量,包括:

若所述待处理文件个数大于或等于所述第一阈值,则确定需要调整工作线程的开启数量;

若所述待处理文件个数小于所述第一阈值,且已开启工作线程的数量大于第二阈值,则确定需要调整工作线程的开启数量。

典型地,第二阈值为2。

可选地,调整工作线程的开启数量可以是增加工作线程,也可以是减少工作线程。

S120、若是,则根据服务器硬件资源信息、服务器并发量和待处理文件信息中的至少一种,确定减少工作线程或增加工作线程。

其中,所述服务器硬件资源信息包括:服务器硬盘IO资源信息、服务器CPU资源和进程JVM内存资源信息中的至少一种;所述待处理文件信息包括:待处理文件总数和/或目标文件占比,目标文件是指文件大小超过设定大小阈值的待处理文件。

JVM是指Java虚拟机。可选地,设定大小阈值可以根据需要设定,典型地设定大小阈值是2G。

本发明实施例通过根据服务器资源压力(CPU、JVM堆内存、硬盘)、服务器实时并发情况、待整理的文件数量、文件大小等多个调整因子,由服务器动态调节HBase的后台整理线程数量,以达到服务器吞吐量、实时性能、资源利用等多个方面的平衡。换而言之,通过本发明可以实现在不影响HBase集群吞吐量的前提下,通过动态调节小文件整理任务,提高集群的数据的实时处理能力和服务器资源利用率。

为进一步提高工作线程数量与服务器吞吐量、实时性能、资源利用等多个方面的平衡,若任务处理线程池的数量为1,线程池中工作线程的种类为普通小文件工作线程和目标文件工作线程,且该两种工作线程可以相互切换,则确定减少工作线程或增加工作线程之后,所述方法还包括:

根据目标文件占比确定普通小文件工作线程和目标文件工作线程的比例调整结果;

根据比例调整结果,对所述任务处理事件关联的工作线程进行调整。

实施例二

图2是本发明实施例二提供的一种任务动态调整方法的流程图。本实施例是在上述实施例的基础上,对上述S120的进一步优化。参见图2,本发明实施例提供的任务动态调整方法包括:

S110、响应任务处理事件,根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量。

S121、若是,则确定服务器硬盘IO资源信息、服务器CPU资源、进程JVM内存资源信息、服务器当前并发量、待处理文件总数和目标文件占比中至少一种调整因子的权重分值。

具体地,可以根据经验值设定服务器硬盘IO资源信息、服务器CPU资源、进程JVM内存资源信息、服务器当前并发量、待处理文件总数和目标文件占比中至少一种调整因子的权重分值。

为使得确定的权重分值反应有服务器的实时运行状态,以达到工作线程与服务器运行状态的平衡,所述确定服务器硬盘IO资源信息、服务器CPU资源、进程JVM内存资源信息、服务器并发量、待处理文件总数和目标文件占比中至少一种调整因子的权重分值,包括:

根据磁盘繁忙率确定服务器硬盘IO资源信息的权重分值;

根据服务器CPU的使用率确定服务器CPU资源的权重分值;

根据堆内存使用率确定进程JVM内存资源信息的权重分值;

根据服务器并发量确定服务器并发量的权重分值;

根据待处理文件总数和已开启线程数,确定待处理文件总数的权重分值;

根据目标文件占比的上升率,确定目标文件占比的权重分值。

可选地,可以根据磁盘繁忙率直接确定服务器硬盘IO资源信息的权重分值,也可以根据磁盘繁忙率对设定的初始值进行调整,得到服务器硬盘IO资源信息的权重分值。

S122、计算各权重分值之和,得到权重总分值。

S123、根据所述权重总分值、权重计算总值和线程池中的线程总数,确定减少工作线程或增加工作线程,其中权重计算总值大于或等于所述权重总分值。

权重计算总值是指权重总分值的最大值。例如,权重计算总值为100。

具体地,所述根据所述权重总分值、权重计算总值和线程池中的线程总数,确定减少工作线程或增加工作线程,包括:

计算权重计算总值和线程池中的线程总数的比值,得到可用线程的权重分;

利用所述权重总分值减去所述可用线程的权重分,若结果为正,则确定增加工作线程;若结果为负,则确定减少工作线程。

进一步地,所述利用所述权重总分值减去所述可用线程的权重分之后,所述方法还包括:

对得到的差值向下取整,将取整后得到数值作为需要减少工作线程的数量或增加工作线程的数量。

本发明实施例的技术方案,通过确定各调整因子的权重分值;计算权重总分值;根据权重总分值、权重计算总值和线程池中的线程总数,确定减少工作线程或增加工作线程,从而实现根据服务器硬件资源信息、服务器并发量和待处理文件信息中的至少一种,确定减少工作线程或增加工作线程。

实施例三

图3是本发明实施例三提供的一种任务动态调整方法的流程图。本实施例是在上述实施例的基础上,以处理任务为基于HBase对小文件的整理,待处理文件为待整理的小文件,目标文件为文件大小超过2G的小文件为例提供的一种可选方案。参见图3,本发明实施例提供的任务动态调整方法包括:

按照配置初始化线程池,启动至少两个工作线程。

其中,线程池只有1个。线程池中的工作线程有两种,分别为普通小文件工作线程和目标文件工作线程。上述启动的至少两个工作线程中包括至少一个普通小文件工作线程和至少一个目标文件工作线程。

按照配置初始化各调整因子,并等待下一个计算周期。

其中,调整因子包括:服务器硬盘IO资源、服务器CPU资源、进程JVM内存资源、服务器当前并发量、小文件总数和目标文件占比。

该六项权重因子可以综合为三个大类:服务器硬件资源(服务器硬盘IO资源、服务器CPU资源、进程JVM内存资源)、服务器并发量、小文件状态(小文件总数和目标文件占比)。该三大类默认按照60%、30%、10%的比例计算权重。服务器硬件资源计算权重总占比50%,其中硬盘IO:CPU:内存的权重比例为3:2:1。小文件状态为10%,其中小文件总数:2G以上小文件占比的权重比例为1:1。

到达下一个计算周期时限,判断当前待处理的小文件个数是否小于当前开启工作线程数量的10倍。

若当前待处理的小文件个数小于当前开启工作线程数量的10倍,则判断当前开启工作线程数量是否大于2;若当前待处理的小文件个数大于或等于当前开启工作线程数量的10倍,或者,当前开启工作线程数量大于2,则执行S250;若当前开启工作线程数量小于或等于2,则返回执行“等待下一个计算周期”的步骤。

基于初始化的各调整因子的权重分值,利用调整因子计算规则,对各调整因子的权重分值进行调整。

具体调整因子计算规则包括:

调整因子的权重计算总值为100。

磁盘IO权重分值最高为30,以磁盘繁忙率15%为默认最高上限,磁盘在一个计算周期内平均繁忙程度若低于15%,若每低1%(向下取整),则权重分值加2,若磁盘平均繁忙程度超过15%,则磁盘权重分值为0。

CPU权重分值最高为20,以CPU总使用率的30%为默认最高上限(多核CPU需要根据CPU物理核数计算上限,如24核CPU,则权重上限为:2400%乘以30%),CPU在一个计算周期内平均繁忙程度若低于30%,若每低1%(向下取整),则权重分值加1,若CPU使用率超过30%,则CPU权重分值清0。

JVM堆内存权重分值最高为10,以堆内存使用率的60%为默认最高上限,堆内存在一个计算周期内平均使用率低于50%,若每低2%(向下取整),则权重分值加1,若堆内存使用率超过50%,则JVM堆内存权重分值清0。

服务器并发量权重分值最高为30,以并发量3000为默认最高上限,并发量在一个计算周期内平均并发数低于3000,若每低100(向下取整),则权重分值加1,若并发平均使用量超过5000,则权重分值清0。

小文件个数权重分值最高为5,计算公式:当前小文件总数/(当前活动线程数乘以10)。

2G以上小文件占总数比例权重分值最高为5,以50%为最高上限,一个计算周期内,2G以上小文件占比每上升10%,则权重分值加1。

以上计算调整因子的权重分值、权重最高阈值均可以根据实际情况调整。

各个调整因子权重计算周期默认为5分钟,可以根据实际情况调整,但不能低于1分钟。

计算上述各调整因子的权重分值之和,得到权重总分值;计算权重计算总值和线程池中的线程总数的比值,得到可用线程的权重分值。

根据权重总分值和可用线程的权重分值的差值,确定增加工作线程或减少工作线程,以及增加工作线程的数量或减少工作线程的数量。

根据目标文件占比,确定是否调整两种工作线程的比例;若是,则根据调整结果进行调整;若否,或根据调整结果进行调整之后,则返回执行“等待下一计算周期”的步骤。

本发明实施例可以实现如下效果:不影响集群并发性能和吞吐量;提高小文件整理的效率;提高集群资源利用率。

实施例四

图4是本发明实施例四提供的一种任务动态调整装置的结构示意图。本实施例提供的任务动态调整装置包括:调整确定模块401和线程调整模块402。

其中,调整确定模块401,用于响应任务处理事件,根据待处理文件个数和已开启工作线程的数量确定是否需要调整工作线程的开启数量;

线程调整模块402,用于若是,则根据服务器硬件资源信息、服务器并发量和待处理文件信息中的至少一种,确定减少工作线程或增加工作线程;

其中,所述服务器硬件资源信息包括:服务器硬盘IO输入输出资源信息、服务器CPU中央处理器资源和进程JVMJava虚拟机内存资源信息中的至少一种;所述待处理文件信息包括:待处理文件总数和/或目标文件占比,目标文件是指文件大小超过设定大小阈值的待处理文件。

进一步地,所述调整确定模块,包括:

判断单元,用于判断所述待处理文件个数是否小于第一阈值,其中所述第一阈值根据已开启工作线程的数量确定;

数量调整单元,用于根据判断结果确定是否需要调整工作线程的开启数量。

进一步地,所述数量调整单元具体用于:

若所述待处理文件个数大于或等于所述第一阈值,则确定需要调整工作线程的开启数量;

若所述待处理文件个数小于所述第一阈值,且已开启工作线程的数量大于第二阈值,则确定需要调整工作线程的开启数量。

进一步地,所述线程调整模块,包括:

分值确定单元,用于确定服务器硬盘IO资源信息、服务器CPU资源、进程JVM内存资源信息、服务器当前并发量、待处理文件总数和目标文件占比中至少一种调整因子的权重分值;

分值确定单元,用于计算各权重分值之和,得到权重总分值;

线程调整单元,用于根据所述权重总分值、权重计算总值和线程池中的线程总数,确定减少工作线程或增加工作线程,其中权重计算总值为设定的所述权重总分值的最大值。

进一步地,所述线程调整单元具体用于:

计算权重计算总值和线程池中的线程总数的比值,得到可用线程的权重分值;

利用所述权重总分值减去所述可用线程的权重分值,若结果为正,则确定增加工作线程;若结果为负,则确定减少工作线程。

进一步地,所述装置还包括:

数量确定模块,用于所述利用所述权重总分值减去所述可用线程的权重分值之后,对得到的差值向下取整,将取整后得到数值作为需要减少工作线程的数量或增加工作线程的数量。

进一步地,所述分值确定单元具体用于:

根据磁盘繁忙率确定服务器硬盘IO资源信息的权重分值;

根据服务器CPU的使用率确定服务器CPU资源的权重分值;

根据堆内存使用率确定进程JVM内存资源信息的权重分值;

根据服务器并发量确定服务器并发量的权重分值;

根据待处理文件总数和已开启线程数,确定待处理文件总数的权重分值;

根据目标文件占比的上升率,确定目标文件占比的权重分值。

进一步地,所述装置还包括:

调整判断模块,用于若任务处理线程池的数量为1,线程池中工作线程的种类为普通小文件工作线程和目标文件工作线程,且该两种工作线程可以相互切换,则确定减少工作线程或增加工作线程之后,根据目标文件占比确定普通小文件工作线程和目标文件工作线程的比例调整结果;

线程种类调整模块,用于根据比例调整结果,对所述任务处理事件关联的工作线程进行调整。

本发明实施例通过根据服务器资源压力(CPU、JVM堆内存、硬盘)、服务器实时并发情况、待整理的文件数量、文件大小等多个调整因子,由服务器动态调节HBase的后台整理线程数量,以达到服务器吞吐量、实时性能、资源利用等多个方面的平衡。换而言之,通过本发明可以实现在不影响HBase集群吞吐量的前提下,通过动态调节小文件整理任务,提高集群的数据的实时处理能力和服务器资源利用率。

实施例五

图5为本发明实施例五提供的一种设备的结构示意图,如图5所示,该设备包括处理器50、存储器51、输入装置52和输出装置53;设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据处理方法对应的程序指令/模块(例如,任务动态调整装置包括的调整确定模块401和线程调整模块402)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据处理方法。

存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置52可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。

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

相关技术
  • 任务动态调整方法、装置以及设备
  • 一种动态调整任务优先级的方法、系统、设备及介质
技术分类

06120112837425