论文部分内容阅读
MapReduce是一种面向海量信息处理的云计算编程模型。一个MapReduce作业是功能单一的程序,其能完成的功能有限。为了完成一个复杂的任务,MapReduce作业之间需要相互协作。虽然已有面向MapReduce的工作流引擎开源软件产品,例如Hadoop生态圈的Oozie,但Oozie不直接支持迭代计算,缺乏可视化开发环境,难以在实际的工程项目中应用。本文工作以某省交通物流云计算平台建设的实际项目为背景,根据该项目的实际需求,要求形成海量信息处理的MapReduce作业库和模板库,在开发海量信息处理应用时,无MapReduce编程经验的业务人员可通过从库中选择模板和作业,利用可视化工具对多个MapReduce作业进行组合。针对上述问题,本文在对实际需求和相关技术深入分析的基础上,对作业组合的模式、作业组合描述语言及其分别对Oozie hPDL和MapReduce代码的转换方法等关键技术进行了研究,设计实现了一个支持作业库和模板库的MapReduce作业可视化组合原型系统。测试和应用情况表明,该系统是可行及有效的。本文的具体工作有以下几个方面:(1)针对MapReduce作业间的关系描述问题,提出了基于有向图的MapReduce作业组合的多种模式,涵盖顺序、分支、连接、循环等MapReduce作业间的依赖关系。(2)针对MapReduce作业组合的定义问题,设计了一种基于XML的MapReduce作业组合描述语言JCDL (Jobs CompositionDescription Language),提出了JCDL与MapReduce作业组合图形表示之间的转换算法。(3)针对MapReduce作业组合的执行问题,提出了两种方法:一种是将基于JCDL的作业组合描述映射成基于Oozie的hPDL工作流描述,然后进一步自动生成、部署和执行Oozie应用。这种方法的优点是可充分利用开源MapReduce工作流引擎Oozie的高容错特性。另一种是采用velocity代码生成技术,把基于JCDL的作业组合描述直接转换成MapReduce代码,并自动提交到Hadoop上运行。该方法的优点是应用的运行效率更高。(4)在上述工作的基础上,设计并实现了一个支持作业库和模板库的MapReduce作业可视化组合原型系统。该系统包括可视化作业组合工具、JCDL验证子系统、模板库及作业库管理子系统、基于Oozie的JCDL执行引擎和基于MapReduce的JCDL执行引擎等。(5)以基于BP神经网络的分类应用作业库为例,对MapReduce作业组合系统的可行性和有效性进行验证。重点阐述了作业库中一个基于改进的BP神经网络MapReduce算法的作业实现;然后应用MapReduce作业组合原型系统对作业库中的多个作业进行组合,形成一个分类应用。该应用在KDD CUP1999公共测试集上的测试结果表明,组合得到的分类应用能够完成分类操作,分类正确率为91.6%,且基于MapReduce的执行方法比基于Oozie的执行方法效率高11.7%。