CN110489214A - 云环境中数据密集型工作流的动态任务分配 - Google Patents
云环境中数据密集型工作流的动态任务分配 Download PDFInfo
- Publication number
- CN110489214A CN110489214A CN201910534070.8A CN201910534070A CN110489214A CN 110489214 A CN110489214 A CN 110489214A CN 201910534070 A CN201910534070 A CN 201910534070A CN 110489214 A CN110489214 A CN 110489214A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- workflow
- server
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明针对云环境中数据密集型工作流的动态任务分配问题,希望减少传输的数据大小,并且数据大小是在工作流执行过程中动态决定的而不是在执行之前。提出了一种动态分配方法来处理这种情况,其中典型的三个控制流(包括顺序,并行和排他选择)和任务中每个数据依赖的未知大小是两个主要挑战。在执行之前,基于修订的树遍历操作获得并行分支中的每个任务的冲突任务。此外,还基于改进的warshall算法获得从每个任务开始的最大数据路径,包括独占选择分支中的最大数据路径。在执行过程中,任务按控制流定义和一些基本原则决定的顺序依次动态分配。每个任务的云服务器都经过精心选择,以获得尽可能减少数据的最佳决策。案例研究表明了该方法的可行性和有效性。
Description
技术领域:
本发明涉及一种云环境中数据密集型工作流的动态任务分配方法,属于互联网和软件工程领域。
背景技术:
云环境提供对大量计算资源的按需网络访问。在云环境中,服务提供商可以以弹性方式将其服务部署到云服务器,而不是以更高的价格维护自己的服务器。随着云环境中出现的服务越来越丰富,许多数据密集型工作流程已在云服务器上执行。
为了在云环境中高效执行数据密集型工作流,重要的是将工作流中的任务合理地安排到合适的服务器。许多研究人员一直在努力解决这个问题。穆加达姆等人提出了一种多目标优化模型和三级实现结构,以减少工作流完成时间,包括数据通信成本,等待时间和任务处理时间。库马尔等人提出了两种负载均衡的工作流调度算法,以最小化完工时间并最大化平均云利用率。罗德里格兹等人提出了一种粒子群优化算法,在最后期限约束条件下使总体执行成本最小化。崔等人提出了一种数据局部感知工作流调度方法,其中考虑了数据传输时间和任务并行性,以改善执行时间。这些研究主要集中在工作流程的完成时间优化,而货币成本很少考虑。但是,支付服务费用也是工作流程执行的一个非常重要的标准。对于数据密集型工作流,任务通常需要处理大量数据,并且大部分成本都用于数据传输。在降低数据传输成本方面想做出成效,这需要在执行之前对要传输的数据进行估计。但是,在许多应用场景中,通常很难预先评估传输的数据大小。此外,工作流的任务可能在一些独占选择分支中,并且不会被执行,这也给分配带来了挑战。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容:
本发明的目的在于为了在云环境中执行数据密集型工作流期间降低传输数据大小,本发明提出了一种根据该工作流的实际执行情况动态分配任务到云服务器的方法,从而克服上述现有技术中的缺陷。
为实现上述目的,本发明提供了一种云环境中数据密集型工作流的动态任务分配方法,首先基于进程代数描述了具有数据依赖性和典型控制逻辑的工作流,即:顺序,并行和排他性选择。只有在执行任务后才能获得与数据依赖性相关的数据大小;然后根据相关数据大小和最大数据路径将每个任务分配给特定的服务器;最后得到在云环境中执行数据密集型工作流程期间降低传输数据大小的分配方案。
本发明进一步限定的技术方案为:
优选地,上述技术方案中,包括以下步骤:
1)基于工作流构建的二叉树获取冲突任务集
基于工作流模型,通过将任务放在叶子节点上,将运算符放在内部节点上,可以很容易地建立一个完整的二叉树来表示任务之间的控制流。如冲突任务集算法所示,可以通过二叉树遍历获得并行分支中的每个任务的冲突任务。
2)通过修改warshall算法以搜索最大数据路径集
每个任务的MDPi可能包含多个集合,并根据任务之间的数据依赖性获取。给定数据密集型工作流,可以通过该算法获得每个任务的冲突任务和最大数据路径。为最终的动态任务分配算法提供判定条件。
3)执行期间的动态任务分配
要决定首先分配冲突任务集中的哪个任务,应用三个原则来获得较小的候选任务集。之后,如果仍有多个任务(这种情况不经常发生),则将从指定任务集中随机选择要分配的任务。
4)得到最终分配方案
当根据以上分配原则执行后,停止整个分配过程,然后得出总传输数据sumD(R)最小的分配方案,即为最终的分配方案。
优选地,上述技术方案中,步骤1)中,基于工作流构建的二叉树获取冲突任务集,具体为:
对于要分配的任务ti,根据可能减少的传输数据从CSi中选择服务器。与ti相关的数据可以是转移到ti(其大小已知)或从ti转移的数据(其大小未知,因为ti尚未执行)。为了尽可能减少传输的数据大小,最大数据路径被定义并用于服务器选择。
基于工作流模型,通过将任务放在叶子节点上,将运算符放在内部节点上,可以很容易地建立一个完整的二叉树来表示任务之间的控制流。如算法1所示,可以通过二叉树遍历获得并行分支中的每个任务的CTi。
优选地,上述技术方案中,步骤2)中,通过修改warshall算法以搜索最大数据路径集,具体为:
每个任务的MDPi可能包含多个集合,并根据任务之间的数据依赖性获取。可以修改warshall算法以搜索最大数据路径,如算法2所示。
在算法中,PSi,j表示从ti到tj的数据路径上的节点集。MDPEi表示从ti开始的最大数据路径的结束任务集。从任务ti开始的最大数据路径不包括独占选择分支中的任何tk,因为这些任务可能不被执行,并且相关的数据依赖性对于减少传输的数据大小可能是无用的。对于这种情况,不考虑从ti到tj到可选任务tk的路径,除非ti和tk在相同的独占选择分支中。如果ti可以通过tk达到tj,则以tk结尾的数据路径比在tj结束的数据路径短,并且不是从ti开始的最大数据路径,因此将删除tk。此外,应将从ti到tj的数据路径添加到PSi,j中。只要更新PSi,j,就应该通过删除另一组中所包含的集合来简化它。
优选地,上述技术方案中,步骤3)中,执行期间的动态任务分配,具体为:
给定数据密集型工作流W,可以通过上述算法获得每个ti的CTi和MDPi。然后可以基于CSi,TSp,CTi,MDPi和dsj,i(从tj到ti传输的已知数据大小)来分配ti,其中CTi仅对某个并行分支中的ti有用。具体算法如下所示。
通常,t1和tn是具有n个任务的工作流的第一个和最后一个任务(可以添加虚拟开始或结束任务以获得这样的工作流)。所以第一个任务在第20行分配给t1,分配在tn分配后终止。过程A(i)(第1行到第19行)用于分配ti。任务执行完成后,getCandT()将检测执行的任务并返回接下来可以分配的任务。如果CdT中有多个任务,这些任务将按照从第26行到第36行的顺序依次动态分配。
要决定首先分配CdT中的哪个任务,应用三个原则来获得较小的候选任务集。之后,如果仍有多个任务(这种情况不经常发生),则将从CT3中随机选择要分配的任务。
第一个原则是任务最少|CSi|是优选的。通常,CdT中的多个任务是多个并行分支的第一个任务,需要不同的服务器。如果稍后分配|CSi|较少的ti,则ti的所有候选服务器可能已经分配给其他并行任务,并且必须招募另一个新服务器来处理ti,而更多服务器通常意味着更多可能的传输数据。
选择任务的第二个原则是具有最大sumDT(i)的那个是优选的。sumDT(i)表示从某些已执行任务传输的已知数据总大小,可以通过将相关任务分配给同一服务器来减少这些大小。它可以通过以下公式计算。
第三个原则是最大的|Pi,u|是优选的。最大数据路径具有的任务越多,减少要传输的未知数据大小的可能性就越大。
为了确定应该将任务ti分配给哪个服务器,有必要计算可能减少的传输数据。在此之前,如果CTi不为空并且CSi中的服务器sp已经分配给CTi中的任务tj(asj=sp),则必须首先从CSi中删除服务器sp以保持ti和tj并行。对于缩减后的CSi中的每个服务器sp,如果ti分配给sp,则根据dsj,i,asj=sp,dj,i=1,计算总的传输数据大小,即sumSp。具有最大sumSp的服务器sp是首选,因为它可以减少一定量的数据。如果没有传输的数据可以减少,因为在CSi中的服务器上没有执行与ti的数据相关的任务,则优选与从ti开始的最大数据路径的最大交集的服务器sp,因为它可能通过涉及更多的数据依赖关系来减少更多的传输数据。
基于实例和定义1中给出的11个任务的控制流程,随机生成数据密集型工作流并表示为W=<T,D,E>,其中T={ti|i=1,2,…,11},E=t1·(t2//(t3+t4·t5))·t6·(t7//t8·(t9//t10))·t11,D的子集满足di,j=1有{d1,2,d1,3,d1,4,d2,6,d2,7,d3,6,d4,5,d4,6,d4,8,d4,11,d5,6,d6,7,d6,8,d6,9,d6,11,d7,11,d8,9,d8,10,d9,11,d10,11}。
在执行之前,可以根据算法1和算法2获得并行分支中的每个任务的CTi和每个任务的MDPi。
根据算法3,可以基于在执行之前给出的W,CSi和实际执行细节,即ET=T-{t3}和MDPi(i=1,2,...,10)中的每个数据依赖性的数据大小来获得最终分配结果R。
在开始时,首先分配t1。由于t1没有从其他任务中传输数据,所以要分配给它的服务器是TSp与MDP1中三组任务交集最大的服务器。在本例中,s3被选中,因为TS1与P13有6个公共元素。在执行t1之后,CdT获得要分配的两个候选任务,即t2和t4(选择专用选择分支t4·t5但不选择t3)。作为|CS4|=|CS2|和sumDT(2)=7>sumDT(4)=0(并且不可能在同一服务器上生成t4和t1),首先分配t2(至s3),然后将t4分配给s1与MDP4中设置的最大交集。然后,基于MDP5将t5分配给s2。为了分配t6,sumS1和sumS3分别由基于ds4,6和ds2,6的等式(2)计算,并且获得<t6,s1>。对于t7和t8,首先根据原理分配t8,并获得<t8,s1>,<t7,s4>。对于t9和t10,t10首先被分配给唯一的候选服务器s3,并且t9基于sumS1和sumS3被分配给s1。最后,t11被分配给s1,因为sumS1=23,sumS3=9,sumS4=14。该分配方案sumD(R)=62的总传输数据可以通过等式(1)来计算。
作为比较,给出了一个基于基本规则的分配结果,即每个ti优先使用CSi中|TSp|较多的服务器。在完全相同的输入和执行情况下,得到R’={<t1,s3>,<t2,s3>,<t4,s1>,<t5,s4>,<t6,s3>,<t7,s4>,<t8,s3>,<t9,s1>,<t10,s3>,<t11,s3>},该方案的总传输数据为sumD(R)=94。与工作流的原始总数据大小相比,R’可以减少一些传输数据,同时它仍然获得比我们的方法获得的R大得多的数据。
本发明的实例模型及问题描述如下:
(1)实例模型
本例11个任务的工作流模型,其中每个任务都有一些功能需求,表示要执行的操作,任务之间的边代表控制流。例如,任务5在任务4之后执行,并且这两个任务都在独占选择分支中(该分支可能不会根据任务1的结果执行)。任务之间的数据依赖性可以通过有序对来呈现,例如<1,2>,<2,6>。在执行任务1之前,通常很难估计从任务1传输到任务2的实际数据大小,尽管该大小对于数据密集型工作流中的任务分配非常重要。
要在云环境中部署数据密集型工作流,应首先找到每个任务的候选云服务器。如果满足任务功能要求的服务位于服务器上,则该服务器可以是候选服务器。并非任何任务的候选服务器都有机会执行任务。以上述工作流为例,如果未选择任务3的分支,则不需要选择任务3的候选服务器。此外,如果服务器A是任务7和任务9的候选服务器,并且任务7已经分配给服务器A,那么A不能分配给任务9,因为它们应该以并行方式执行。
给定多个可用服务器,任务应选择最有可能减少更多传输数据的服务器。以上述实例中的工作流为例,假设任务6有三个候选服务器A,B和C,其中A和B未被任何任务选择,而B也是任务7的候选服务器,C由任务2选择并且任务2需要将1GB数据传输到任务6。在为任务6分配时,C将最终减少1GB,B可能会减少一些数据(任务7可能没有分配给B,即使如此,减小的大小也是未知的),A似乎没有好处。在这种情况下,将任务6分配给C可能更合理。
真实情况要比上面的例子复杂得多。任务的分配必须同时考虑具有已知大小或未知大小的相关控制流和数据依赖性。详细的问题描述和分配方法如下所示。为了使方法描述更简洁,采用进程代数来定义工作流,尽管有多种工作流表示方法。
(2)问题描述
在云环境中分配的数据密集型工作流描述如下。
定义1(W)。工作流程定义为三元组W=<T,D,E>
T={ti|ti表示工作流中的第i个任务,i=1,2,…,n}提供任务集;
D={di,j|di,j表示从ti到tj的数据依赖性,值为0或1,i,j=1,2,…,n}提供数据依赖集;
E=ti|(E·E)|(E+E)|(E//E),E表示由T的有限算子和任务组成的表达式,其中·表示顺序,+表示排他性选择,//表示平行。E提供工作流的控制逻辑。
通过删除不必要的括号“(”和“)”,使用给定的优先顺序·>//>+,可以简化表达式。例如,实例1中的工作流可以表示为t1·(t2∥(t3+t4·t5))·t6·(t7∥t8·(t9∥t10))·t11。
参与数据密集型工作流分配的云服务器表示为sp,其中p=1,2,…,m。工作流中的每个任务可能具有多个候选云服务器。
定义2(CSi)。第i个任务的候选服务器被定义为集合CSi={sp|sp可以提供满足ti,p∈1,2,…,m}的功能要求的服务。
一般而言,仅当sp是可以提供多个服务以处理工作流的多个任务的服务器时,才有可能减少任务之间的传输数据。能够在工作流中处理更多任务的服务器将优选作为候选服务器。
定义3(TSp)。sp可以处理的任务定义为集合TSp={ti|ti可以在sp上执行,i=1,2,…,n}。
显然,CSi和TSp以不同的方式提供类似的信息,并且它们都用于分配算法。每个任务ti可以分配给CSi中的服务器,并且如果它们具有数据依赖性,则同一TSp中的任务有机会减少传输的数据。但是,如果同一TSp中的某些任务位于不同的并行分支中,则不应将它们分配给同一服务器。并行分支中的每个任务可能都有一些冲突任务。
定义4(CTi)。与第i个任务冲突的任务被定义为集合CTi={tj|tj和ti对服务器的选择存在冲突,j∈1,2,…,n}
以实例来说,CT7={t8,t9,t10},CT7={t8,t9,t10}等。必须为冲突任务选择不同的服务器以使它们保持平行。
给定具有独占选择分支的工作流,并非所有任务都将被执行。例如,实例的实际执行结果可能是t1·(t2//t3)·t6·(t7//t8·(t9//t10))·t11或t1·(t2//t4·t5)·t6·(t7//t8·(t9//t10))·t11。如果任务在独占选择分支中并且未选择此分支,则不必分配此任务。
定义5(ET)。工作流模型中执行的任务定义为集合ET={ti|执行ti,i∈1,2,…,n}
在云环境中的数据密集型工作流中分配任务的结果可以定义如下。
定义6(R)。由n个元组组成的结果定义为R={<ti,asi>|ti被分配给asi,asi∈CSi,ti∈ET}。
给定W和CSi(i=1,2,…,n),可以找到许多可行的解决方案,并且具有较少传输数据的R将更好。对于具有di,j=1的两个任务ti和tj,可以仅在执行ti之后获得要从ti传送的数据大小,表示为dsi,j。执行期间的总传输数据可以基于等式(1)来计算。
定义7(MDPi)。从ti开始的最大数据路径被定义为集合MDPi={Pi,u|Pi,u是T的子集,Pi,u中的任务可以形成路径v0v1…vk…使其中v0=i,vk≠i,vk∈1,2,…,n,}。
附图说明:
图1为实例模型;
图2为动态任务分配方法步骤。
具体实施方式:
下面对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
本发明提出了一种面向数据大小优化的动态任务分配方法,以期获得任务执行时间和传输数据总体较优的分配方法。为了减少传输的数据,可以直接将具有较大传输数据大小的任务分配给同一服务器。但是,与每个数据依赖关系相对应的数据大小是未知的,并且在执行之前很难获得全局最优解决方案。在我们的动态任务分配方法中,只有在执行所有先前任务后才分配任务。任务的分配基于具有已知或未知数据大小的相关数据依赖性、冲突任务和候选服务器。以下将对部分步骤进行具体描述。
(1)基于工作流构建的二叉树获取冲突任务集
对于要分配的任务ti,根据可能减少的传输数据从CSi中选择服务器。与ti相关的数据可以是转移到ti(其大小已知)或从ti转移的数据(其大小未知,因为ti尚未执行)。为了尽可能减少传输的数据大小,最大数据路径被定义并用于服务器选择。
基于工作流模型,通过将任务放在叶子节点上,将运算符放在内部节点上,可以很容易地建立一个完整的二叉树来表示任务之间的控制流。如算法1所示,可以通过二叉树遍历获得并行分支中的每个任务的CTi。
在算法1中,h表示节点“//”的高度作为并行分支可能嵌入另一个节点中。以E=t7//t8·(t9//t10)为例,第一个‘//’(h=1)有左孩子t7和右孩子‘·’,其中‘·’有左孩子t8和右孩子‘//’(h=2)。标志fh用于表示子树的叶节点属于哪个分支。基于h和fh,具有根‘//’的子树中的每个叶节点,即具有不同高度的并行分支中的任务,可以被添加到相应的集合中。根据该算法,t7在LS1中,t8在RS1中,t9在RS1和LS2中,t10在RS1和RS2中,并且可以容易地获得CTi,例如CT7={t8,t9,t10},CT9={t7,t10}。
(2)通过修改warshall算法以搜索最大数据路径集
每个任务的MDPi可能包含多个集合,并根据任务之间的数据依赖性获取。可以修改warshall算法以搜索最大数据路径,如算法2所示。
在算法2中,PSi,j表示从ti到tj的数据路径上的节点集。MDPEi表示从ti开始的最大数据路径的结束任务集。从任务ti开始的最大数据路径不包括独占选择分支中的任何tk,因为这些任务可能不被执行,并且相关的数据依赖性对于减少传输的数据大小可能是无用的。对于这种情况,不考虑从ti到tj到可选任务tk的路径,除非ti和tk在相同的独占选择分支中。如果ti可以通过tk达到tj,则以tk结尾的数据路径比在tj结束的数据路径短,并且不是从ti开始的最大数据路径,因此将删除tk。此外,应将从ti到tj的数据路径添加到PSi,j中。只要更新PSi,j,就应该通过删除另一组中所包含的集合来简化它。
(3)执行期间的动态任务分配
给定数据密集型工作流W,可以通过上述算法获得每个ti的CTi和MDPi。然后可以基于CSi,TSp,CTi,MDPi和dsj,i(从tj到ti传输的已知数据大小)来分配ti,其中CTi仅对某个并行分支中的ti有用。具体算法如下所示。
通常,t1和tn是具有n个任务的工作流的第一个和最后一个任务(可以添加虚拟开始或结束任务以获得这样的工作流)。所以第一个任务在第20行分配给t1,分配在tn分配后终止。过程A(i)(第1行到第19行)用于分配ti。任务执行完成后,getCandT()将检测执行的任务并返回接下来可以分配的任务。如果CdT中有多个任务,这些任务将按照从第26行到第36行的顺序依次动态分配。
要决定首先分配CdT中的哪个任务,应用三个原则来获得较小的候选任务集。之后,如果仍有多个任务(这种情况不经常发生),则将从CT3中随机选择要分配的任务。
第一个原则是任务最少|CSi|是优选的。通常,CdT中的多个任务是多个并行分支的第一个任务,需要不同的服务器。如果稍后分配|CSi|较少的ti,则ti的所有候选服务器可能已经分配给其他并行任务,并且必须招募另一个新服务器来处理ti,而更多服务器通常意味着更多可能的传输数据。
选择任务的第二个原则是具有最大sumDT(i)的那个是优选的。sumDT(i)表示从某些已执行任务传输的已知数据总大小,可以通过将相关任务分配给同一服务器来减少这些大小。它可以通过以下公式计算。
第三个原则是最大的|Pi,u|是优选的。最大数据路径具有的任务越多,减少要传输的未知数据大小的可能性就越大。
为了确定应该将任务ti分配给哪个服务器,有必要计算可能减少的传输数据。在此之前,如果CTi不为空并且CSi中的服务器sp已经分配给CTi中的任务tj(asj=sp),则必须首先从CSi中删除服务器sp以保持ti和tj并行。对于缩减后的CSi中的每个服务器sp,如果ti分配给sp,则根据dsj,i,asj=sp,dj,i=1,计算总的传输数据大小,即sumSp。具有最大sumSp的服务器sp是首选,因为它可以减少一定量的数据。如果没有传输的数据可以减少,因为在CSi中的服务器上没有执行与ti的数据相关的任务,则优选与从ti开始的最大数据路径的最大交集的服务器sp,因为它可能通过涉及更多的数据依赖关系来减少更多的传输数据。
(4)得到最终分配方案
基于实例和定义1中给出的11个任务的控制流程,随机生成数据密集型工作流并表示为W=<T,D,E>,其中T={ti|i=1,2,…,11},E=t1·(t2//(t3+t4·t5))·t6·(t7//t8·(t9//t10))·t11,D的子集满足di,j=1有{d1,2,d1,3,d1,4,d2,6,d2,7,d3,6,d4,5,d4,6,d4,8,d4,11,d5,6,d6,7,d6,8,d6,9,d6,11,d7,11,d8,9,d8,10,d9,11,d10,11}。
在执行之前,可以根据算法1和算法2获得并行分支中的每个任务的CTi和每个任务的MDPi。
根据算法3,可以基于在执行之前给出的W,CSi和实际执行细节,即ET=T-{t3}和MDPi(i=1,2,...,10)中的每个数据依赖性的数据大小来获得最终分配结果R。
在开始时,首先分配t1;由于t1没有从其他任务中传输数据,所以要分配给它的服务器是TSp与MDP1中三组任务交集最大的服务器;在本例中,s3被选中,因为TS1与P13有6个公共元素;在执行t1之后,CdT获得要分配的两个候选任务,即t2和t4(选择专用选择分支t4·t5但不选择t3);作为|CS4|=|CS2|和sumDT(2)=7>sumDT(4)=0(并且不可能在同一服务器上生成t4和t1),首先分配t2(至s3),然后将t4分配给s1与MDP4中设置的最大交集;然后,基于MDP5将t5分配给s2;为了分配t6,sumS1和sumS3分别由基于ds4,6和ds2,6的等式(2)计算,并且获得<t6,s1>;对于t7和t8,首先根据原理分配t8,并获得<t8,s1>,<t7,s4>;对于t9和t10,t10首先被分配给唯一的候选服务器S3,并且t9基于sumS1和sumS3被分配给s1;最后,t11被分配给s1,因为sumS1=23,sumS3=9,sumS4=14;该分配方案sumD(R)=62的总传输数据可以通过等式(1)来计算。
作为比较,给出了一个基于基本规则的分配结果,即每个ti优先使用CSi中|TSp|较多的服务器。在完全相同的输入和执行情况下,得到R’={<t1,s3>,<t2,s3>,<t4,s1>,<t5,s4>,<t6,s3>,<t7,s4>,<t8,s3>,<t9,s1>,<t10,s3>,<t11,s3>},该方案的总传输数据为sumD(R)=94。与工作流的原始总数据大小相比,R’可以减少一些传输数据,同时它仍然获得比我们的方法获得的R大得多的数据。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (7)
1.一种云环境中数据密集型工作流的动态任务分配方法,其特征在于,首先基于进程代数描述了具有数据依赖性和典型控制逻辑的工作流,即:顺序,并行和排他性选择,只有在执行任务后才能获得与数据依赖性相关的数据大小;然后根据相关数据大小和最大数据路径将每个任务分配给特定的服务器;最后得到在云环境中执行数据密集型工作流程期间降低传输数据大小的分配方案。
2.根据权利要求1所述的云环境中数据密集型工作流的动态任务分配方法,其特征在于,包括以下步骤:
1)基于工作流构建的二叉树获取冲突任务集,
基于工作流模型,通过将任务放在叶子节点上,将运算符放在内部节点上,可以很容易地建立一个完整的二叉树来表示任务之间的控制流。如冲突任务集算法所示,可以通过二叉树遍历获得并行分支中的每个任务的冲突任务;
2)通过修改warshall算法以搜索最大数据路径集,
每个任务的MDPi可能包含多个集合,并根据任务之间的数据依赖性获取,给定数据密集型工作流,可以通过该算法获得每个任务的冲突任务和最大数据路径,为最终的动态任务分配算法提供判定条件;
3)执行期间的动态任务分配,
要决定首先分配冲突任务集中的哪个任务,应用三个原则来获得较小的候选任务集;之后,如果仍有多个任务,则将从指定任务集中随机选择要分配的任务;
4)得到最终分配方案
当根据以上分配原则执行后,停止整个分配过程,然后得出总传输数据sumD(R)最小的分配方案,即为最终的分配方案。
3.根据权利要求2所述的云环境中数据密集型工作流的动态任务分配方法,其特征是,步骤1)中,基于工作流构建的二叉树获取冲突任务集,具体为:
对于要分配的任务ti根据可能减少的传输数据从CSi中选择服务器。与ti相关的数据可以是转移到大小已知的ti或从ti转移的大小未知的数据;为了尽可能减少传输的数据大小,最大数据路径被定义并用于服务器选择;
基于工作流模型,通过将任务放在叶子节点上,将运算符放在内部节点上,可以很容易地建立一个完整的二叉树来表示任务之间的控制流。
4.根据权利要求2所述的云环境中数据密集型工作流的动态任务分配方法,其特征是,步骤2)中,通过修改warshall算法以搜索最大数据路径集,具体为:
每个任务的MDPi可能包含多个集合,并根据任务之间的数据依赖性获取。可以修改warshall算法以搜索最大数据路径,从任务ti开始的最大数据路径不包括独占选择分支中的任何tk,因为这些任务可能不被执行,并且相关的数据依赖性对于减少传输的数据大小可能是无用的。对于这种情况,不考虑从ti到tj到可选任务tk的路径,除非ti和tk在相同的独占选择分支中。如果ti可以通过tk达到tj,则以tk结尾的数据路径比在tj结束的数据路径短,并且不是从ti开始的最大数据路径,因此将删除tk。此外,应将从ti到tj的数据路径添加到PSi,j中。只要更新PSi,j,就应该通过删除另一组中所包含的集合来简化它。
5.根据权利要求2所述的云环境中数据密集型工作流的动态任务分配方法,其特征是步骤3)中,执行期间的动态任务分配,具体为:
给定数据密集型工作流W,可以通过上述算法获得每个ti的CTi和MDPi;然后可以基于CSi,TSp,CTi,MDPi和dsj,i(从tj到ti传输的已知数据大小)来分配ti,其中CTi仅对某个并行分支中的ti有用;
要决定首先分配CdT中的哪个任务,应用三个原则来获得较小的候选任务集;之后,如果仍有多个任务,则将从CT3中随机选择要分配的任务;
第一个原则是任务最少|CSi|是优选的;通常,CdT中的多个任务是多个并行分支的第一个任务,需要不同的服务器;如果稍后分配|CSi|较少的ti,则ti的所有候选服务器可能已经分配给其他并行任务,并且必须招募另一个新服务器来处理ti,而更多服务器通常意味着更多可能的传输数据;
选择任务的第二个原则是具有最大sumDT(i)的那个是优选的;sumDT(i)表示从某些已执行任务传输的已知数据总大小,可以通过将相关任务分配给同一服务器来减少这些大小;它可以通过以下公式计算:
第三个原则是最大的|Pi,u|是优选的;最大数据路径具有的任务越多,减少要传输的未知数据大小的可能性就越大;
为了确定应该将任务ti分配给哪个服务器,有必要计算可能减少的传输数据。在此之前,如果CTi不为空并且CSi中的服务器sp已经分配给CTi中的任务tj(asj=sp),则必须首先从CSi中删除服务器sp以保持ti和tj并行。对于缩减后的CSi中的每个服务器sp,如果ti分配给sp,则根据dsj,i,asj=sp,dj,i=1,计算总的传输数据大小,即sumSp;具有最大sumSp的服务器sp是首选,因为它可以减少一定量的数据;如果没有传输的数据可以减少,因为在CSi中的服务器上没有执行与ti的数据相关的任务,则优选与从ti开始的最大数据路径的最大交集的服务器sp,因为它可能通过涉及更多的数据依赖关系来减少更多的传输数据。
6.根据权利要求2所述的云环境中数据密集型工作流的动态任务分配方法,其特征是步骤4)中,得到最终分配方案,具体为:
基于实例和定义1中给出的11个任务的控制流程,随机生成数据密集型工作流并表示为W=<T,D,E>,其中T={ti|i=1,2,…,11},E=t1·(t2//(t3+t4·t5))·t6·(t7//t8·(t9//t10))·t11,D的子集满足di,j=1有{d1,2,d1,3,d1,4,d2,6,d2,7,d3,6,d4,5,d4,6,d4,8,d4,11,d5,6,d6,7,d6,8,d6,9,d6,11,d7,11,d8,9,d8,10,d9,11,d10,11};
在执行之前,可以根据算法1和算法2获得并行分支中的每个任务的CTi和每个任务的MDPi;
在开始时,首先分配t1;由于t1没有从其他任务中传输数据,所以要分配给它的服务器是TSp与MDP1中三组任务交集最大的服务器;在本例中,s3被选中,因为TS1与P13有6个公共元素;在执行t1之后,CdT获得要分配的两个候选任务,即t2和t4(选择专用选择分支t4·t5但不选择t3);作为|CS4|=|CS2|和sumDT(2)=7>sumDT(4)=0(并且不可能在同一服务器上生成t4和t1),首先分配t2(至s3),然后将t4分配给s1与MDP4中设置的最大交集;然后,基于MDP5将t5分配给s2;为了分配t6,sumS1和sumS3分别由基于ds4,6和ds2,6的等式(2)计算,并且获得<t6,s1>;对于t7和t8,首先根据原理分配t8,并获得<t8,s1>,<t7,s4>;对于t9和t10,t10首先被分配给唯一的候选服务器S3,并且t9基于sumS1和sumS3被分配给s1;最后,t11被分配给s1,因为sumS1=23,sumS3=9,sumS4=14;该分配方案sumD(R)=62的总传输数据可以通过等式(1)来计算。
7.根据权利要求2所述的云环境中数据密集型工作流的动态任务分配方法,其特征是步骤4)中,作为比较,给出了一个基于基本规则的分配结果,即每个ti优先使用CSi中|TSp|较多的服务器;在完全相同的输入和执行情况下,得到R’={<t1,s3>,<t2,s3>,<t4,s1>,<t5,s4>,<t6,s3>,<t7,s4>,<t8,s3>,<t9,s1>,<t10,s3>,<t11,s3>},该方案的总传输数据为sumD(R)=94;与工作流的原始总数据大小相比,R’可以减少一些传输数据,同时它仍然获得比我们的方法获得的R大得多的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910534070.8A CN110489214B (zh) | 2019-06-19 | 2019-06-19 | 云环境中数据密集型工作流的动态任务分配 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910534070.8A CN110489214B (zh) | 2019-06-19 | 2019-06-19 | 云环境中数据密集型工作流的动态任务分配 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489214A true CN110489214A (zh) | 2019-11-22 |
CN110489214B CN110489214B (zh) | 2022-09-20 |
Family
ID=68546352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910534070.8A Active CN110489214B (zh) | 2019-06-19 | 2019-06-19 | 云环境中数据密集型工作流的动态任务分配 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489214B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274009A (zh) * | 2020-01-13 | 2020-06-12 | 南京邮电大学 | 云环境下基于阶段划分的数据密集型工作流调度方法 |
CN111667239A (zh) * | 2020-05-27 | 2020-09-15 | 山东建筑大学 | 一种基于广度遍历+僵枝切除的工作流实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107015856A (zh) * | 2017-03-30 | 2017-08-04 | 青海大学 | 云环境下科学工作流中的任务调度方案生成方法及装置 |
CN108108245A (zh) * | 2017-12-18 | 2018-06-01 | 天津科技大学 | 一种云平台宽节点科学工作流的混合型调度方法及*** |
-
2019
- 2019-06-19 CN CN201910534070.8A patent/CN110489214B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107015856A (zh) * | 2017-03-30 | 2017-08-04 | 青海大学 | 云环境下科学工作流中的任务调度方案生成方法及装置 |
CN108108245A (zh) * | 2017-12-18 | 2018-06-01 | 天津科技大学 | 一种云平台宽节点科学工作流的混合型调度方法及*** |
Non-Patent Citations (1)
Title |
---|
薛伟祥等: "云环境下基于数据依赖的工作流调度", 《南京邮电大学学报(自然科学版)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274009A (zh) * | 2020-01-13 | 2020-06-12 | 南京邮电大学 | 云环境下基于阶段划分的数据密集型工作流调度方法 |
CN111667239A (zh) * | 2020-05-27 | 2020-09-15 | 山东建筑大学 | 一种基于广度遍历+僵枝切除的工作流实现方法 |
CN111667239B (zh) * | 2020-05-27 | 2023-04-18 | 山东建筑大学 | 一种基于广度遍历+僵枝切除的工作流实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110489214B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Caragiannis | Efficient coordination mechanisms for unrelated machine scheduling | |
CN103309738B (zh) | 用户作业调度方法及装置 | |
CN105159867B (zh) | 用于在网格计算环境中运算的情景状态处理***和方法 | |
CN106371924B (zh) | 一种最小化MapReduce集群能耗的任务调度方法 | |
CN108874538A (zh) | 一种用于调度量子计算机的调度服务器、调度方法及应用 | |
CN109582448A (zh) | 一种面向关键度和时效性的边缘计算任务调度方法 | |
CN108182109A (zh) | 一种云环境下的工作流调度与数据分配方法 | |
CN108628665A (zh) | 基于数据密集型科学工作流的任务调度与虚拟机整合方法 | |
US20140156649A1 (en) | Automatic Detection of Patterns and Inference in a Dataset | |
CN108737462A (zh) | 一种基于图论的云计算数据中心任务调度方法 | |
CN110489214A (zh) | 云环境中数据密集型工作流的动态任务分配 | |
Huo et al. | Assembly line balancing based on beam ant colony optimisation | |
CN104112049A (zh) | 基于P2P构架的MapReduce任务跨数据中心调度***及方法 | |
Li et al. | Endpoint-flexible coflow scheduling across geo-distributed datacenters | |
Saklani et al. | Multicore Implementation of K-Means Clustering Algorithm | |
CN108304253A (zh) | 基于缓存感知和数据本地性的map任务调度方法 | |
Shabeera et al. | Optimising virtual machine allocation in MapReduce cloud for improved data locality | |
Pathak et al. | Synergetic manufacturing systems anchored by cloud computing: A classified review of trends and perspective | |
CN107168795B (zh) | 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法 | |
Chen et al. | Deadline-constrained MapReduce scheduling based on graph modelling | |
CN106250559A (zh) | 网络io的异步非阻塞应用于数据库中间件的方法 | |
CN116582407A (zh) | 一种基于深度强化学习的容器化微服务编排***及方法 | |
CN105872109A (zh) | 云平台负载运行方法 | |
Langer et al. | Parallel branch-and-bound for two-stage stochastic integer optimization | |
Ma et al. | Cloud-based multidimensional parallel dynamic programming algorithm for a cascade hydropower system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |