引用部分: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)进行匹配,并提交它们以供执行。分别来说,规划算法是一种全