发明内容
为了更好的解决上述问题,本发明提供一种基于神经网络的集群资源智能调度方法,所述方法包括如下步骤:
步骤S1:基于集群每个节点的历史数据训练每个节点的神经网络模型,所述每个节点的历史数据包括数据内容、数据流量及持续所述数据流量的时长;
步骤S2:基于所述集群中每个节点的历史数据流量平均值和集群中每个资源的性能,为每个节点分配对应的资源,还将所述每个节点和对应的资源按照所述每个节点的数据流量平均值划分区间;
步骤S3:周期性的检测各个区间内各个节点对应资源的负载率,还基于所述神经网络模型和所述各个资源对应的各个节点的数据内容、数据流量获取所述各个节点持续当前流量的时长;
步骤S4:基于步骤S3中所述各个区间中各个节点对应资源的负载率、各个节点持续当前流量的时长和各个资源的性能在区间内为每个节点重新分配资源;
步骤S5:以预设周期检测第一区间数据流量最小第一节点对应资源的第一性能和第二区间数据流量最大第二节点对应资源的第二性能,基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配,还基于所述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间。
作为本发明的一种优选技术方案,所述步骤S2包括如下步骤:
步骤S21:基于所述集群中每个节点的历史数据流量平均值从大到小进行排序获取节点队列,将集群中每个资源的性能从高到低进行排序;
步骤S22:为节点队列中每个节点匹配合适的资源,其中节点的历史数据流量平均值越大,对应的资源的性能越高;
步骤S23:将节点队列进行区间划分,连续N个节点为一个区间。
作为本发明的一种优选技术方案,所述步骤S3中,以预设周期检测各个区间内每个节点对应的资源负载率,还获取各个节点的内容和数据流量,将所述各个节点的内容和数据流量输入所述各个节点的神经网络模型获取当前数据流量的时持续间,所述资源负载率包括CPU、GPU、内存占用率、数据处理延迟时间。
作为本发明的一种优选技术方案,所述步骤S4还包括如下步骤:
步骤S41:在第i资源的负载率大于第一阈值且所述第i资源对应的第i节点对应数据流量的第i时长大于第一时长时,在对应区间内查找性能高于所述第i资源且负载率小于第二阈值的第j资源,在满足所述第i节点对应的数据流量大于所述第j节点对应的数据流量时,在第j节点对应的数据流量持续第j时长大于所述第i时长时,将所述第i节点对应的第i资源与所述第j节点对应的第j资源直接进行交换;
步骤S42:在所述第j资源不存在时,计算所述区间各个节点对应资源负载率小于第二阈值的空闲资源进行评分,并将全部所述空闲资源按照评分进行排序,所述评分的表达式为:
其中,为资源评分,/>为资源的空闲率,/>为资源的性能,/>为/>的权重,/>为/>的权重;
步骤S43:将第i节点的数据分配给评分最高的第一目标资源,在数据分配的过程中,检测所述第一目标资源和第i资源的实时负载率,在所述第i资源的负载率大于所述第三阈值时,在第一目标资源的负载率小于等于第三阈值的情况下,继续增加对所述第一目标资源数据量的分配;在第一目标资源的负载率大于等于所述第三阈值时,停止增加对所述第一目标资源数据量的分配,同时将第i节点的数据分配给第二目标资源,其中所述第二目标资源的评分仅次于所述第一目标资源,重复本步骤,直至第i资源的负载率小于等于所述第三阈值;在所述第i 资源的负载率小于等于所述第三阈值时,结束资源调度流程,其中所述第三阈值大于所述第二阈值。
作为本发明的一种优选技术方案,所述步骤S5中,基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配,包括:在所述第一性能大于所述第二性能时,将所述第一节点和所述第二节点对应资源进行调换,在所述第一性能小于所述第二性能时,不进行调换。
作为本发明的一种优选技术方案,所述步骤S5中,基于所述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间,包括:计算在预定时间段内将所述第一节点和所述第二节点的平均数据流量,在连续N个所述预定时间段内,所述第一节点的平均数据流量都小于所述第二节点的平均数据流量时,将所述第一节点对应的区间和所述第二节点对应的区间进行调换,还将所述第一节点对应的资源和所述第二节点对应的资源进行调换。
作为本发明的一种优选技术方案,在步骤S2中,还将周期性获取的各个节点的数据内容、数据流量和所述数据流量实际持续时长添加到各个节点的历史数据中,对各个节点的神经网络模型进行训练和更新。
本发明还提供基于神经网络的集群资源智能调度系统,所述系统用于实现上述的基于神经网络的集群资源智能调度方法,所述系统包括:
建立单元,用于基于集群每个节点的历史数据训练每个节点的神经网络模型,所述每个节点的历史数据包括数据内容、数据流量及持续所述数据流量的时长;
存储单元,用于存储各个节点的历史数据;
分配单元,用于基于所述集群中每个节点的历史数据流量平均值和集群中每个资源的性能,为每个节点分配对应的资源;还用于基于所述各个节点持续当前流量的时长和所述各个节点对应各个资源的负载和数据处理速度,重新在区间内为每个节点重新分配资源;并基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配;
划分单元,用于将所述每个节点和对应的资源按照所述每个节点的数据流量平均值划分区间;述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间;
检测单元,用于周期性的检测各个区间内各个资源的负载,还基于所述神经网络模型和所述各个资源对应的各个节点的数据内容、数据流量获取所述各个节点持续当前流量的时长;以预设周期检测第一区间数据流量最小第一节点对应资源的第一负性能和第二区间数据流量最大第二节点对应资源的第二性能。
本发明还提供一种存储介质,所述存储介质存储有程序指令,其中在所述程序指令运行时控制所述存储介质所在设备执行上述的基于神经网络的集群资源智能调度方法。
与现有技术相比,本发明的有益效果至少如下所述:
本发明通过对将集群中的节点按照数据流量进行划分区间同时将资源按照性能给各个节点进行分配,其中节点的数据流量越大对应资源的性能越高,减少资源调度的概率,同时在第i资源对应的负载率大于第一阈值时,首先在区间内部进行资源调度,查找负载率小于第二阈值的空闲资源,在空闲资源中存在对应节点数据流量较小、资源性能较高且当前数据流量持续时长小于第i资源时,将上述空闲资源与第i资源进行调换,提高资源利用率,并且在满足上述条件的空闲资源不存在时,将区间内全部空闲进行评分,该评分不仅考虑了资源的空闲率还考虑了资源的性能,更加准确的反映资源承载数据的能力,将第i资源对应的数据分配给评分较高的资源,可以减少资源分配的次数,达到提高整个集群的运行效率的目的,同时在区间内进行资源调度还减少了在全部资源中查找空闲资源的计算量,为了更进一步的实现动态的有效的资源调度,还结合相邻区间内资源的性能和节点的数据流量进行资源调度和节点的区间划分,通过上述方案的区间内和区间之间资源调度的相互配合,更加有效的提高了集群的运行效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于神经网络的集群资源智能调度方法,如图1所示,所述方法包括如下步骤:
步骤S1:基于集群每个节点的历史数据训练每个节点的神经网络模型,所述每个节点的历史数据包括数据内容、数据流量及所述数据流量的持续时长,所述神经网络模型通过输入对应节点的数据内容和数据流量,输出所述数据流量的持续时长;
具体的,上述神经网络模型采用BP模型,隐藏神经元的数量和隐藏层的层数根据实验获得,通过上述神经网络模型可以预测保持当前数据流量的时间长度,作为是否进行资源调度的条件之一,在节点上对应的资源的负载率大于第一阈值时,若节点保持当前数据流量的时间较短则表示较大数据流量只是瞬时的,不需要进行资源调度,减少资源调度产生的资源消耗,在较大数据流量持续时间较长时,则考虑进行资源调度,提高数据处理速度,提高集群的运行效率。
步骤S2:基于所述集群中每个节点的历史数据流量平均值和集群中每个资源的性能,为每个节点分配对应的资源,还将所述每个节点和对应的资源按照所述每个节点的数据流量平均值划分区间;
具体的,在初始状态下,按照节点的数据流量给每个节点配置资源,节点的数据流量越大分配资源的性能越高,每个节点的数据能够得到及时的处理,使整个集群能够高速运转,同时按照每个节点的数据流量均值从高到低进行排序,并按照排序划分区间,根据各个节点的数据流量的变化在首选在同一区间中进行资源调度,减少资源查找的工作量,同时由于在同一区间内数据流量和资源的性能较为接近,根据资源的负载率进行资源调度提高资源的利用率。
步骤S3:周期性的检测各个区间内各个节点对应资源的负载率,还基于所述神经网络模型和所述各个资源对应的各个节点的数据内容、数据流量获取所述各个节点持续当前流量的时长;
具体的,以设定周期检测各个区间内各个节点对应资源的负载率,所述负载率包括CPU、GPU和内存的占用率等,还将上述各个区间中各个节点对应的数据内容、数据流量输入各个节点对应的神经网络模型中,获取各个节点持续当前流量的时长,基于上述各个节点资源负载率和持续当前数据流量时长,进行资源调度,提高整个集群的运行效率。
步骤S4:基于步骤S3中所述各个区间中各个节点对应资源的负载率及各个节点持续当前流量的时长,在区间内为每个节点重新分配资源;
具体的,在各个区间中,在资源负载率大于第一阈值时,
步骤S5:以预设周期检测第一区间数据流量最小第一节点对应资源的第一性能和第二区间数据流量最大第二节点对应资源的第二性能,基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配,还基于所述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间。
具体的,上述第一区间节点的数据流量大于第二区间节点的数据流量,随着集群运行时间的推移和资源的再分配,在每个区间中数据流量最小的节点对应的资源的性能是第一区间中最差的,同理在第二区间中,数据流量最大的节点对应的资源的性能是第二区间中性能最好的,随着资源的运行时间和处理数据数量的增多,资源的性能都在下降,由于第一区间中的数据流量大,为了保证处理速度,第一区间中的资源应为性能较好的资源,以承受大数据流量的高效处理,在第一性能小于第二性能时,将第一节点的资源和第二节点的资源进行调换,同时由于在不同区间中的节点的数据流量是动态变化的,第二区间中的最大数据流量的节点有可能大于第一区间中数据流量最小的节点,此时将第一节点和第二节点的位置进行调换,将第一节点划分到第二区间中,将第二节点划分到第一区间中,实现区间之间节点和资源的动态调整,提高整个集群的运行效率。
进一步地,所述步骤S2包括如下步骤:
步骤S21:基于所述集群中每个节点的历史数据流量平均值从大到小进行排序获取节点队列,将集群中每个资源的性能从高到低进行排序;
步骤S22:为节点队列中每个节点匹配合适的资源,其中节点的历史数据流量平均值越大,对应的资源的性能越高;
步骤S23:将节点队列进行区间划分,连续N个节点为一个区间。
具体的,通过将集群中各个节点数据流量大小和各个资源的性能高低进行资源分配,其中,数据流量大的节点分配的资源对应的性能越高,尽量保证对应节点处的资源能够处理该节点的数据,避免资源调度引起的资源消耗,同时按照节点的数据量大小排序进行区间划分,便于在区间内进行资源调度,减少在其中一个资源负载率超过第一阈值时,资源调度的工作量。
进一步地,所述步骤S3中,以预设周期检测各个区间内每个节点对应的资源负载率,还获取各个节点的内容和数据流量,将所述各个节点的内容和数据流量输入所述各个节点的神经网络模型获取当前数据流量的时持续间,所述资源负载率包括CPU、GPU、内存占用率、数据处理延迟时间。
进一步地,步骤S41:在第i资源的负载率大于第一阈值且所述第i资源对应的第i节点对应数据流量的第i时长大于第一时长时,在对应区间内查找性能高于所述第i资源且负载率小于第二阈值的第j资源,在满足所述第i节点对应的数据流量大于所述第j节点对应的数据流量时,在第j节点对应的数据流量持续第j时长大于所述第i时长时,将所述第i节点对应的第i资源与所述第j节点对应的第j资源直接进行交换;
具体的,在第i资源的负载率时且所述第i资源对应的第i节点对应数据流量的第i时长大于第一时长时,即为在第i资源的负载率较大且持续时间不是瞬时的,示例性的,上述第一时长为小于等于3s,此时,需要通过将第i资源对应节点的数据流量部分转移至相对较空闲的资源或者将第i节点的第i资源更换成性能更高的资源,来减少第i资源的处理任务,从而降低负载率,提高集群的运行效率,在第i节点的数据流量大于所述第j节点的数据流量,且第j节点数据流量持续时间大于第i时长,即第j节点的空闲时长大于第i节点的高负载率时长,又由于第j资源的性能高于第i资源的性能,因此,可以将第j资源与第i资源进行位置调换,让性能更优更空闲的第j资源去执行第i结点处数据流量更大的数据处理任务,同时让性能稍差的第i资源去执行第j节点处数据流量较小的数据处理任务,在充分利用资源的同时,提高运行效率。
步骤S42:在所述第j资源不存在时,计算所述区间各个节点对应资源负载率小于第二阈值的空闲资源进行评分,并将全部所述空闲资源按照评分进行排序,所述评分的表达式为:
其中,为资源评分,/>为资源的空闲率,/>为资源的性能,/>为/>的权重,/>为/>的权重;
具体的,在进行资源分配的时候不能只用资源的空闲率区判断资源对数据的处理能力,还需要结合资源的性能,例如:在资源的空闲率较高时,在资源的性能较差的情况下,再分配数据时,很少的数据就能使资源的负载率升高很多,只有在资源的空闲率较高且资源的性能也较高时,才能承载更多的数据量,因此将资源的空闲率和资源的性能来对资源进行综合评价才是更合理的。
步骤S43:将第i节点的数据分配给评分最高的第一目标资源,在数据分配的过程中,检测所述第一目标资源和第i资源的实时负载率,在所述第i资源的负载率大于所述第三阈值时,在第一目标资源的负载率小于等于第三阈值的情况下,继续增加对所述第一目标资源数据量的分配;在第一目标资源的负载率大于等于所述第三阈值时,停止增加对所述第一目标资源数据量的分配,同时将第i节点的数据分配给第二目标资源,其中所述第二目标资源的评分仅次于所述第一目标资源,重复本步骤,直至第i资源的负载率小于等于所述第三阈值;在所述第i 资源的负载率小于等于所述第三阈值时,结束资源调度流程,其中所述第三阈值大于所述第二阈值。
具体的,通过将第i节点所属区间中的空闲资源进行评分,评分越高的资源承载数据的能力越强,因此,优先将数据分配给数据承载能力强的资源,可以减少资源分配的次数,例如:将第i节点的数据只分配给上述第一目标资源就可以使第i资源的负载率小于第三阈值,而不需要再分配给其他资源;在分配的过程中,在确保目标资源的负载率小于第三阈值的范围内来增加对目标资源的数据分配,同时在一个目标资源不能承受第i资源超出第三阈值负载率的数据量的情况下,还继续按照评分选取下一个目标资源进行数据分配,直至第i资源的负载率小于第三阈值,通过上述方案不仅能够提高第i资源的运行速度,减少分配次数,同时还能提高整个集群的运行速度。
进一步地,所述步骤S5中,基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配,包括:在所述第一性能大于所述第二性能时,将所述第一节点和所述第二节点对应资源进行调换,在所述第一性能小于所述第二性能时,不进行调换。
具体的,在运行的过程中,随着时间的推移资源的性能可能发生变化,在第一区间中通过上述的技术方案,可以获得数据流量较小的节点对应的资源的性能在第一区间中最差,同样的在第二区间中,数据流量最大的节点对应的资源的性能在第二区间中最好,因此可以将第一资源和第二资源的性能进行比较,根据比较结果进行资源调度,资源的性能包括资源处理数据的速度,通过现有技术容易获得,通过上述方案能够使数据流量越大的区间对应资源的性能越好,通过区间内部的资源调度和区间之间的资源调度的相互配合,更加有效的提高整个集群的运行效率。
进一步地,所述步骤S5中,基于所述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间,包括:计算在预定时间段内将所述第一节点和所述第二节点的平均数据流量,在连续N个所述预定时间段内,所述第一节点的平均数据流量都小于所述第二节点的平均数据流量时,将所述第一节点对应的区间和所述第二节点对应的区间进行调换,还将所述第一节点对应的资源和所述第二节点对应的资源进行调换。
具体的,通过上述方案对区间的节点流量进行检测在第二区间的节点的数据流量大于第一区间的数据流量时,通过将节点进行区间调整,使大数据流量的节点分配到大数据流量的区间,结合上述区间资源调度,使数据流量大的节点分配到性能更优的资源,从而达到提高整个集群运行效率的目的。
进一步地,在步骤S2中,还将周期性获取的各个节点的数据内容、数据流量和所述数据流量实际持续时长添加到各个节点的历史数据中,对各个节点的神经网络模型进行训练和更新。
具体的,通过上述方案增加了神经网络的训练数据数量,并且该数据更能节点最近的数据流量,经过训练后的神经网络模型更加精准,为了提高集群运行速度的资源调度提供了更加精准的数据流量时长预测。
本发明还提供一种基于神经网络的集群资源智能调度系统,所述系统用于实现上述的基于神经网络的集群资源智能调度方法,如图2所示,所述系统包括:
建立单元,用于基于集群每个节点的历史数据训练每个节点的神经网络模型,所述每个节点的历史数据包括数据内容、数据流量及持续所述数据流量的时长;
存储单元,用于存储各个节点的历史数据;
分配单元,用于基于所述集群中每个节点的历史数据流量平均值和集群中每个资源的性能,为每个节点分配对应的资源;还用于基于所述各个节点持续当前流量的时长和所述各个节点对应各个资源的负载和数据处理速度,重新在区间内为每个节点重新分配资源;并基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配;
划分单元,用于将所述每个节点和对应的资源按照所述每个节点的数据流量平均值划分区间;述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间;
检测单元,用于周期性的检测各个区间内各个资源的负载,还基于所述神经网络模型和所述各个资源对应的各个节点的数据内容、数据流量获取所述各个节点持续当前流量的时长;以预设周期检测第一区间数据流量最小第一节点对应资源的第一负性能和第二区间数据流量最大第二节点对应资源的第二性能。
本发明还提供一种存储介质,所述存储介质存储有程序指令,其中在所述程序指令运行时控制所述存储介质所在设备执行上述的基于神经网络的集群资源智能调度方法。
需要更加注意的是:基于各个区间中各个节点对应资源的负载率、各个节点持续当前流量的时长和各个资源的性能重新在区间内为每个节点重新分配资源;以预设周期检测第一区间数据流量最小第一节点对应资源的第一性能和第二区间数据流量最大第二节点对应资源的第二性能,基于所述第一性能和所述第二性能重新为所述第一节点和所述第二节点进行资源分配,还基于所述第一节点的数据流量和所述第二节点的数据流量为所述第一节点和所述第二节点重新划分区间。
综上所述,本发明通过对将集群中的节点按照数据流量进行划分区间同时将资源按照性能给各个节点进行分配,其中节点的数据流量越大对应资源的性能越高,减少资源调度的概率,同时在第i资源对应的负载率大于第一阈值时,首先在区间内部进行资源调度,查找负载率小于第二阈值的空闲资源,在空闲资源中存在对应节点数据流量较小、资源性能较高且当前数据流量持续时长小于第i资源时,将上述空闲资源与第i资源进行调换,提高资源利用率,并且在满足上述条件的空闲资源不存在时,将区间内全部空闲进行评分,该评分不仅考虑了资源的空闲率还考虑了资源的性能,更加准确的反映资源承载数据的能力,将第i资源对应的数据分配给评分较高的资源,可以减少资源分配的次数,达到提高整个集群的运行效率的目的,同时在区间内进行资源调度还减少了在全部资源中查找空闲资源的计算量,为了更进一步的实现动态的有效的资源调度,还结合相邻区间内资源的性能和节点的数据流量进行资源调度和节点的区间划分,通过上述方案的区间内和区间之间资源调度的相互配合,更加有效的提高了集群的运行效率。
上述的实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
上述的实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
上述的仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。