分布式计算平台下基于QoS约束的视频流处理方法和系统与流程

文档序号:24068802发布日期:2021-02-26 14:10阅读:104来源:国知局
分布式计算平台下基于QoS约束的视频流处理方法和系统与流程
分布式计算平台下基于qos约束的视频流处理方法和系统
技术领域
[0001]
本发明属于分布式计算技术领域,更具体地,涉及一种分布式计算平台下基于qos约束的视频流处理方法和系统。


背景技术:

[0002]
随着视频处理技术的不断提升,摄像头的部署数量也不断在增加,这也意味着越来越多的实时视频流需要得到及时的处理。视频流处理由于其数据量大、计算量也大,数据时效性强等特点,不但对软硬件平台要求高,应用开发也相对复杂,一直是一个门槛较高的研究领域。
[0003]
现有的大数据处理平台(例如spark、flink、storm等)都提供了数据流处理模型,并且提供自动的数据分割、任务调度、负载均衡、数据缓存、数据通信等功能,其大幅度降低了系统开发的复杂度,并能够适应大容量和高并发的高通量需求;此外,其还能够直接通过增加计算资源,在不修改软件的前提下提升视频的处理性能和计算规模。
[0004]
然而,现有基于大数据处理平台的数据流处理模型仍然具有一些不可忽略的技术问题:第一、由于该数据流处理模型仅仅只能适用于处理固定的数据流处理任务,其先对任务进行划分,然后在各个处理器上对划分后的任务并行执行,却无法对任务参数进行修改,因此无法满足不同用户对任务的具体需求(例如不同任务对应的处理时延和准确度等);第二、由于该数据流处理模型是根据系统的运行效率或用户的设定进行系统资源的分配和调度,而不能根据任务的具体需求(例如不同任务对应的处理时延和准确度等)进行分配和调度,从而会造成系统资源分配和调度的效率偏低;第三、由于该数据流处理模型主要基于用户自身定义每次处理的数据流处理窗口(即每次处理的视频流数据量),在处理模型的处理量过大时,会导致用户不能及时得到响应。


技术实现要素:

[0005]
针对现有技术的以上缺陷或改进需求,本发明提供了一种分布式计算平台下基于qos约束的视频流处理方法和系统,其目的在于,解决现有基于大数据处理平台的数据流处理模型由于无法对任务参数进行修改,因此无法满足不同用户对任务的具体需求的技术问题,以及由于不能根据任务的具体需求进行分配和调度,导致系统资源分配和调度的效率偏低的技术问题,以及由于该数据流处理模型主要基于用户自身定义每次处理的数据流处理窗口,导致处理模型的处理量过大时,用户不能及时得到响应的技术问题。
[0006]
为实现上述目的,按照本发明的一个方面,提供了一种分布式计算平台下基于qos约束的视频流处理方法,包括以下步骤:
[0007]
(1)获取用户提交的视频流数据处理请求,该视频流数据处理请求包括视频流数据的来源信息、视频流数据的处理函数、视频流数据的分组函数和聚合函数、以及处理函数使用的视频流数据的初始值d,其中d为任意大于0的正整数;
[0008]
(2)根据步骤(1)获取的视频流数据的函数中数据之间的依赖关系建立处理序列,
并根据步骤(1)获取的视频流数据处理请求中视频流数据的函数的类型将该处理序列划分为多个处理阶段,所有的处理阶段构成处理阶段集合s={s1,s2...s
m
},其中m表示处理阶段集合中的处理阶段总数;
[0009]
(3)针对步骤(2)得到的处理阶段集合s中仅包括处理函数的每一个处理阶段而言,利用模拟退火启发式搜索算法获得该处理阶段内每个处理函数小于其最大时延l、最小准确度a并且使用系统资源价值最低的处理函数配置信息,所有的处理函数配置信息构成处理函数配置信息集合处理函数配置信息集合其中处理函数配置信息表示处理函数的配置信息是由处理阶段集合s中第x1个处理阶段s
x1
中第x2个处理函数p
q
产生,x1∈[1,m],x2∈[1,nx2],nm为处理阶段集合s中第m个处理阶段的处理函数总数,nx2为处理阶段集合s中第x2个处理阶段中处理函数的总数,q∈[1,n]。
[0010]
(4)针对步骤(2)得到的阶段集合中每个处理阶段中的每个处理函数而言,根据步骤(1)得到的处理函数的最大时延l以及步骤(3)得到的处理函数配置信息确定该处理函数的视频流窗口,将每个处理阶段的所有处理函数的视频流窗口中的最小视频流窗口作为该处理阶段对应的视频流窗口,所有处理阶段的视频流窗口构成集合ns={ns1,ns2,...,ns
m
}。
[0011]
(5)针对步骤(2)得到的处理阶段集合s中仅包括处理函数的每一个处理阶段而言,根据每个处理阶段内处理函数中数据之间的依赖关系建立该处理阶段对应的有向无环图,所有处理阶段对应的有向无环图构成有向无环图集合h;
[0012]
(6)对于步骤(5)得到的处理阶段集合s对应的有向无环图集合中的每个有向无环图而言,使用广度优先遍历算法将该有向无环图划分为多个层次,所有层次构成该有向无环图对应的层次集合b={b1,b2,...b
num4
},其中b
count
表示有向无环图中的第count层,num4表示划分的层次总数,且count∈[1,num4]。
[0013]
(7)根据步骤(6)得到的每个有向无环图对应的层次集合b确定与该有向无环图对应的处理阶段的资源分配总量集合和并行通量,并从处理阶段集合s的所有资源分配总量集合和所有并行通量中选择最大资源分配总量集合umax和最大并行通量kmax;
[0014]
(8)向集群管理结点申请启动kmax个任务的进程,将最大资源分配总量集合umax分配给每个进程,并从集群管理结点获取每个进程的网络地址,所有进程的网络地址组成集合
[0015]
(9)使用步骤(3)获取的处理函数配置信息集合q中每个处理函数对应的可更改参数集合替换步骤(2)得到的处理阶段集合s中处理阶段内对应处理函数对应的可更改参数集合,并将处理阶段集合s中的每个处理阶段对应的的视频流窗口设置为步骤(4)获取的对应处理阶段对应的视频流窗口,并将处理阶段集合s中的每个处理阶段封装成单个任务,所有任务构成任务集合e={e1,e2,...,e
m
},其中e
num5
表示第num5个处理阶段封装成的任务,且num5∈[1,m];
[0016]
(10)针对步骤(9)得到的任务集合中的每一个任务而言,将该任务复制kmax份,并根据步骤(8)得到的网络地址集合中的网络地址将复制后的kmax份任务发送给所有进程,并接收每个进程在执行任务过程中每隔周期t返回的进程执行信息pe
t5
,其中所有进程执行任务期间返回的任务执行情况构成进程执行信息集合pe={pe1,pe2,...,pe
mmax
},其中t5∈
[1,k
max
],t为任意大于零的自然数。
[0017]
(11)根据步骤(10)获得的进程执行信息集合pe将所需转移剩余处理时间长的进程待处理的视频流数据转移到所需剩余处理时间短的进程。
[0018]
优选地,视频流数据的来源信息包括视频流数据的存储位置和存储速率r;
[0019]
视频流数据的处理函数包括该视频流数据的并行通路数k、处理函数的最大时延l和最低准确度a、以及该处理函数对应的可更改参数集合v={g1,g2,...g
h
},其中h表示可更改参数的总数。
[0020]
优选地,可更改参数集合v中的第num个可更改参数g
num
表示为五元组:
[0021]
g
num
={vn
num
,vmin
num
,vmax
num
,vstep
num
,voptimal
num
}
[0022]
其中num∈[1,h],vn
num
表示第num个可更改参数g
num
的变量名,vmin
num
表示第num个可更改参数g
num
的最小值,vmax
num
表示第num个可更改参数g
num
的最大值,vstep
num
表示从vmin
num
到vmax
num
的步进值,voptimal
num
表示能够使该处理函数获得最佳准确度的、第num个可更改参数的参考值,vmin
num
和vmax
num
为任意自然数,且vmin
num
<vmax
num

[0023]
处理阶段集合s中第x1个处理阶段s
x1
中第x2个处理函数p
q
的配置信息表示为四元组:
[0024][0025]
其中表示处理函数p
q
对应的可更改参数集合,表示将p
q
的可更改参数替换为v后得到的处理函数p

q
的准确度,表示视频流数据量为d时,处理函数p

k
的执行时间,表示处理函数p

q
执行时服务器的系统资源使用量集合。
[0026]
优选地,步骤(3)具体包括如下子步骤:
[0027]
(3-1)设置计数器i=1;
[0028]
(3-2)判断i是否等于处理阶段集合s中处理阶段的总数m,如果是则过程结束,否则转入步骤(3-3);
[0029]
(3-3)判断处理阶段集合s中处理阶段的第i阶段是否只包含处理函数,如果是转入步骤(3-4),否则转入步骤(3-12)
[0030]
(3-4)设置计数器j=0;
[0031]
(3-5)获取处理阶段集合s中第i个处理阶段s
i
中第j个处理函数p
j
对应的可更改参数集合v
j
,获取可更改参数集合v
j
中所有可更改参数的参考值组成的参考值集合v
optimal
={voptimal1,voptimal2...voptimal
h
},将可更改参数集合v
j
更新为参考值v
optimal
,并获得此时参考值集合v
optimal
对应的处理函数p
optimal
,执行该处理函数p
optimal
,以获得处理结果集合t
optimal
,其中voptimal
num1
表示参考值集合v
optimal
中的第num1个可更改参数的参考值,且num1∈[1,h]。
[0032]
(3-6)获取处理阶段集合s中第i个处理阶段s
i
中第j个处理函数p
j
中的可更改参数集合v
j
,从中随机选择多个可更改参数组成新的可更改参数集合v

j
={v1,v2,

,v
h
},其中v
num2
表示新的可更改参数集合v

j
中的第num2个可更改参数,v
num
∈[vmin
num2
,vmax
num2
],并且v
num2
能被vstep
num2
整除,num2∈[1,h];
[0033]
(3-7)将可更改参数集合v
j
更新为新的可更改参数集合v
j

,并获得此时新的可更
改参数集合v
j

对应的处理函数p
j

,执行该处理函数p
j

,以获得处理结果集合t
j

,根据处理结果集合t
optimal
和t
j

计算处理函数p
j

的准确度a
j

,并保存处理函数p
j

对视频流数据量为d的视频流数据的执行时间l
j


[0034]
(3-8)获取处理函数p
j

执行时服务器的系统资源使用量集合u

j
={u1,u2,u3...u
f
},并根据系统资源使用量u

j
计算服务器消耗的系统资源价值r
j
;其中u
x
表示第x类系统资源的系统资源使用量,f表示系统资源类型的总数,且有x∈[1,f]。
[0035]
(3-9)根据处理函数p
j

的准确度a
j
、执行时间l
j
以及服务器消耗的系统资源价值r
j
获取新的可更改参数集合v
j

对应的目标函数f(v
j

)=((a
j-a)*(l-l
j
))/r
j

[0036]
(3-10)将步骤(3-6)得到的新的可更改参数集合v

j
作为初始解,利用模拟退火启发式搜索算法搜索使目标函数f(v

j
)最大的可更改参数集合v

j
,并获得此时该可更改参数集合v

j
对应的处理函数p

j
,执行处理函数p

j
,得到处理函数p

j
的准确度a

j
、执行处理函数p

j
的时间l

j
、以及处理函数p

j
执行时服务器的系统资源使用量集合u

j
,将处理函数p

j
的准确度a

j
、执行时间l

j
以及系统资源使用量集合u

j
组装成处理阶段集合s中第i个处理阶段s
i
的第j个处理函数的配置信息四元组并发送给应用处理结点;
[0037]
(3-11)判断计数器j是否小于等于处理阶段集合s中第i个处理阶段s
i
中处理函数的总数ni,如果是,则设置j=j+1,然后返回步骤(3-5),否则转入步骤(3-12)。
[0038]
(3-12)设置i=i+1,并返回步骤(3-2)。
[0039]
优选地,服务器消耗的系统资源价值等于:
[0040][0041]
其中w
e
表示第e类系统资源对应的价值权重,并且且e∈[1,f];
[0042]
对于处理阶段集合s中第x1个处理阶段中的第x2个处理函数p
q
而言,其视频流窗口大小为np
q
=(l/l
q
)*d;
[0043]
其中l
q
是从步骤(3)获得的第x1个处理阶段的第x2个处理函数信息集合中的内的执行时间
[0044]
优选地,处理阶段集合s中第x3个处理阶段s
x3
构建的有向无环图中第x层b
x
的资源分配总量集合为并行通量为并行通量为其中u
b
表示从步骤(3)中获取的第x3个处理阶段的第b个处理函数中的配置信息四元组中解析的执行时服务器的系统资源使用量集合k
b
表示处理阶段集合s中第x3个处理阶段中第b个处理函数的并行通量,其中x3∈[1,m],j1∈[1,mb],jn∈[1,mb],mb为第d个处理阶段中处理函数的总数;
[0045]
第x3个处理阶段s
x3
对应的资源分配总量集合对应的资源分配总量集合第x3个处理阶段s
x3
对应的并行通量
[0046]
最大资源分配总量集合为umax=max(us1,us2....us
m
),最大并行通量kmax=max
(ks1,ks2....ks
m
)。
[0047]
优选地,第t3个进程的进程执行信息可以表示为三元组pe
t3
={node
t3
,sprocess
t3
,dremain
t3
},sprocess
t3
表示第t3个进程的实际处理速率,dremain
t3
第t3个进程待处理的视频流数据量,node
t3
表示第t3个进程的网络地址,均为任意自然数,t3∈[1,k
max
]。
[0048]
优选地,步骤(11)包括如下子步骤:
[0049]
(11-1)根据步骤(10)得到的所有进程执行信息对应进程所需剩余处理时间将步骤(10)得到的进程执行信息集合中的所有进程执行信息进行降序排序。
[0050]
(11-2)设置计数器i=1,j=kmax,index=1;
[0051]
(11-3)判断是否有i<j,如果是转入步骤(11-4),否则过程结束;
[0052]
(11-4)判断如果将步骤(8)得到的所有进程中进程node
i
的视频流数据转移到进程node
j
后,对应视频流数据的执行时间的减少量是否大于阈值dt,即是否有如果是则转入步骤(11-6),否则转入步骤(11-7);
[0053]
(11-5)根据步骤(11-4)视频流数据转移前后的进程创建三元组并设置index=index+1,通知进程node
j
从node
i
中获取视频流数据量为的视频流数据进行处理。
[0054]
(11-6)设置i=i+1,j=j-1,并返回步骤(11-3);
[0055]
(11-7)设置j=j

1,并返回步骤(11-3)。
[0056]
优选地,进程所需剩余处理时间等于该进程待处理的视频流数据量乘以进程的实际处理速率,即tremain
t3
=(sprocess
t3
*dremain
t3
);
[0057]
视频流数据的执行时间的减少量
[0058]
其中表示转移视频流数据量为的视频流数据到进程node
j
中所需的时间,且
[0059]
其中表示进程node
j
处理完成之后,进程node
i
剩余待处理的视频流数据量,且有:
[0060][0061]
按照本发明的另一方面,提供了一种分布式计算平台下基于qos约束的视频流处理系统,包括:
[0062]
第一模块,用于获取用户提交的视频流数据处理请求,该视频流数据处理请求包括视频流数据的来源信息、视频流数据的处理函数、视频流数据的分组函数和聚合函数、以及处理函数使用的视频流数据量的初始值d,其中d为任意大于0的正整数;
[0063]
第二模块,用于根据第一模块获取的视频流数据的函数中数据之间的依赖关系建立处理序列,并根据第一模块获取的视频流数据处理请求中视频流数据的函数的类型将该处理序列划分为多个处理阶段,所有的处理阶段构成处理阶段集合s={s1,s2...s
m
},其中m
表示处理阶段集合中的处理阶段总数;
[0064]
第三模块,用于针对第二模块得到的处理阶段集合s中仅包括处理函数的每一个处理阶段而言,利用模拟退火启发式搜索算法获得该处理阶段内每个处理函数小于其最大时延l、最小准确度a并且使用系统资源价值最低的处理函数配置信息,所有的处理函数配置信息构成处理函数配置信息集合其中处理函数配置信息表示处理函数的配置信息是由处理阶段集合s中第x1个处理阶段s
x1
中第x2个处理函数p
q
产生,x1∈[1,m],x2∈[1,nx2],nm为处理阶段集合s中第m个处理阶段的处理函数总数,nx2为处理阶段集合s中第x2个处理阶段中处理函数的总数,q∈[1,n]。
[0065]
第四模块,用于针对第二模块得到的阶段集合中每个处理阶段中的每个处理函数而言,根据第一模块得到的处理函数的最大时延l以及第三模块得到的处理函数配置信息确定该处理函数的视频流窗口,将每个处理阶段的所有处理函数的视频流窗口中的最小视频流窗口作为该处理阶段对应的视频流窗口,所有处理阶段的视频流窗口构成集合ns={ns1,ns2,...,ns
m
}。
[0066]
第五模块,用于针对第二模块得到的处理阶段集合s中仅包括处理函数的每一个处理阶段而言,根据每个处理阶段内处理函数中数据之间的依赖关系建立该处理阶段对应的有向无环图,所有处理阶段对应的有向无环图构成有向无环图集合h;
[0067]
第六模块,用于对于第五模块得到的处理阶段集合s对应的有向无环图集合中的每个有向无环图而言,使用广度优先遍历算法将该有向无环图划分为多个层次,所有层次构成该有向无环图对应的层次集合b={b1,b2,...b
num4
},其中b
count
表示有向无环图中的第count层,num4表示划分的层次总数,且count∈[1,num4]。
[0068]
第七模块,用于根据第六模块得到的每个有向无环图对应的层次集合b确定与该有向无环图对应的处理阶段的资源分配总量集合和并行通量,并从处理阶段集合s的所有资源分配总量集合和所有并行通量中选择最大资源分配总量集合umax和最大并行通量kmax;
[0069]
第八模块,用于向集群管理结点申请启动kmax个任务的进程,将最大资源分配总量集合umax分配给每个进程,并从集群管理结点获取每个进程的网络地址,所有进程的网络地址组成集合
[0070]
第九模块,用于使用第三模块获取的处理函数配置信息集合q中每个处理函数对应的可更改参数集合替换第二模块得到的处理阶段集合s中处理阶段内对应处理函数对应的可更改参数集合,并将处理阶段集合s中的每个处理阶段对应的的视频流窗口设置为第四模块获取的对应处理阶段对应的视频流窗口,并将处理阶段集合s中的每个处理阶段封装成单个任务,所有任务构成任务集合e={e1,e2,...,e
m
},其中e
num5
表示第num5个处理阶段封装成的任务,且num5∈[1,m];
[0071]
第十模块,用于针对第九模块得到的任务集合中的每一个任务而言,将该任务复制kmax份,并根据第八模块得到的网络地址集合中的网络地址将复制后的kmax份任务发送给所有进程,并接收每个进程在执行任务过程中每隔周期t返回的进程执行信息pe
t5
,其中所有进程执行任务期间返回的任务执行情况构成进程执行信息集合pe={pe1,pe2,...,pe
kmax
},其中t5∈[1,k
max
],t为任意大于零的自然数。
[0072]
第十一模块,用于根据第十模块获得的进程执行信息集合pe将所需转移剩余处理时间长的进程待处理的视频流数据转移到所需剩余处理时间短的进程。
[0073]
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0074]
(1)由于本发明采用了步骤(1)到步骤(3),其对处理函数设置了可更改参数,同时可更改参数能够根据用户不同的时延以及准确度进行自适应改变,因此能够解决现有基于大数据处理平台的数据流处理模型由于无法对任务参数进行修改,因此无法满足不同用户对任务的具体需求的技术问题;
[0075]
(2)由于本发明采用了步骤(3)到步骤(8)、以及步骤(9)到(11),其以利用最低资源价值为目标搜索处理函数的可更改参数,根据实际使用资源量集合确定应用所需资源充分保证应用拥有足够的资源量,同时步骤(9)到(11)根据进程执行信息调整视频流数据处理位置充分保证资源的有效利用,因此能够解决现有基于大数据处理平台的数据流处理模型由于不能根据任务的具体需求进行分配和调度,导致系统资源分配和调度的效率偏低的技术问题;
[0076]
(3)由于本发明采用了步骤(3)以及步骤(7),其根据处理函数实际的执行速率确定用户指定的处理时延内能够处理的数据流窗口并且选择最小值作为数据量处理窗口保证所有处理函数都能及时得到处理结果,因此能够解决现有基于大数据处理平台的数据流处理模型由于该数据流处理模型主要基于用户自身定义每次处理的数据流处理窗口,导致处理模型的处理量过大时,用户不能及时得到响应的技术问题。
附图说明
[0077]
图1是本发明分布式计算平台下基于qos约束的视频流处理方法的流程图。
具体实施方式
[0078]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0079]
分布式计算平台是指将数据存储、数据分析和计算等构建在由多个主机构成的集群上的软件平台。利用其提供的资源共享和协同计算的能力,可以很好地解决大规模数据的处理问题。目前主流的通用分布式计算平台有spark、flink、storm等,都提供了视频流计算模型,并且提供自动的数据分割、任务调度、负载均衡、数据缓存、数据通信等功能,大幅度降低了系统开发的复杂度,并且能够适应大容量和高并发的高通量需求,它们将固定的任务分配到各个主机上执行,并且根据系统的效率或者用户静态分配来进行资源和任务调度。
[0080]
本发明提供了一种分布式计算平台下基于qos约束的视频流处理方法,该方法将在分布式计算平台下,以视频流处理结果的准确度和时延这两个qos指标为目标进行资源分配和任务调度。视频流结果的准确度主要受到算法参数和算法实现方式影响,处理时延主要受到资源分配以及视频流处理窗口大小的制约。因此本发明提出一种搜索满足时延和
准确度的算法、参数、资源分配量以及窗口大小,根据此调整任务的参数和实现方式、分配计算资源的方法。
[0081]
整个分布式计算平台由分布式计算集群、数据存储介质以及用户提交平台三个部分组成。用户提交平台负责将用户的任务提交到分布式计算集群进行计算,分布式计算集群从数据存储介质中获取数据进行处理。分布式计算集群包括计算结点、集群管理结点以及应用处理结点,应用处理结点负责解析用户提交数据、分派应用任务到计算节点的以及跟踪应用执行过程;计算结点负责执行应用处理结点分派的任务并且向集群管理结点汇报资源情况;集群管理结点负责接收应用的资源请求,分配计算结点的资源给应用处理结点。
[0082]
本发明是一种分布式计算平台下基于qos约束的视频流处理方法,其首先针对视频流处理特性将qos定义为算子的准确度以及时延,并且基于此重新定义了视频流数据处理的编程模型;再将该模型发布至分布式处理框架,平台根据用户提交的处理过程,首先对各个算子进行分析,预先确定需求的准确度以及时延需求的资源量。再根据应用的数据依赖关系,对多个算子组合的情况(串行、并行、串行转并行、并行转串行)估计整个应用处理过程中应该分配的资源判断是否能满足要求并且根据之前的对算子的分析能够得到处理时间的估计时延。然后根据时延情况以及数据流的输入得到数据处理的窗口大小,再根据用户预估的视频流通路数对资源的总量进行估计,将任务分派给平台中满足资源需求条件的多台机器进行处理。在运行过程中接收任务处理的速率以及数据接收的速率要求是重新调整计算窗口大小,同时将某些处理计算量较大的通路将部分任务分派给某些视频通路数据量较少以及资源闲置较大的执行器,同时对资源重新调整。
[0083]
如图1所示,本发明提供了一种分布式计算平台下基于qos约束的视频流处理方法,包括以下步骤:
[0084]
(1)获取用户提交的视频流数据处理请求,该视频流数据处理请求包括视频流数据的来源信息、视频流数据的处理函数(表示为p)、视频流数据的分组函数(表示为r)和聚合函数(表示为c)、以及处理函数使用的视频流数据量的初始值d(即视频流数据能够被拆分的帧的数量),其中d为任意大于0的正整数。
[0085]
具体而言,视频流数据的来源信息包括视频流数据的存储位置和存储速率r。
[0086]
视频流数据的处理函数包括该视频流数据的并行通路数(即采集该视频流数据的摄像头个数)k、处理函数的最大时延l和最低准确度a、以及该处理函数对应的可更改参数(即对视频流数据处理结果的准确度或者时延产生影响的参数)集合v={g1,g2,...g
h
},其中h表示可更改参数的总数。
[0087]
对于处理函数对应的可更改参数集合v中的第num个可更改参数g
num
而言,其可以表示为五元组:
[0088]
g
num
={vn
num
,vmin
num
,vmax
num
,vstep
num
,voptimal
num
},其中num∈[1,h],vn
num
表示第num个可更改参数g
num
的变量名,vmin
num
表示第num个可更改参数g
num
的最小值,vmax
num
表示第num个可更改参数g
num
的最大值,vstep
num
表示从vmin
num
到vmax
num
的步进值,voptimal
num
表示能够使该处理函数获得最佳准确度的、第num个可更改参数的参考值,vmin
num
和vmax
num
为任意自然数,且vmin
num
<vmax
num

[0089]
(2)根据步骤(1)获取的视频流数据的函数中数据之间的依赖关系建立处理序列(该处理序列中的元素就是视频流数据的所有函数),并根据步骤(1)获取的视频流数据处
理请求中视频流数据的函数的类型将该处理序列划分为多个处理阶段,所有的处理阶段构成处理阶段集合s={s1,s2...s
m
},其中m表示处理阶段集合中的处理阶段总数,且为任意自然数;
[0090]
需要注意的是,在处理阶段的划分过程中,如果处理序列中存在多个连续的处理函数,则将其一起作为一个处理阶段;如果处理序列中存在多个连续的分组函数,则将每一个分组函数单独作为一个处理阶段;如果处理序列中存在多个连续的聚合函数,则将每一个聚合函数单独作为一个处理阶段。
[0091]
具体而言,函数中数据之间的依赖关系,指的就是下一个函数的输入数据依赖上一个函数的输出数据。
[0092]
假如,视频流数据的函数中数据之间的依赖关系是处理函数p1、处理函数p2、

、分组函数r
k
、分组函数r
k+1
、聚合函数c
k+2


、处理函数p
n
,其中n表示视频流数据的处理函数总数,且为任意自然数,则本步骤中建立的处理序列为{p1,p2...r
k
,p
k+1
,c
k+2
...,p
n
},最终得到的处理阶段集合s={s1,s2...s
m
}={{p1,p2...p
k-1
},{r
k
},{p
k+1
},{c
k+2
}...{p
k+3
...p
n
}}。
[0093]
上述步骤(2)的优点在于,处理序列中分组和聚合函数需要将一组连续的视频流数据分散到多个处理结点中才能进行后续处理,根据其位置划分为不同的阶段,能最大提高阶段内任务处理的并行度,并且减少整个应用处理的复杂度。
[0094]
(3)针对步骤(2)得到的处理阶段集合s中仅包括处理函数的每一个处理阶段而言,利用模拟退火启发式搜索算法获得该处理阶段内每个处理函数小于其最大时延l、最小准确度a并且使用系统资源价值最低的处理函数配置信息,所有的处理函数配置信息构成处理函数配置信息集合处理函数配置信息集合其中处理函数配置信息表示处理函数的配置信息是由处理阶段集合s中第x1个处理阶段s
x1
中第x2个处理函数p
q
产生,x1∈[1,m],x2∈[1,nx2],nm为处理阶段集合s中第m个处理阶段的处理函数总数,nx2为处理阶段集合s中第x2个处理阶段中处理函数的总数,q∈[1,n]。
[0095]
具体而言,处理阶段集合s中第x1个处理阶段s
x1
中第x2个处理函数p
q
的配置信息可以被表示为四元组其中表示处理函数p
q
对应的可更改参数集合,表示将p
q
的可更改参数替换为v后得到的处理函数p

q
的准确度,表示视频流数据量为d时,处理函数p

k
的执行时间,表示处理函数p

q
执行时服务器的系统资源使用量集合。
[0096]
本步骤具体包括如下子步骤:
[0097]
(3-1)设置计数器i=1;
[0098]
(3-2)判断i是否等于处理阶段集合s中处理阶段的总数m,如果是则过程结束,否则转入步骤(3-3);
[0099]
(3-3)判断处理阶段集合s中处理阶段的第i阶段是否只包含处理函数,如果是转入步骤(3-4),否则转入步骤(3-12)
[0100]
(3-4)设置计数器j=0;
[0101]
(3-5)获取处理阶段集合s中第i个处理阶段s
i
中第j个处理函数p
j
对应的可更改参数集合v
j
,获取可更改参数集合v
j
中所有可更改参数的参考值组成的参考值集合v
optimal

{voptimal1,voptimal2...voptimal
h
},将可更改参数集合v
j
更新为参考值v
optimal
,并获得此时参考值集合v
optimal
对应的处理函数p
optimal
,执行该处理函数p
optimal
,以获得处理结果集合t
optimal
,其中voptimal
num1
表示参考值集合v
optimal
中的第num1个可更改参数的参考值,且num1∈[1,h]。
[0102]
(3-6)获取处理阶段集合s中第i个处理阶段s
i
中第j个处理函数p
j
中的可更改参数集合v
j
,从中随机选择多个可更改参数组成新的可更改参数集合v

j
={v1,v2,

,v
h
},其中v
num2
表示新的可更改参数集合v

j
中的第num2个可更改参数,v
num
∈[vmin
num2
,vmax
num2
],并且v
num2
能被vstep
num2
整除,num2∈[1,h];
[0103]
(3-7)将可更改参数集合v
j
更新为新的可更改参数集合v
j

,并获得此时新的可更改参数集合v
j

对应的处理函数p
j

,执行该处理函数p
j

,以获得处理结果集合t
j

,根据处理结果集合t
optimal
和t
j

计算处理函数p
j

的准确度a
j

,并保存处理函数p
j

对视频流数据量为d的视频流数据的执行时间l
j


[0104]
具体而言,处理函数p
j

的准确度a
j
是处理结果集合t
optimal
与t
j

之间的召回率,且a
j

∈[0,1]。
[0105]
(3-8)获取处理函数p
j

执行时服务器的系统资源使用量集合u

j
,并根据系统资源使用量u

j
计算服务器消耗的系统资源价值r
j

[0106]
具体而言,服务器的系统资源包括cpu、内存等,系统资源使用量集合表示为u

j
={u1,u2,u3...u
f
},其中u
x
表示第x类系统资源的系统资源使用量,f表示系统资源类型的总数,且有x∈[1,f]。
[0107]
服务器消耗的系统资源价值等于:
[0108][0109]
其中w
e
表示第e类系统资源对应的价值权重,并且且e∈[1,f]。
[0110]
(3-9)根据处理函数p
j

的准确度a
j
、执行时间l
j
以及服务器消耗的系统资源价值r
j
获取新的可更改参数集合v
j

对应的目标函数f(v
j

)=((a
j-a)*(l-l
j
))/r
j

[0111]
具体而言,(a
j-a)表示处理函数p
j

获得的准确度增益,(l-l
j
)表示处理函数p
j

获得的时延增益。
[0112]
(3-10)将步骤(3-6)得到的新的可更改参数集合v

j
作为初始解,利用模拟退火启发式搜索算法搜索使目标函数f(v

j
)最大的可更改参数集合v

j
,并获得此时该可更改参数集合v

j
对应的处理函数p

j
,执行处理函数p

j
,得到处理函数p

j
的准确度a

j
、执行处理函数p

j
的时间l

j
、以及处理函数p

j
执行时服务器的系统资源使用量集合u

j
,将处理函数p

j
的准确度a

j
、执行时间l

j
以及系统资源使用量集合u

j
组装成处理阶段集合s中第i个处理阶段s
i
的第j个处理函数的配置信息四元组并发送给应用处理结点;
[0113]
(3-11)判断计数器j是否小于等于处理阶段集合s中第i个处理阶段s
i
中处理函数的总数ni,如果是,则设置j=j+1,然后返回步骤(3-5),否则转入步骤(3-12)。
[0114]
(3-12)设置i=i+1,并返回步骤(3-2)。
[0115]
(4)针对步骤(2)得到的阶段集合中每个处理阶段中的每个处理函数而言,根据步
骤(1)得到的处理函数的最大时延l以及步骤(3)得到的处理函数配置信息确定该处理函数的视频流窗口,将每个处理阶段的所有处理函数的视频流窗口中的最小视频流窗口作为该处理阶段对应的视频流窗口,所有处理阶段的视频流窗口构成集合ns={ns1,ns2,...,ns
m
}。
[0116]
具体而言,对于处理阶段集合s中第x1个处理阶段中的第x2个处理函数p
q
而言,其视频流窗口大小为np
q
=(l/l
q
)*d,其中l
q
是从步骤(3)获得的第x1个处理阶段的第x2个处理函数信息集合中的内的执行时间
[0117]
(5)针对步骤(2)得到的处理阶段集合s中仅包括处理函数的每一个处理阶段而言,根据每个处理阶段内处理函数中数据之间的依赖关系建立该处理阶段对应的有向无环图,所有处理阶段对应的有向无环图构成有向无环图集合h;
[0118]
(6)对于步骤(5)得到的处理阶段集合s对应的有向无环图集合中的每个有向无环图而言,使用广度优先遍历算法将该有向无环图划分为多个层次,所有层次构成该有向无环图对应的层次集合b={b1,b2,...b
num4
},其中b
count
表示有向无环图中的第count层,num4表示划分的层次总数,count∈[1,num4]。
[0119]
(7)根据步骤(6)得到的每个有向无环图对应的层次集合b确定与该有向无环图对应的处理阶段的资源分配总量集合和并行通量,并从处理阶段集合s的所有资源分配总量集合和所有并行通量中选择最大资源分配总量集合umax和最大并行通量kmax;
[0120]
具体而言,处理阶段集合s中第x3个处理阶段s
x3
构建的有向无环图中第x层b
x
的资源分配总量集合为并行通量为并行通量为其中u
b
表示从步骤(3)中获取的第x3个处理阶段的第b个处理函数中的配置信息四元组中解析的执行时服务器的系统资源使用量集合k
b
表示处理阶段集合s中第x3个处理阶段中第b个处理函数的并行通量,其中x3∈[1,m],j1∈[1,mb],jn∈[1,mb],mb为第d个处理阶段中处理函数的总数,第x3个处理阶段s
x3
对应的资源分配总量集合第x3个处理阶段s
x3
对应的并行通量
[0121]
在本步骤中,最终得到的最大资源分配总量集合为umax=max(us1,us2....us
m
),最大并行通量kmax=max(ks1,ks2....ks
m
)。
[0122]
(8)向集群管理结点申请启动kmax个任务的进程,将最大资源分配总量集合umax分配给每个进程,并从集群管理结点获取每个进程的网络地址(包括ip地址和端口号),所有进程的网络地址组成集合
[0123]
(9)使用步骤(3)获取的处理函数配置信息集合q中每个处理函数对应的可更改参数集合替换步骤(2)得到的处理阶段集合s中处理阶段内对应处理函数对应的可更改参数集合,并将处理阶段集合s中的每个处理阶段对应的的视频流窗口设置为步骤(4)获取的对应处理阶段对应的视频流窗口,并将处理阶段集合s中的每个处理阶段封装成单个任务,所有任务构成任务集合e={e1,e2,...,e
m
},其中e
num5
表示第num5个处理阶段封装成的任务,且num5∈[1,m];
[0124]
(10)针对步骤(9)得到的任务集合中的每一个任务而言,将该任务复制kmax份,并
根据步骤(8)得到的网络地址集合中的网络地址将复制后的kmax份任务发送给所有进程,并接收每个进程在执行任务过程中每隔周期t返回的进程执行信息pe
t5
,其中所有进程执行任务期间返回的任务执行情况构成进程执行信息集合pe={pe1,pe2,...,pe
mmax
},其中t5∈[1,k
max
],t为任意大于零的自然数。
[0125]
具体而言,第t3个进程的进程执行信息可以表示为三元组pe
t3
={node
t3
,sprocess
t3
,dremain
t3
},sprocess
t3
表示第t3个进程的实际处理速率,dremain
t3
第t3个进程待处理的视频流数据量,node
t3
表示第t3个进程的网络地址,均为任意自然数,t3∈[1,k
max
]。
[0126]
(11)根据步骤(10)获得的进程执行信息集合pe将所需转移剩余处理时间长的进程待处理的视频流数据转移到所需剩余处理时间短的进程。
[0127]
本步骤包括如下子步骤:
[0128]
(11-1)根据步骤(10)得到的所有进程执行信息对应进程所需剩余处理时间将步骤(10)得到的进程执行信息集合中的所有进程执行信息进行降序排序。
[0129]
具体而言,进程所需剩余处理时间等于该进程待处理的视频流数据量乘以进程的实际处理速率,即tremain
t3
=(sprocess
t3
*dremain
t3
);
[0130]
(11-2)设置计数器i=1,j=kmax,index=1;
[0131]
(11-3)判断是否有i<j,如果是转入步骤(11-4),否则过程结束;
[0132]
(11-4)判断如果将步骤(8)得到的所有进程中进程node
i
的视频流数据转移到进程node
j
后,对应视频流数据的执行时间的减少量是否大于阈值dt,即是否有如果是则转入步骤(11-6),否则转入步骤(11-7);
[0133]
具体而言,dt为任意大于零的自然数,优选为tremain
i
/3。
[0134]
转移视频流数据量为的视频流数据到进程node
j
中所需的时间其中
[0135][0136]
其中表示进程node
j
处理完成之后,进程node
i
剩余待处理的视频流数据量。
[0137]
视频流数据的执行时间的减少量
[0138]
(11-5)根据步骤(11-4)视频流数据转移前后的进程创建三元组并设置index=index+1,通知进程node
j
从node
i
中获取视频流数据量为的视频流数据进行处理。
[0139]
(11-6)设置i=i+1,j=j-1,并返回步骤(11-3);
[0140]
(11-7)设置j=j

1,并返回步骤(11-3)。
[0141]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1