1.一种基于数据流预测的Storm任务伸缩调度算法,其特征在于:该算法包括以下步骤:S1:设置目标函数;
S2:求解Topology中worker数和各个组件的executor数;
S3:预测Topology要处理的数据流并求解开始组件spout所需的executor数;
S4:任务调度。
2.如权利要求1所述的一种基于数据流预测的Storm任务伸缩调度算法,其特征在于:所述S1设置目标函数为: 其中,Ntuple为所处理tuple的数量,Trec为tuple由发送节点到处理节点所需的接受时间,Tqueue为tuple到处理节点后因bolt繁忙tuple排队的时间,Tproc为tuple的逻辑处理时间,Tsend为tuple处理完后形成新的tuple的发送时间。
3.如权利要求1所述的一种基于数据流预测的Storm任务伸缩调度算法,其特征在于:所述S2具体为:
S201:确定Topology中开始组件spout所需的executor数,通过公式依次求得后继组件中的较优的executor数;其中,Nexecutori为第i个组件的executor数量,Nexecutori-1为第i-1个组件的executor数量,Vgenerate为前一组件的executor的tuple产生速度,通过监控Topology的运行数据然后取平均值获得,t为一个周期开始后的时间,σ为通过多次试验然后取得一个较优的值,Vproc为第i个组件中executor的tuple处理速度,通过监控Topology的运行数据然后取平均值获得;
S202:求得Topology所需的executor总数;
S203:根据Storm官方建议每个worker中15个executor,求解得到Topology所需的worker数。
4.如权利要求1所述的一种基于数据流预测的Storm任务伸缩调度算法,其特征在于:所述S3具体为:
使用时间序列模型(Auto Regressive Moving Average,ARIMA)预测Topology要处理的数据量,ARIMA(p,d,q)表示为:Xt=σ1Xt-1+σ2Xt-2+…+σpXt-p+ut-θ1ut-1-θ2ut-2-…-θqut,其中p为自回归项数;q为滑动平均项数;Xt-1,Xt-2为Xt的前期值;ut,ut-1,ut-2为Xt在t期,t-1期,t-2期的随机误差项,是相互独立的白噪声序列;d是使原序列Xt由非平稳时间序列转换为平稳时间序列时对其成为平稳序列所做的差分次数;σ1,σ2,…,σp为自回归系数,θ1,θ2,…,θq为移动平均系数,是模型的待估参数。
5.如权利要求1所述的一种基于数据流预测的Storm任务伸缩调度算法,其特征在于:所述S4具体为:当获得topology中各组件较优的并行度后,进行Storm任务调度;使用线上调度算法,在运行时,通过监控获得实时数据,包括executor的负载情况、executor的tuple接受率和发送率、集群中的节点负载;然后进行调度,在调度中最小化节点间的网络通信,并保存集群中的节点负载均衡;
所述线上调度算法具体为:将executor按照traffic load降序排列,然后按序依次将executor分配到负载最轻的slot上,同时每个worker node上同一个Topology的executor会被分配到同一个slot上并且每个worker node不过载。