WorkflowSim工作流仿真软件介绍 + 类的介绍 + 自创算法实现步骤

WorkflowSim是一款基于CloudSim的开源工作流仿真软件,广泛应用于故障容错、成本导向调度等领域。本文介绍了WorkflowSim中的调度算法与规划算法的区别、文件系统类型以及Task和Job的概念,并探讨了如何在类中添加属性。同时,讲解了如何在WorkflowSim中创建并使用自定义调度算法,包括创建算法类、在WorkflowPlanner中注册算法、修改Parameters枚举,以及在example中使用新算法的步骤。
摘要由CSDN通过智能技术生成

引用部分:https://github.com/WorkflowSim/WorkflowSim-1.0/wiki


0. Introduction

现在的大数据应用都非常复杂,并不仅仅能够通过一个或者几个MapReduce任务来描述。更加复杂的描述大数据应用的是工作流 (workflow)。

WorkflowSim (http://www.workflowsim.org/)是由南加州大学(University of Southern California)的Weiwei Chen开发的一套开源工作流仿真软件。WorkflowSim是拓展自CloudSim的工作流仿真开源软件,可以提供工作流基础上的仿真,增加了模拟不同层次延时和故障的支持,与真实分布式环境更加接近。支持了各种task scheduling, clustering, resource provisioning的算法。广泛应用在故障容错研究,成本导向调度研究,资源调度研究,能耗研究等领域。

其工作原理是在暨有的CloudSim仿真软件基础上,提供workflow层次的仿真。工作流可以用有向图来描述(Directed Acyclic Graph) DAG,图的任何一个节点都是一个由用户制定执行的任务(task),节点之间有通过数据输入输出形成的依赖关系(dependency)。工作流引擎会依据其依赖关系按顺序执行,同时执行也会调用用户所选择的调度算法,比如HEFT,MINMIN等等算法已经在WorkflowSim里边实现并且测试通过了。

用户也可以添加自己的调度算法。

在实际运行过程中,因为很多工作流非常大,甚至到达几千上万个任务,而通常我们只有几十个计算节点。这个时候就需要使用task clustering这个技术来聚合相类似的任务从而形成任务群(clustered job),有时候也通用称之为job。每个job包含了多个task,然后提交给运行环境的时候是整体提交的,这样可以节省很多延迟(submission delay),等到了某一个计算节点的时候再打开任务群然后分别执行。

如何形成job就需要各种算法,有包括了balanced task clustering可以综合考虑依赖关系的,也有fault tolerant clustering可以综合考虑规避failure的。这些也都已经在WorkflowSim里边实现。

其行为最为接近Pegasus工作流管理系统。

WorkflowSim是一套开源软件,所有源代码和介绍都可以在http://www.github.com/WorkflowSim/找到,使用目前流行的Git做软件版本控制。

使用非常简单,下载完源代码之后,只需要在任何一个WorkflowSim example里边选择所需要的dax 文档,并且修改里边的daxPath变量,即可运行。比如选择:“examples/org/workflowsim/examples/WorkflowSimBasicExample1.java”这个例子,将里边的daxPath改成在你当前环境下的文件路径即可。

WorkflowSim在config/dax文件夹下面已经提供了很多DAX文件可供仿真。这些工作流的介绍可以参考:Documentation – Pegasus WMS

同时我们还提供WorkflowGenerator可以生成你所需要的任何工作流DAX文件https://confluence.pegasus.isi.edu/display/pegasus/WorkflowGenerator

如果对WorkflowSim感兴趣并且想进一步开发功能,可建议(但不限于)研究以下方面

1. 基于价格的调度算法,CloudSim本身已经实现了每个task的cost,但是WorkflowSim还没有合适的调度算法。

2. 动态资源调度算法。WorkflowSim目前还是静态的把计算节点建立好然后运行工作流。

3. 多数据中心支持。目前只测试了单数据中心支持。

4. 数据日志支持。将已有的工作流管理系统的log转换成为trace从而可以在WorkflowSim里边仿真?目前只测试过Pegasus。

5. 可靠的调度算法,在仿真Failure的情况下调度算法应该如何变得更鲁棒?目前failure的生成已经开发完成,但是相应的算法还没有。

6. 自适应算法或者分布式算法。目前仅有一个中心调度算法,分布式算法也可以在WorkflowSim上面实现。

7. 基于duplication的算法。在计算节点有余的时候,可以自动复制一部分任务到空闲的计算节点上。

0.1 WorkflowSim中调度算法与规划算法的区别

WorkflowSim中有两种类型的算法:调度算法(Scheduling Algorithm)和计划算法(Planning Algorithm)。理论上它们是相同的,但是在实现方面它们是完全不同的。WorkflowSim 具有三层:Workflow Planner、Workflow Engine、Workflow Scheduler。

在 Workflow Planner 中,我们拥有整个工作流(所有任务及其依赖项)的全局视图,并且在每次迭代中,Workflow Engine 将free的任务(这意味着它们的父级已成功完成)发布到 Workflow Scheduler。Workflow Scheduler 将这些free的任务与资源(WorkflowSim 中的 Condor VM)进行匹配,并提交它们以供执行。分别来说,规划算法是一种

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值