法律状态公告日
法律状态信息
法律状态
2017-10-20
授权
授权
2014-09-24
实质审查的生效 IPC(主分类):G06F9/48 申请日:20140530
实质审查的生效
2014-08-27
公开
公开
技术领域
本发明涉及一种基于虚拟机动态迁移的高性能MapReduce实现机制。
背景技术
当前云计算作为一种商业计算模式,促进了网络化操作系统的提出。云计算的核心技术 是虚拟化技术,虚拟机云管理平台作为网络化操作系统的基础,建立在由大量服务器等硬件资 源组成的集群之上向用户提供可用的操作系统环境,并且相互之间无影响,即实现IaaS(基 础设施即服务)。
现有技术和运营模式下,在云计算系统中的虚拟机云管理平台里,采用提供操作系统模 板映像的方式为用户创建虚拟机,模板映像是已经安装好操作系统并集成应用程序、上传至 云系统的磁盘映像。具体来说是在用户要创建虚拟机时,虚拟机云管理平台根据用户自己所 选择的模板映像来将该模板映像复制一份作为虚拟机的虚拟磁盘。这样,虚拟机创建完成并 启动之后,就是安装了操作系统可供用户直接使用的虚拟机。
MapReduce是谷歌公司发明的一种编程模型,用于大规模数据集的并行运算。它主要由 两部分组成:编程模型和运行环境。其中,编程模型为用户提供了非常简易的编程接口,用 户只需像编写一般串行程序一样实现简单的主函数、Map函数、Reduce函数即可实现一个分 布式程序,而其他复杂的工作,如节点间的通信、节点失效的处理、数据的切分等,都由运 行环境自行完成,用户无须关心这些细节。
Hadoop作为谷歌MapReduce分布式计算模型的开源实现版本,已在工业界广泛应用。当 前Hadoop MapReduce的软件实现主要由以下几个组件组成:client(客户端)、JobTracker(作 业服务器)、TaskTracker(任务服务器)和任务。
(1)Client(客户端)
在Hadoop内部,用“作业”表示分布式程序,每个作业会被分解成若干个split(分块)。 Client负责将用户编写的作业提交到JobTracker端。此外,Client提供一些接口可以查看作业 的运行状态。
(2)JobTracker(作业服务器)
JobTracker主要负责系统资源监控和用户作业调度。在Hadoop中,JobTracker是一个可 插拔的模块,用户可以根据自己的实际需要设计、更改相应的JobTracker。
(3)TaskTracker(任务服务器)
TaskTracker会周期性地通过心跳包将本节点上资源使用情况和任务运行情况汇报给 JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、终止某 个任务等)。
(4)任务
任务分为Map(映射)任务和Reduce(规约)任务两种,均由TaskTracker启动。在Hadoop 内部,数据处理的最小单位是split(分块),每个split会交由一个Map任务处理,Map任务 和Map任务之间是并行执行的。Map任务先将对应的split迭代解析成一个个(key,value) 键值对,并依次调用用户自定义的map函数将其映射成一组新的(key,value)键值对,最 终将中间数据即新的(key,value)键值对存放到本地磁盘上,其中中间数据被分成若干个 partition(分区),每个partition(分区)将被一个Reduce任务处理。Reduce任务用来把所有 Map任务产生的partition按照key值,对对应的value值进行处理,产生多个共享相同key值 的键组,最终完成整个作业。
这种将作业分割成许多小任务并行执行的思想,非常适合云计算时代的大数据处理。一 些国际国内领先厂商,尤其是FaceBook、Yahoo!以及阿里巴巴等互联网巨头,均在使用Hadoop 做大数据处理的工作。然而,由于开发时间较短,Hadoop仍存在一定的问题,特别是中间数 据管理问题。在广泛使用的Hadoop1.2.0版本中中,Reduce任务包含了拷贝、排序和Reduce 函数执行的三个阶段。拷贝阶段是读取所有Map任务的输出数据patition(即中间数据);排 序阶段是对Reduce阶段的输入数据进行排序;最后利用Reduce函数来产生最终的结果。拷 贝和排序这两个阶段是为Reduce任务的输入数据进行预处理。在实际的应用环境中,拷贝和 排序这两个阶段占用Reduce任务较多的时间,尤其是在拷贝阶段,每个Reduce任务都必须 从远端物理节点通过网络通信带宽读取中间数据,从而导致了较大的网络延迟。
Amazon(亚马逊)公司于2009年通过基于Amazon EC2(Amazon Elastic Compute Cloud, 即亚马逊弹性计算云)技术和Amazon S3(Amazon Simple Storage Service,即亚马逊简易存 储服务)技术的Amazon EMR(Amazon Elastic MapReduce,即亚马逊弹性MapReduce)来提 供Hadoop服务。它实际是一种网页规模基础设施,是一种Hadoop托管服务运行架构。Amazon EMR在Amazon EC2实例上部署Hadoop,并将任务流程中的数据细分为更小的数据块以进 行并行处理,最终将经过处理的数据重新组合为最终解决方案。但是Amazon EMR将Amazon S3作为数据分析源以及最终结果的输出目的地,导致调试不便,运行结果无法及时检查。
VMware(威睿)公司于2012年6月开始Serengeti(塞伦盖蒂)项目,目的即是将Hadoop 架构在云环境下的虚拟机中,支持企业能够在虚拟和云环境中快速部署、管理和扩展Hadoop, 然而其除了部署灵活性之外,在性能、安全性、资源利用率方面均不具备优势。特别是其对 存储的想法是将数据放在Isilon(美国赛龙公司的集群存储系统)或者EMC VNX(美国易安 信公司的存储平台)集中存储上,这样既增加了成本又增加了网络压力。
另外,Red Hat(红帽)公司、Hortonworks公司和Mirantis公司于2013年共同开启的Savanna (萨凡纳)项目旨在让用户可以在OpenStack上运行和管理Hadoop集群,即让Hadoop成为 OpenStack的一级使用者。然而Savanna项目对Hadoop虚拟计算节点的管理策略是将其分配 到不同物理机器上,从而导致了网络带宽占用量大,MapReduce性能不高,同时也使得Hadoop 分布式文件系统的性能受损。
总之,目前无论哪一种将Hadoop部署在IaaS平台的服务或项目,存在网络带宽占用大、 服务器资源利用不合理及MapReduce性能不高的问题。
发明内容
本发明提出了一种基于虚拟机动态迁移的高性能MapReduce实现机制,其目的在于克服 上述现有技术中MapReduce实现机制中网络带宽占用量大、服务器资源利用不合理等问题
一种基于虚拟机动态迁移的高性能MapReduce实现机制,包括以下步骤:
步骤1:在物理服务器上构建具有虚拟机的分布式运行Hodoop系统;
步骤2:用户Client向步骤1所述Hodoop系统提交作业,Hodoop系统将作业分解为split 数据分块;
步骤3:从split数据分块中依据规则抽取样本元素,然后将所有抽取的样本元素作为模 拟样本组;
步骤4:由Map任务对模拟样本组进行处理,得到每个split数据分块所对应生成的键值 对<key,value>,并按照key值对数据进行分区,从而产生分区partition;
步骤5:每一个partition由一个Reduce任务进行处理,依次统计Reduce任务所在虚拟机 上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;
步骤6:以步骤5获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚 拟机的迁移目标;
步骤7:对其他Reduce任务重复步骤5和步骤6,获得整个Hodoop系统内所有虚拟机的 迁移路径的集合对应虚拟机迁移网络拓扑图。
所述步骤1中虚拟机的构建采用CloudStack虚拟机云管理平台安装在物理服务器集群上 创建多个独立的虚拟机,所有虚拟机由CloudStack虚拟机云管理平台管控和监测,每个虚拟 机以单独的操作系统运行Hadoop MapReduce任务。
所述步骤3中抽取样本元素的规则为split数据分块队列中每隔十个split抽取一个split 作为样本元素。
有益效果
本发明提供一种基于虚拟机动态迁移的高性能MapReduce实现机制,通过应用CloudStack 的虚拟机云管理平台实时监控集群状态,对split数据分块进行抽样,统计Reduce任务所在 虚拟机上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;以 获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚拟机的迁移目标;为 核心,通过虚拟机动态迁移实现Reduce任务尽可能本地化地接收相同key值的Map任务的 输出,节约网络带宽。
本发明弥补上述现有技术不足的同时,保留其各自优势,加强Hadoop的本地化操作,大 幅度提高MapReduce的性能,此外还对Hadoop起到有效的促进作用:第一,让Hadoop适 用于多租户环境,因为不同应用可能都需要不同的Hadoop集群;第二,提高Hadoop的安全 性,云管理平台虚拟化在不同集群之间保持强隔离;第三,提高Hadoop的可伸缩性,使得 它很容易进行伸缩加减节点;最后,增加服务器集群CPU的整体利用率。
附图说明
图1为本发明所述方法的Hodoop系统架构图;
图2为本发明所述方法的流程图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的说明。
一种基于虚拟机动态迁移的高性能MapReduce实现机制,包括以下步骤:
步骤1:在物理服务器上构建具有虚拟机的分布式运行Hodoop系统;
步骤2:用户Client向步骤1所述Hodoop系统提交作业,Hodoop系统将作业分解为split 数据分块;
步骤3:从split数据分块中依据规则抽取样本元素,然后将所有抽取的样本元素作为模 拟样本组;
步骤4:由Map任务对模拟样本组进行处理,得到每个split数据分块所对应生成的键值 对<key,value>,并按照key值对数据进行分区,从而产生分区partition;
步骤5:每一个partition由一个Reduce任务进行处理,依次统计Reduce任务所在虚拟机 上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;
步骤6:以步骤5获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚 拟机的迁移目标;
步骤7:对其他Reduce任务重复步骤5和步骤6,获得整个Hodoop系统内所有虚拟机的 迁移路径的集合对应虚拟机迁移网络拓扑图。
所述步骤1中虚拟机的构建采用CloudStack虚拟机云管理平台安装在物理服务器集群上 创建多个独立的虚拟机,所有虚拟机由CloudStack虚拟机云管理平台管控和监测,每个虚拟 机以单独的操作系统运行Hadoop MapReduce任务。
所述步骤3中抽取样本元素的规则为split数据分块队列中每隔十个split抽取一个split 作为样本元素。
如图1所示,为本发明所述方法的Hodoop系统架构图,在一组物理服务器集群上搭建基 于CloudStack的多节点分布式虚拟机云管理平台,云平台以相同模板镜像创建多个虚拟机作 为组成Hadoop分布式运行环境的节点机器;图中,OS为操作系统,VM为虚拟机。
如图2所示,为本发明所述方法的流程图,首先在云环境下,由用户Client向Hadoop系 统提交一个作业,该作业将被分割成数个split数据分块。接着在split数据分块队列中每隔十 个split抽取一次作为样本元素,组成任务模拟样本组;然后将模拟样本组提交给JobTracker, JobTracker启动多个TaskTracker运行模拟样本组,得出每一个Map任务产生的<key,value> 键值对的去向,即Reduce任务和它要拷贝的中间数据的映射关系,统计相同key值在Reduce 任务上的分布概率情况;接着,云平台中虚拟机迁移是根据上述结果以最大概率分布优先为 准则,构建虚机迁移网络拓扑图,并完成对Reduce任务虚拟机的迁移。最后,MapReduce 真正启动运行。
为了验证本发明所述方法的可靠性及准确性,在16个节点的集群上分别对传统 MapReduce以及高性能MapReduce机制的Hadoop,运行TeraSort、TestDFSIO、WordCount 和K-means Clustering五大基准测试程序,并对其作业完成时间的情况进行统计和分析。考虑 到测试有一定偶然性,每个作业均重复运行三次,统计数据取平均。详细数据见表1及表2。
从表2可以看出,本发明所述方法高性能MapReduce机制对比传统的MapReduce机制, 在测试程序TeraSort的测试结果中性能提升了22.82%;在测试程序TestDFSIO的测试结果中, 读操作性能提升了33.72%,写操作性能提升了33.63%;在测试程序WordCount的测试结果 中性能提升了29.75%;在测试程序K-means Clustering的测试结果性能中提升了38.03%;由 此可见,本发明所述方法大幅度提高了MapReduce的性能,通过虚拟机动态迁移实现Reduce 任务尽可能本地化地接收相同key值的Map任务的输出,节约网络带宽。
表1基准测试程序负载特点及数据量
表2测试结果(作业完成时间,单位:秒)
机译: 基于内存的虚拟机动态迁移过程中动态放置机制
机译: 最近使用的基于角色的健身追踪机制的增强,以实现高性能训练
机译: 一种基于零知识证明电路的虚拟机实现通用运行验证的系统