论文部分内容阅读
由于易用性和良好的扩展性,google提出的MapReduce编程模型被广泛应用于各类大规模数据处理和分析项目中。在实际应用中,一个分析项目往往需要分解成多个MapReduce作业,且这些计算作业和其之间的数据依赖关系共同组成了复杂的计算工作流。
现有的面向MapReduce的工作流平台在支持含有迭代计算的MapReduce工作流时存在一些不足。首先,现有工作流描述方法不能描述含有迭代计算的工作流。其次,现有工作流作业调度机制对工作流执行优化问题考虑较少。再次,现有MapReduce工作流平台依靠分布式文件系统实现作业间数据传递,这样,作业间的计算并行性就无法得以实现,从而影响到资源的利用率和工作流的执行效率。
基于以上现有工作流平台的不足之处,本文旨在完善工作流描述方法,研究含有迭代计算的MapReduce工作流的解析和调度方法,以及工作流中作业间数据传递机制等执行优化技术。
本文主要工作总结如下:
1.提出扩展的MapReduce工作流描述语言。该语言提出决策节点和决策类的概念以支持用户定义带有迭代计算的工作流,并能够指定迭代终止条件,以及循环结束前后的数据流向。
2.提出一种迭代消解算法,用于自动化解析和调度带有迭代计算的工作流。这种迭代消解算法主要思想是根据决策节点的决策结果而动态寻找当前的极大DAG子工作流。
3.提出DAG工作流调度优化策略。这种策略包括DAG工作流分组策略和作业节点有序组调度和映射策略。前者使得没有数据依赖关系的作业得以并行提交。后者则是根据负载均衡,数据依赖任务邻近化原则,针对迭代计算静态数据优化等来对作业节点中的任务进行映射。后者和作业间数据传递机制共同达到提高作业间执行并行化的效果。实验表明分组算法能够缩短了工作流总体执行时间大约10%-20%。
4.提出作业间的分片推式数据传递。这种数据传递机制下,源节点任务一边计算一边周期性的将数据分片的推送给目的节点,目的节点任务读取先收取到数据分片并以后立刻开始计算。这种数据传递机制使得有数据依赖关系的任务的执行得以并行化,从而使得依赖作业的执行得以并行化。实验表明作业调度和映射策略与作业间推式数据传递机制能够缩短工作流总体执行时间大约20%-60%。