论文部分内容阅读
随着互联网的兴起与日益激增的数据处理需求,云计算以其低廉的成本,强大的运算存储能力与高可靠性等众多优良特性逐渐受到各大IT企业的重视。MapReduce是云架构的编程模型,用以在集群上分布式地执行用户提交的作业,其作业调度与执行性能成为使用者关注的重点。本文对Hadoop平台MapReduce编程模型的多个优化方向进行了细致地研究。在对目前国内外关于MapReduce编程模型的性能优化技术进行分析的基础上,首先给出了多用户组使用环境下,支持作业类型划分的多队列调度策略。调度器通过划分作业等待队列和作业执行队列的方式,实现了二级调度;通过多个作业队列的方式管理多个用户组;作业队列的计算资源允许在闲置时被其它作业队列占用,以避免资源浪费;被占用的资源可以在作业队列需要时被回收,回收过程支持任务抢占,并通过“共享队列列表”和“非共享队列列表”的逻辑划分防止乒乓效应的产生。调度器同时支持作业类型进行调度,根据节点的负载情况,灵活地分配不同类型的作业以提高节点的硬件利用率,加快作业的响应速度。本文研究了提升Reduce任务网络性能的优化方法。通过在Map任务所在的节点合并输出文件,使得输出数据更紧凑,减少了本地临时文件的文件数,从而增大了单个输出文件的大小。在Reduce任务的输入数据本地化过程中,通过长连接从Map任务所在的节点获取输出文件,减小了网络连接数,并提高了网络I/O的性能。本文提出了对MapReduce编程模型进行性能分析的方法和分析指标。通过作业生命周期,任务的吞吐量,和模型中关键函数的运行情况来衡量编程模型的性能。最后就本文研究的优化技术进行了实现和测试分析。