论文部分内容阅读
2007年以来云计算成为了IT界的新热点。互联网迅速发展的同时也伴随着处理数据的激增。如何高效的存储和计算海量数据成为计算机科学亟待处理的新问题,而这类问题恰恰是云计算产生的动力。
云计算是基于互联网的相关服务的增加、使用和交付模式,这种服务可以是软件、硬件或者是其他服务[1]。这就意味着云计算实现了计算能力的商品化。云计算通过互联网提供动态的易扩展的而且经常是虚拟化的资源。
当今比较热门的云计算框架有亚马逊的弹性云,IBM公司的“蓝云”平台以及微软基于互联网平台打造的“蓝天”操作系统。其中MapReduce是Google提出的一个云计算的模型,用于处理大规模数据集[2]。它通过提供一系列的接口将简单的业务逻辑从复杂的实现细节中分离出来。通过这些接口可以实现大规模数据集的并行计算。可以说MapReduce是一个并行计算模型,也是一个编程模型。Hadoop是对Google公司MapReduce框架的开源实现,它是当前应用最广泛的开源云计算平台[3]。
本文在Hadoop实现的MapReduce架构基础上,详细剖析了MapReduce的内部结构,分析其工作机制。在分析了现有的三种作业调度算法的基础上,针对当前算法没有考虑服务器负载状况和数据本地性差的缺点,提出了一种改进的作业调度算法,该算法通过分析一定时间空闲节点的到达次数和当前服务器集群的负载状况,根据服务器集群的负载决定作业队列中执行作业的数量,并通过采取等待的办法满足考虑数据本地性的需求,把作业分配到相应的节点。通过采用MapReduce的开源实现Hadoop来进行实验。结果证明,在集群高负载的情况下,该算法可以增加服务器集群的工作效率,减少网络延迟,具有实际的应用意义。