基于深度学习预测的分布计算系统及其运行方法与流程

文档序号:18009176发布日期:2019-06-25 23:46阅读:169来源:国知局
基于深度学习预测的分布计算系统及其运行方法与流程

本发明涉及数据处理技术,特别涉及基于深度学习预测的分布计算系统及其运行方法。



背景技术:

现有很多集群管理系统,比如hadoopyarn、apachemesos、amazonec2,虽然都有着强大的功能,并针对不同的计算需求提供了各种类型的工作模式,但其终究使用内部固定策略调度计算资源,对于突然高负荷的计算请求会产生很高的延迟。另外,类似yarn和mesos,并不能动态的扩展计算节点,更多地着重于均衡单节点中的计算核心。

本发明的发明人发现,随着大数据计算和分布式计算的发展,合理的调度计算资源和计算节点成为提高计算体系效率的关键。



技术实现要素:

本发明的目的在于提供一种基于深度学习预测的分布计算系统及其运行方法,可以对计算节点进行动态管理,提前对各计算节点进行调度、分配计算资源。

为解决上述技术问题,本发明的实施方式公开了一种基于深度学习预测的分布计算系统,该分布计算系统包括调度节点、多个计算节点和数据集群;

数据集群用于定时从每个计算节点获取运行状态和任务处理速率,运行状态包括计算节点的内存占用率和处理器占用率;

调度节点包括:

负载预测节点,用于从数据集群获取每个计算节点的运行状态和任务处理速率,将每个计算节点的运行状态和任务处理速率输入到lstm(longshorttermmemory,长短期记忆)网络得到每个计算节点的负载参数并判断所有计算节点的平均负载参数是否大于第一负载阈值或小于第二负载阈值,每个计算节点的负载参数表示预定时间后的负载;以及

用户节点,用于当负载预测节点确定所有计算节点的平均负载参数大于第一负载阈值时,创建新的计算节点,并当负载预测节点确定所有计算节点的平均负载参数小于第二负载阈值时,关闭部分计算节点。

本发明的实施方式还公开了一种基于深度学习预测的分布计算系统的运行方法,该分布计算系统包括调度节点、多个计算节点和数据集群,调度节点包括负载预测节点和用户节点;

该运行方法包括以下步骤:

数据集群定时从每个计算节点获取运行状态和任务处理速率,运行状态包括计算节点的内存占用率和处理器占用率;

负载预测节点从数据集群获取每个计算节点的运行状态和任务处理速率,并将每个计算节点的运行状态和任务处理速率输入到长短期记忆lstm网络得到每个计算节点的负载参数,每个计算节点的负载参数表示预定时间后的负载;

负载预测节点判断所有计算节点的平均负载参数是否大于第一负载阈值或小于第二负载阈值;

若负载预测节点确定所有计算节点的平均负载参数大于第一负载阈值,用户节点创建新的计算节点,

若负载预测节点确定所有计算节点的平均负载参数小于第二负载阈值,用户节点关闭部分计算节点。

本发明实施方式与现有技术相比,主要区别及其效果在于:

在本申请中,数据集群定时从每个计算节点获取运行状态和任务处理速率,负载预测节点使用lstm网络根据每个计算节点的运行状态和任务处理速率来预测每个计算节点预定时间后的负载,用户节点然后根据每个计算节点预定时间后的负载来创建或关闭计算节点,可以自动对计算节点进行动态管理,提前对各计算节点进行调度、分配计算资源。

进一步地,根据所有计算节点的负载增幅和负载降幅来创建和关闭相应数量的计算节点,可以自动部署好相应的运行环境。

进一步地,通过定向发送或消息发送/订阅的方式分发任务,并且根据每个计算节点预定时间后的负载的分布状态来提前调整各计算节点的任务分发,可以更为灵活和合理地分配计算资源。

进一步地,在上一次训练后继续获取预定量的训练数据以对lstm网络进行更新,可以确保lstm网络的准确性。

附图说明

图1是本申请第一实施方式中一种基于深度学习预测的分布计算系统的结构示意图。

图2是本申请第一实施方式中一种基于深度学习预测的分布计算系统中使用的lstm网络的结构示意图。

图3是本申请第二实施方式中一种基于深度学习预测的分布计算系统的结构示意图。

图4是本申请第二实施方式中一种基于深度学习预测的分布计算系统中调度节点的结构示意图。

图5是本申请第三实施方式中一种基于深度学习预测的分布计算系统的运行方法的流程示意图。

图6是本申请第四实施方式中一种基于深度学习预测的分布计算系统的运行方法的流程示意图。

图7是本申请第四实施方式中一种基于深度学习预测的分布计算系统的运行方法的流程示意图。

具体实施方式

在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。并且,说明书中提到的各技术特征之间都可以互相组合(除非产生矛盾),以构成新的或优选的技术方案。

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。

本申请第一实施方式涉及一种基于深度学习预测的分布计算系统。图1是根据一个实施例的基于深度学习预测的分布计算系统的结构示意图。如图1所示,该分布计算系统包括调度节点、多个计算节点和数据集群。

多个计算节点(enginenode)形成计算集群(computingcluster),用于接收来自调度节点的计算任务进行数据的计算处理,并定时将例如自身的运行状态、任务的处理速率、等待队列中的任务数据存储到数据集群中,例如存储到数据集群的时间序列数据库(tsdb)中。

数据集群(dbcluster)用于定时从每个计算节点获取运行状态和任务处理速率,运行状态包括计算节点的内存占用率和处理器(cpu)占用率。

调度节点(scheduler)是分布式计算系统的核心,主要提供节点管理和任务分发两部分功能。在一实施例中,节点管理依托云平台(比如阿里云)进行计算节点的弹性扩充和自动部署。用户只需要根据预算确定计算节点数量,调度节点会在云平台上自动创建计算节点,并完成相关软件的安装,之后,调度节点(scheduler)会根据用户的计算任务数量进行计算节点的撤销和创建。可以理解,节点管理也可以通过其他方式进行节点扩充和自动部署,例如可以通过虚拟机管理软件,比如vmwareesx提供的接口进行管理,也可以通过docker管理命令进行管理,并不限于上述云平台。

如图1所示,调度节点包括负载预测节点和用户节点。

负载预测节点用于从数据集群获取每个计算节点的运行状态和任务处理速率,将每个计算节点的运行状态和任务处理速率输入到lstm网络得到每个计算节点的负载参数并判断所有计算节点的平均负载参数是否大于第一负载阈值或小于第二负载阈值,每个计算节点的负载参数表示预定时间后的负载。也就是说,负载预测节点负责收集各计算节点的运行状态并预测未来短时间内计算节点的负载,预定时间可以例如是5秒、7秒等,可以根据实际需要进行设置。

负载预测节点里包含了完整的深度学习框架用于构建lstm网络。上述数据集群还用于定时从每个计算节点获取原始数据处理速率、队列中的原始数据数量和队列中的任务数量,则负载预测节点用于从该数据集群获取预定量的训练数据,并对预定量的训练数据进行训练得到该lstm网络,该训练数据包括各计算节点的运行状态、任务处理速率、原始数据处理速率、队列中的任务数量和队列中的原始数据数量。可以理解,预定量可以根据实际经验进行设置。一个任务可能需要用到许多原始数据,或很少的原始数据,在训练数据时考虑原始数据处理速率和队列中的原始数据数量可以得到计算节点的繁忙程度。在一实施例中,lstm网络输出的各计算节点的负载参数是由内存占用率、处理器占用率和任务处理速率综合计算出,为0~1之间的浮点数。图2是lstm的网络结构。

优选地,负载预测节点用于在上一次训练后继续从数据集群获取预定量的训练数据,并对上一次训练后获取的预定量的训练数据进行训练以更新所述lstm网络。在上一次训练后继续获取预定量的训练数据以对lstm网络进行更新,可以确保lstm网络的准确性。鉴于lstm网络的具体构建和更新方式为本领域技术人员所熟知,在此不再赘述。

用户节点(uinode)用于当负载预测节点确定所有计算节点的平均负载参数大于第一负载阈值时,创建新的计算节点,并当负载预测节点确定所有计算节点的平均负载参数小于第二负载阈值时,关闭部分计算节点。即如图1所示,对计算集群中的计算节点进行动态管理。

可以理解,用户节点通常负责计算节点的管理和监控,用户可以通过网页(web)访问用户节点里的网络服务器(webserver)查看数据集群中各计算节点的运行状态,也可以手动进行计算节点的创建和关闭。要实现计算节点的动态增删,需要两步操作:1、克隆一个新的环境;2、给新环境分配任务。以aliecs为例,第一步就是购买新的ecs,安装启动预装软件;第二步就是通过用户节点调整配置,分发计算任务。

可选地,用户节点在负载预测节点确定所有计算节点的平均负载参数大于第一负载阈值时,根据所有计算节点的负载增幅来创建相应数量的计算节点,并当负载预测节点确定所有计算节点的平均负载参数小于第二负载阈值时,根据所有计算节点的负载降幅来关闭相应数量的计算节点。负载增幅和负载降幅反映了所有计算节点预定时间后的总负载相对于当前总负载的变化。也就是说,当所有计算节点的负载增幅为2%时,创建2%的新计算节点,例如当前计算节点个数为100时,增加2个新计算节点。关闭计算节点的方式与创建计算节点类似。根据所有计算节点的负载增幅和负载降幅来创建和关闭相应数量的计算节点,可以自动部署好相应的运行环境。

可以理解,上述第一负载阈值和第二负载阈值可以根据实际需要进行设置。在本申请的其他实施方式中,也可以根据具体需要,采用其他方案来创建和关闭相应数量的计算节点,例如创建相应数量的计算节点使得平均负载参数小于某一其他数值等,并不限于上述方案,并且创建计算节点和关闭计算节点的方式可以不同或相同。在创建和关闭计算节点后,相应调整计算任务分发。

在本实施方式的分布计算系统中,数据集群定时从每个计算节点获取运行状态和任务处理速率,负载预测节点使用lstm网络根据每个计算节点的运行状态和任务处理速率来预测每个计算节点预定时间后的负载,用户节点然后根据每个计算节点预定时间后的负载来创建或关闭计算节点,可以自动对计算节点进行动态管理,提前对各计算节点进行调度、分配计算资源。

本发明第二实施方式涉及一种基于深度学习预测的分布计算系统。图3是根据另一个实施例的基于深度学习预测的分布计算系统的结构示意图。第二实施方式在第一实施方式的基础上主要进行了以下改进:通过定向发送或消息发送/订阅的方式分发任务,并且根据每个计算节点预定时间后的负载的分布状态来提前调整各计算节点的任务分发,可以更为灵活和合理地分配计算资源。具体地说:

如上所述,调度节点的任务分发功能是将计算任务根据每个计算节点的负载进行计算任务的分流。

如图3所示,调度节点还包括分发节点,分发节点(publishernode)用于通过定向发送或以消息发布/订阅的方式向计算节点分发任务。即分发节点通过emit_remote接口直接分发给目标计算节点;或是通过zeromq消息订阅的方式,将计算任务根据id分发到消息队列里并标记不同的主题(topic),不同的计算节点可以注册到不同的主题,并通过多播接口收到消息。可以理解,在本申请的其他实施方式中,分发节点也可以采用其他分发方式。

分发节点还用于将负载预测节点所得到的各计算节点的负载参数按从大到小的顺序进行排序,并在排序后判断相邻负载参数的差值是否大于预定阈值(即从首尾开始两两比较),若有相邻负载参数的差值大于预定阈值,则分发节点对各计算节点的任务分发进行调整以使得负载参数的差值不大于预定阈值。例如,分发节点可以通过从负载参数较高的计算节点向负载参数较低的计算节点转移任务来进行调整,具体转移方式可以根据计算任务的种类不同,选择不同的调度策略,只要使得相邻负载参数的差值不大于预定阈值即可。

可以理解,预定阈值可以根据实际需要进行设置。在本申请的其他实施方式中,也可以根据实际需要采用其他方案对各计算节点的负载分布状态进行评估并作出相应调整,并不限于上述方案,其目的都是为了使得在各计算节点中的负载分布达到目标分布状态。

在本申请的各个实施方式中,本实施方式中的任务分发调整可以与第一实施方式中的动态节点管理组合使用,也可以分别独自使用。例如在所有计算节点的平均负载参数大于第一负载阈值或小于第二负载阈值时,进行动态节点管理;并在所有计算节点的平均负载参数小于第一负载阈值且大于第二负载阈值时,进行任务分发调整,或其他组合方式。

在本申请的一个优选实施例中,调度节点的结构如图4所示。该调度节点除了包括上述的负载预测节点、用户节点和分发节点外,还包括代理节点、键值数据库和管理数据库。

代理节点(agentnode)负责对来自外部数据源的数据进行预处理,将那些不满足计算集群(computingcluster)的数据格式要求的数据进行转换,然后发送给分发节点。可以支持多种数据源,比如openflow,snmp等。同时也可以通过插件开发的方式支持新的数据源。

管理数据库(mgmtdb)负责存储计算节点信息,用户需预先配置可用的计算节点信息。计算节点信息包括:节点id(node_id);节点类型(node_type:),表明各个节点处理何种任务;硬件型号(size),例如standard,large,small;用于安装的具体版本号(build);list(text)初始化脚本运行的参数(arguments),例如需要安装的软件安装包的url;用于定时启动节点的crontab格式字符串(condition_type:none|crontab;condition)。

键值数据库(kvdb)负责存储节点状态(例如各计算节点的开关状态和ip)并用于在多个计算节点之间同步节点信息,用户节点会时刻监控各计算节点的开关状态和ip,并存储到kvdb中,同时负载预测节点和分发节点可以访问kvdb来获取最新的计算节点ip。

以下将结合图3和图4对布署上述优选分布计算系统进行详细描述:

1.首先需手动安装搭建调度节点(scheduler)和数据集群(dbcluster),然后通过调度节点构建代理节点(agentnode)、负载预测节点、分发节点(publishernodes)和用户节点(uinode)。

2.用户节点创建管理数据库(mgmtdb)和键值数据库(kvdb),用户访问用户节点配置整个框架所有的子节点信息。用户节点根据arguments确定子节点初始化脚本,并根据condition预先创建计算节点,并更新计算节点状态到键值数据库。

3.子节点在创建过程中会根据arguments注册主题(topic)到分发节点。

4.分发节点根据计算数据的id和topic决定分发的方式。

5.计算节点在启动之后,就不断更新自己的运行状态到数据集群中。

6.调度节点中的负载预测节点收集在数据集群中的各计算节点的工作状态,预测将来各个计算节点的工作负载,并判断是否需要创建/关闭计算节点,调整分发节点的任务分发策略。

可以理解,以上仅为本申请的一优选例。可以对上述各步骤中的配置进行添加、修改和/或删除,仍然能够实现本申请的技术方案。

本说明书中提到的各节点可以由各种类型的服务器和/或docker容器来实现。

本发明第三实施方式涉及一种基于深度学习预测的分布计算系统的运行方法。图5是根据一个实施例的基于深度学习预测的分布计算系统的运行方法的流程示意图。如图1所示,该分布计算系统包括调度节点、多个计算节点和数据集群,该调度节点包括负载预测节点和用户节点。

如图5所示,该运行方法包括以下步骤:

在步骤501中,数据集群定时从每个计算节点获取运行状态和任务处理速率,运行状态包括计算节点的内存占用率和处理器占用率。

此后进入步骤502,负载预测节点从数据集群获取每个计算节点的运行状态和任务处理速率,并将每个计算节点的运行状态和任务处理速率输入到长短期记忆lstm网络得到每个计算节点的负载参数,每个计算节点的负载参数表示预定时间后的负载。预定时间可以例如是5秒、7秒等,可以根据实际需要进行设置。

此后进入步骤503,负载预测节点判断所有计算节点的平均负载参数是否大于第一负载阈值。如果否,则进入步骤504;如果是,则进入步骤506。

在步骤504中,负载预测节点判断所有计算节点的平均负载参数是否小于第二负载阈值。如果否,则返回到步骤501;如果是,则进入步骤505。

在步骤505中,用户节点关闭部分计算节点。然后返回到步骤501。

在步骤506中,用户节点创建新的计算节点。然后返回到步骤501。

可以理解,步骤503与步骤504可以互换或同时进行,不限于图5中所示的顺序。

可选地,在步骤506中,用户节点根据所有计算节点的负载增幅来创建相应数量的计算节点,并在步骤505中,根据所有计算节点的负载降幅来关闭相应数量的计算节点。也就是说,当所有计算节点的负载增幅为2%时,创建2%的新计算节点,例如当前计算节点个数为100时,增加2个新计算节点。关闭计算节点的方式与创建计算节点类似。根据所有计算节点的负载增幅和负载降幅来创建和关闭相应数量的计算节点,可以自动部署好相应的运行环境。

可以理解,上述第一负载阈值和第二负载阈值可以根据实际需要进行设置。在本申请的其他实施方式中,也可以根据具体需要,采用其他方案来创建和关闭相应数量的计算节点,例如创建相应数量的计算节点使得平均负载参数小于某一其他数值等,并不限于上述方案,并且创建计算节点和关闭计算节点的方式可以不同或相同。

在一实施例中,在步骤502前还可以包括以下步骤:

数据集群定时从每个计算节点获取原始数据处理速率、队列中的原始数据数量和队列中的任务数量;

负载预测节点从数据集群获取预定量的训练数据,并对预定量的训练数据进行训练得到lstm网络,训练数据包括各计算节点的运行状态、任务处理速率、原始数据处理速率、队列中的任务数量和队列中的原始数据数量。

优选地,上述运行方法还可以包括以下步骤:

负载预测节点在上一次训练后继续从数据集群获取预定量的训练数据,并对上一次训练后获取的预定量的训练数据进行训练以更新该lstm网络。在上一次训练后继续获取预定量的训练数据以对lstm网络进行更新,可以确保lstm网络的准确性。

在本实施方式的分布计算系统的运行方法中,数据集群定时从每个计算节点获取运行状态和任务处理速率,负载预测节点使用lstm网络根据每个计算节点的运行状态和任务处理速率来预测每个计算节点预定时间后的负载,用户节点然后根据每个计算节点预定时间后的负载来创建或关闭计算节点,可以对计算节点进行动态管理,提前对各计算节点进行调度、分配计算资源。

第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

本发明第四实施方式涉及一种基于深度学习预测的分布计算系统的运行方法。图6是根据另一个实施例的基于深度学习预测的分布计算系统的运行方法的流程示意图。第四实施方式在第三实施方式的基础上主要进行了以下改进:通过定向发送或消息发送/订阅的方式分发任务,并且根据每个计算节点预定时间后的负载的分布状态来提前调整各计算节点的任务分发,可以更为灵活和合理地分配计算资源。具体地说:

如图3所示,调度节点还包括分发节点。上述运行方法还包括以下步骤:分发节点通过定向发送或以消息发布/订阅的方式向计算节点分发任务。可以理解,在本申请的其他实施方式中,分发节点也可以采用其他分发方式。

如图6所示,在步骤502后还可以包括以下步骤:

在步骤603中,分发节点将负载预测节点所得到的各计算节点的负载参数按从大到小的顺序进行排序,并在排序后判断相邻负载参数的差值是否大于预定阈值。若有相邻负载参数的差值大于预定阈值,则进入步骤604,否则返回步骤501。

在步骤604中,分发节点对各计算节点的任务分发进行调整以使得相邻负载参数的差值不大于预定阈值。例如,分发节点可以通过从负载参数较高的计算节点向负载参数较低的计算节点转移任务来进行调整,具体转移方式不限,只要使得相邻负载参数的差值不大于预定阈值即可。

可以理解,预定阈值可以根据实际需要进行设置。在本申请的其他实施方式中,也可以根据实际需要采用其他方案对各计算节点的负载分布状态进行评估并作出相应调整,并不限于上述方案,其目的都是为了使得在各计算节点中的负载分布达到目标分布状态。

在本申请的各个实施方式中,本实施方式中步骤603-604的任务分发调整可以与第三实施方式中步骤503-506的动态节点管理组合使用,也可以分别独自使用。例如在所有计算节点的平均负载参数大于第一负载阈值或小于第二负载阈值时,进行动态节点管理;并在所有计算节点的平均负载参数小于第一负载阈值且大于第二负载阈值时,进行任务分发调整,或其他组合方式。

图7示出了基于深度学习预测的分布式计算系统的运行方法的一个优选例。如图7所示:

1.系统部署完成后,调度节点中的负载预测节点先请求数据集群获取每个计算节点最新的运行状态信息:内存占用率、cpu占用率、任务处理速率、队列中的任务数量等等。

2.如果当前系统中不存在lstm模型,则请求数据集群获取数据体量,如果数据总量不够训练需求,则继续收集数据直到能训练出可用的lstm模型。

3.利用训练好的lstm模型预测例如5s后的各计算节点的负载:负载参数。判断距上次训练是否积累足够数据量,如果数据够则增量训练更新lstm模型。

4.根据各计算节点的负载参数,如果过载节点过多,则通知用户节点创建计算节点,如果空载节点过多,则通知用户节点在某些计算节点任务处理完成后关闭计算节点。

5.根据各计算节点的负载参数,如果各节点负载参数相差过大,则通知分发节点调整任务分发策略。

可以理解,以上仅为本申请的一优选例。可以对上述各步骤中的配置进行添加、修改和/或删除,仍然能够实现本申请的技术方案。

第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。

综上,本申请开发了基于深度学习预测的分布计算系统的自动扩展架构,其收集各个节点的负载信息,通过深度学习预测未来的节点负载,提前分配计算资源,调节计算节点。此外,我们扩展了原有计算任务的分发手段,通过消息订阅的方式分发任务,更加灵活。

本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(programmablearraylogic,简称“pal”)、随机存取存储器(randomaccessmemory,简称“ram”)、可编程只读存储器(programmablereadonlymemory,简称“prom”)、只读存储器(read-onlymemory,简称“rom”)、电可擦除可编程只读存储器(electricallyerasableprogrammablerom,简称“eeprom”)、磁盘、光盘、数字通用光盘(digitalversatiledisc,简称“dvd”)等等。

需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

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