论文部分内容阅读
互联网的快速发展对大规模数据处理技术提出了新的挑战,目前业界广泛使用的数据处理系统多数基于Google提出的MapReduce并行处理框架,MapReduce在处理静态批量数据时优势明显,然而在遇到如下需求时,其表现并不尽如人意:
(1)增量数据分析。每当数据到达时,MapReduce都会进行一次完整的计算,其在处理增量到达数据时不能利用历史计算结果。重复数据计算不仅加重了集群负载,也增大了数据处理延迟,影响用户体验。
(2)即时输出结果。MapReduce的框架设计决定了其在得到最终结果前不会产生任何可供用户参考的输出。对于需要数小时甚至数天运行的任务来说,产生最终结果前用户只能等待,这种长时间“静默”行为令用户难以接受。
本文通过修改MapReduce框架解决上述问题,主要工作和特色如下:
(1)提出一种改进的即时增量数据分析框架(IncRT_MR)。
(2)使用输入处理模块和状态表实现数据增量处理。输入处理模块用于计算数据增量;状态表用于保存中间结果,以便数据重用。
(3)通过提前数据拷贝与提前Reduce任务调度实现数据处理结果的即时输出。该方案消除了Map和Reduce端的同步栅障,保证结果即时产生与显示。
(4)提出两阶段实时调度算法增强任务的实时性并维护系统负载平衡。
对于系统容错问题,本文使用“检查点”策略,在数据处理过程中不断对输入数据做“检查点”,产生错误时从“检查点”处继续处理。利用增量和即时数据处理特性,IncRT_MR还适用处理连续多级的实时处理任务。本文提出的即时增量数据处理框架继承了MapReduce基本架构和API,编程接口简单且方便现有MapReduce应用的迁移。对比实验证明,对MapReduce的实时性修改达到了即时获取结果的目的,且开销合理;而两阶段实时调度算法相对于传统FIFO和公平调度算法,在保证系统吞吐量同时能够满足任务实时性需求。