1.一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述方法包括:S1:对服务器进行初始化,得到任务信息参照表;
S2:用户发起任务调度请求;
S3:服务器接收任务调度请求后获取任务数据信息;
S4:判断该任务是否限制任务完成时间;
若限制任务完成时间,则进行分区数的初步确定;并根据初步确定的分区数确定最终任务分区数;
若不限制任务完成时间,则判断该任务在任务信息参照表中是否存在;
若不存在,则进行Spark默认的任务调度与任务执行;
若存在,则进行任务分区数的最终确定;
S5:根据最终任务分区数进行服务器的任务调度与执行,完成任务调度;
S6:采用能耗评估模型计算任务运行情况的服务器使用能耗,将执行该任务的数据信息以及服务器使用能耗记录到任务信息参照表中,更新任务信息参照表;
S7:用户发起新的任务调度请求时,返回步骤S3。
2.根据权利要求1所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述任务数据信息包括:应用程序Application的运行情况以及任务数据参数;所述任务数据参数包括:CPU使用率、I/O使用率、任务规模以及应用程序运行时间。
3.根据权利要求1所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述分区数的初步确定的过程包括:步骤1:采用K-means算法对任务类型进行划分;
步骤2:根据任务类型划分结果以及任务运行信息参照表中的数据确定初步分区数。
4.根据权利要求3所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述对任务类型进行划分过程包括:步骤11:将2-20000000之间所有的质数、排序Sort作为任务聚类的初始聚类中心点;
步骤12:将CPU使用率和I/O使用率作为特征值,采用特征值把应用程序Application表示为二维坐标;
步骤13:对将要执行的任务进行初始化测试,根据初始化测试结果计算任务间的差异度,将该差异度的值作为不同应用程序之间的欧式距离D;
步骤14:根据步骤11得到的初始聚类中心点以及步骤13的欧式距离对任务数据信息进行任务聚类;并得到任务类型。
5.根据权利要求4所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,应用程序用二维坐标表示为:其中, 为应用程序在ti时刻的CPU使用率, 表示应用程序运行ti时刻的I/O使用率。
6.根据权利要求4所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述不同应用程序之间的欧式距离D的计算公式为:其中, 为应用程序在ti时刻的CPU使用率, 表示应用程序在tt时刻的CPU使用率,为应用程序运行ti时刻的I/O使用率, 表示应用程序运行tt时刻的I/O使用率。
7.根据权利要求1所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述进行任务分区数的最终确定的过程包括:步骤1:分别在对应是否限定任务截止时间的不同要求下,从任务信息参照表中选取不同的历史任务的信息作为分区数调整的因素;
限定任务截止时间的情况下:任务运行时间为主因素,能效比为次因素;
非限定任务截止时间的情况下:能效比为主因素,任务信息参照表中已有的分区数为次因素;
步骤2:获取集群中各个服务器的资源使用情况以及运行状态;
步骤3:使用分区调整公式调整分区数,得到最终的分区数;若服务器的可用资源不足,将任务进行延时后重新确定最终分区数。
8.根据权利要求7所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,分区调整公式为:其中,N为已存在相似情况下的分区数,Tc为完成相似任务所使用的时间,Tt为限定任务截止时间与当前时间的差值,r为能效值,L为剩余可用的节点数,C为常数,M为调整后的最终分区数,Min(.)表示选取最小值。
9.根据权利要求1所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述任务调度与运行的过程包括:步骤1:将服务器作为节点,并将各个节点分为CPU性能和I/O性能较强的两类节点;将两类节点分为2个集合;
步骤2:将不同类型的任务调度到两类不同性能的节点上;
步骤3:任务调度完成后,进入任务运行。
10.根据权利要求1所述的一种基于动态分区的高能效Spark任务调度方法,其特征在于,所述能耗评估模型包括能耗模型E与能效模型η;
能耗模型的表达式为:
其中,F为CPU的额定运行频率、在时刻ti时的CPU使用率为 t为应用程序运行时间;
能效模型表达式为:
其中,C、C1、C2为常数,E为能耗、Uc为CPU使用率、UIo为IO使用率、T为应用程序运行时间。