一种基于虚拟机动态迁移的高性能MapReduce实现机制的制作方法

文档序号:6548192阅读:236来源:国知局
一种基于虚拟机动态迁移的高性能MapReduce实现机制的制作方法
【专利摘要】本发明公开了一种基于虚拟机动态迁移的高性能MapReduce实现机制,通过应用CloudStack的虚拟机云管理平台实时监控集群状态,对split数据分块进行抽样,统计Reduce任务所在虚拟机上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;以获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚拟机的迁移目标;为核心,通过虚拟机动态迁移实现Reduce任务尽可能本地化地接收相同key值的Map任务的输出,节约网络带宽。
【专利说明】—种基于虚拟机动态迁移的高性能MapReduce实现机制
【技术领域】
[0001]本发明涉及一种基于虚拟机动态迁移的高性能MapReduce实现机制。
【背景技术】
[0002]当前云计算作为一种商业计算模式,促进了网络化操作系统的提出。云计算的核心技术是虚拟化技术,虚拟机云管理平台作为网络化操作系统的基础,建立在由大量服务器等硬件资源组成的集群之上向用户提供可用的操作系统环境,并且相互之间无影响,即实现IaaS (基础设施即服务)。
[0003]现有技术和运营模式下,在云计算系统中的虚拟机云管理平台里,采用提供操作系统模板映像的方式为用户创建虚拟机,模板映像是已经安装好操作系统并集成应用程序、上传至云系统的磁盘映像。具体来说是在用户要创建虚拟机时,虚拟机云管理平台根据用户自己所选择的模板映像来将该模板映像复制一份作为虚拟机的虚拟磁盘。这样,虚拟机创建完成并启动之后,就是安装了操作系统可供用户直接使用的虚拟机。
[0004]MapReduce是谷歌公司发明的一种编程模型,用于大规模数据集的并行运算。它主要由两部分组成:编程模型和运行环境。其中,编程模型为用户提供了非常简易的编程接口,用户只需像编写一般串行程序一样实现简单的主函数、Map函数、Reduce函数即可实现一个分布式程序,而其他复杂的工作,如节点间的通信、节点失效的处理、数据的切分等,都由运行环境自行完成,用户无须关心这些细节。
[0005]Hadoop作为谷歌MapReduce分布式计算模型的开源实现版本,已在工业界广泛应用。当前Hadoop MapReduce的软件实现主要由以下几个组件组成:client (客户端)、JobTracker (作业服务器)、TaskTracker (任务服务器)和任务。
[0006](I) Client (客户端)
[0007]在Hadoop内部,用“作业”表示分布式程序,每个作业会被分解成若干个split (分块)。Client负责将用户编写的作业提交到JobTracker端。此外,Client提供一些接口可以查看作业的运行状态。
[0008](2) JobTracker (作业服务器)
[0009]JobTracker主要负责系统资源监控和用户作业调度。在Hadoop中,JobTracker是一个可插拔的模块,用户可以根据自己的实际需要设计、更改相应的JobTracker。
[0010](3) TaskTracker (任务服务器)
[0011 ] TaskTracker会周期性地通过心跳包将本节点上资源使用情况和任务运行情况汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、终止某个任务等)。
[0012]⑷任务
[0013]任务分为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值的键组,最终完成整个作业。
[0014]这种将作业分割成许多小任务并行执行的思想,非常适合云计算时代的大数据处理。一些国际国内领先厂商,尤其是FaceBooKYahoo !以及阿里巴巴等互联网巨头,均在使用Hadoop做大数据处理的工作。然而,由于开发时间较短,Hadoop仍存在一定的问题,特别是中间数据管理问题。在广泛使用的Hadoopl.2.0版本中中,Reduce任务包含了拷贝、排序和Reduce函数执行的三个阶段。拷贝阶段是读取所有Map任务的输出数据patition ( SP中间数据);排序阶段是对Reduce阶段的输入数据进行排序;最后利用Reduce函数来产生最终的结果。拷贝和排序这两个阶段是为Reduce任务的输入数据进行预处理。在实际的应用环境中,拷贝和排序这两个阶段占用Reduce任务较多的时间,尤其是在拷贝阶段,每个Reduce任务都必须从远端物理节点通过网络通信带宽读取中间数据,从而导致了较大的网络延迟。
[0015]Amazon (亚马逊)公司于 2009 年通过基于 Amazon EC2 (Amazon Elastic ComputeCloud,即亚马逊弹性计算云)技术和 Amazon S3 (Amazon Simple Storage Service,即亚马逊简易存储服务)技术的Amazon EMR(Amazon Elastic MapReduce,即亚马逊弹性MapReduce)来提供Hadoop服务。它实际是一种网页规模基础设施,是一种Hadoop托管服务运行架构。Amazon EMR在 Amazon EC2实例上部署Hadoop,并将任务流程中的数据细分为更小的数据块以进行并行处理,最终将经过处理的数据重新组合为最终解决方案。但是Amazon EMR将Amazon S3作为数据分析源以及最终结果的输出目的地,导致调试不便,运行结果无法及时检查。
[0016]VMware (威睿)公司于2012年6月开始Serengeti (塞伦盖蒂)项目,目的即是将Hadoop架构在云环境下的虚拟机中,支持企业能够在虚拟和云环境中快速部署、管理和扩展Hadoop,然而其除了部署灵活性之外,在性能、安全性、资源利用率方面均不具备优势。特别是其对存储的想法是将数据放在Isilon(美国赛龙公司的集群存储系统)或者EMCVNX(美国易安信公司的存储平台)集中存储上,这样既增加了成本又增加了网络压力。
[0017]另外,Red Hat (红帽)公司、Hortonworks公司和Mirantis公司于2013年共同开启的Savanna (萨凡纳)项目旨在让用户可以在OpenStack上运行和管理Hadoop集群,即让Hadoop成为OpenStack的一级使用者。然而Savanna项目对Hadoop虚拟计算节点的管理策略是将其分配到不同物理机器上,从而导致了网络带宽占用量大,MapReduce性能不高,同时也使得Hadoop分布式文件系统的性能受损。
[0018]总之,目前无论哪一种将Hadoop部署在IaaS平台的服务或项目,存在网络带宽占用大、服务器资源利用不合理及MapReduce性能不高的问题。

【发明内容】

[0019]本发明提出了一种基于虚拟机动态迁移的高性能MapReduce实现机制,其目的在于克服上述现有技术中MapReduce实现机制中网络带宽占用量大、服务器资源利用不合理等问题
[0020]一种基于虚拟机动态迁移的高性能MapReduce实现机制,包括以下步骤:
[0021]步骤1:在物理服务器上构建具有虚拟机的分布式运行Hodoop系统;
[0022]步骤2:用户Client向步骤I所述Hodoop系统提交作业,Hodoop系统将作业分解为split数据分块; [0023]步骤3:从split数据分块中依据规则抽取样本元素,然后将所有抽取的样本元素作为模拟样本组;
[0024]步骤4:由Map任务对模拟样本组进行处理,得到每个split数据分块所对应生成的键值对〈key, value〉,并按照key值对数据进行分区,从而产生分区partition ;
[0025]步骤5:每一个partition由一个Reduce任务进行处理,依次统计Reduce任务所在虚拟机上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;
[0026]步骤6:以步骤5获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚拟机的迁移目标;
[0027]步骤7:对其他Reduce任务重复步骤5和步骤6,获得整个Hodoop系统内所有虚拟机的迁移路径的集合对应虚拟机迁移网络拓扑图。
[0028]所述步骤I中虚拟机的构建采用CloudStack虚拟机云管理平台安装在物理服务器集群上创建多个独立的虚拟机,所有虚拟机由CloudStack虚拟机云管理平台管控和监测,每个虚拟机以单独的操作系统运行Hadoop MapReduce任务。
[0029]所述步骤3中抽取样本元素的规则为split数据分块队列中每隔十个split抽取一个split作为样本元素。
[0030]有益效果
[0031]本发明提供一种基于虚拟机动态迁移的高性能MapReduce实现机制,通过应用CloudStack的虚拟机云管理平台实时监控集群状态,对split数据分块进行抽样,统计Reduce任务所在虚拟机上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;以获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚拟机的迁移目标;为核心,通过虚拟机动态迁移实现Reduce任务尽可能本地化地接收相同key值的Map任务的输出,节约网络带宽。
[0032]本发明弥补上述现有技术不足的同时,保留其各自优势,加强Hadoop的本地化操作,大幅度提高MapReduce的性能,此外还对Hadoop起到有效的促进作用--第一,让Hadoop适用于多租户环境,因为不同应用可能都需要不同的Hadoop集群;第二,提高Hadoop的安全性,云管理平台虚拟化在不同集群之间保持强隔离;第三,提高Hadoop的可伸缩性,使得它很容易进行伸缩加减节点;最后,增加服务器集群CPU的整体利用率。
【专利附图】

【附图说明】
[0033]图1为本发明所述方法的Hodoop系统架构图;
[0034]图2为本发明所述方法的流程图。
【具体实施方式】
[0035]下面将结合附图和实施例对本发明做进一步的说明。[0036]一种基于虚拟机动态迁移的高性能MapReduce实现机制,包括以下步骤:
[0037]步骤1:在物理服务器上构建具有虚拟机的分布式运行Hodoop系统;
[0038]步骤2:用户Client向步骤I所述Hodoop系统提交作业,Hodoop系统将作业分解为split数据分块;
[0039]步骤3:从split数据分块中依据规则抽取样本元素,然后将所有抽取的样本元素作为模拟样本组;
[0040]步骤4:由Map任务对模拟样本组进行处理,得到每个split数据分块所对应生成的键值对〈key, value〉,并按照key值对数据进行分区,从而产生分区partition ;
[0041]步骤5:每一个partition由一个Reduce任务进行处理,依次统计Reduce任务所在虚拟机上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;
[0042]步骤6:以步骤5获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚拟机的迁移目标;
[0043]步骤7:对其他Reduce任务重复步骤5和步骤6,获得整个Hodoop系统内所有虚拟机的迁移路径的集合对应虚拟机迁移网络拓扑图。
[0044]所述步骤I中虚拟机的构建采用CloudStack虚拟机云管理平台安装在物理服务器集群上创建多个独立的虚拟机,所有虚拟机由CloudStack虚拟机云管理平台管控和监测,每个虚拟机以单独的操作系统运行Hadoop MapReduce任务。
[0045]所述步骤3中抽取样本元素的规则为split数据分块队列中每隔十个split抽取一个split作为样本元素。
[0046]如图1所示,为本发明所述方法的Hodoop系统架构图,在一组物理服务器集群上搭建基于CloudStack的多节点分布式虚拟机云管理平台,云平台以相同模板镜像创建多个虚拟机作为组成Hadoop分布式运行环境的节点机器;图中,OS为操作系统,VM为虚拟机。
[0047]如图2所示,为本发明所述方法的流程图,首先在云环境下,由用户Client向Hadoop系统提交一个作业,该作业将被分割成数个split数据分块。接着在split数据分块队列中每隔十个split抽取一次作为样本元素,组成任务模拟样本组;然后将模拟样本组提交给JobTracker, JobTracker启动多个TaskTracker运行模拟样本组,得出每一个Map任务产生的〈key, value〉键值对的去向,即Reduce任务和它要拷贝的中间数据的映射关系,统计相同key值在Reduce任务上的分布概率情况;接着,云平台中虚拟机迁移是根据上述结果以最大概率分布优先为准则,构建虚机迁移网络拓扑图,并完成对Reduce任务虚拟机的迁移。最后,MapReduce真正启动运行。
[0048]为了验证本发明所述方法的可靠性及准确性,在16个节点的集群上分别对传统MapReduce 以及高性能 MapReduce 机制的 Hadoop,运行 TeraSort、TestDFSIO、WordCount 和K-means Clustering五大基准测试程序,并对其作业完成时间的情况进行统计和分析。考虑到测试有一定偶然性,每个作业均重复运行三次,统计数据取平均。详细数据见表I及表2。
[0049]从表2可以看出,本发明所述方法高性能MapReduce机制对比传统的MapReduce机制,在测试程序TeraSort的测试结果中性能提升了 22.82%;在测试程序TestDFSIO的测试结果中,读操作性能提升了 33.72%,写操作性能提升了 33.63% ;在测试程序WordCount的测试结果中性能提升了 29.75% ;在测试程序K-means Clustering的测试结果性能中提升了 38.03% ;由此可见,本发明所述方法大幅度提高了 MapReduce的性能,通过虚拟机动态迁移实现Reduce任务尽可能本地化地接收相同key值的Map任务的输出,节约网络带宽。
[0050]表1基准测试程序负载特点及数据量
[0051]
【权利要求】
1.一种基于虚拟机动态迁移的高性能MapReduce实现机制,其特征在于,包括以下步骤: 步骤1:在物理服务器上构建具有虚拟机的分布式运行Hodoop系统; 步骤2:用户Client向步骤I所述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系统内所有虚拟机的迁移路径的集合对应虚拟机迁移网络拓扑图。
2.根据权利要求1所述的基于虚拟机动态迁移的高性能MapReduce实现机制,其特征在于,所述步骤I中虚拟机的构建采用CloudStack虚拟机云管理平台安装在物理服务器集群上创建多个独立的虚拟机,所有虚拟机由CloudStack虚拟机云管理平台管控和监测,每个虚拟机以单独的操作系统运行Hadoop MapReduce任务。
3.根据权利要求2所述的基于虚拟机动态迁移的高性能MapReduce实现机制,其特征在于,所述步骤3中抽取样本元素的规则为split数据分块队列中每隔十个split抽取一个split作为样本元素。
【文档编号】G06F9/455GK104008012SQ201410238408
【公开日】2014年8月27日 申请日期:2014年5月30日 优先权日:2014年5月30日
【发明者】唐卓, 江林刚, 曾优, 杨黎, 马稳, 祁玲 申请人:长沙麓云信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1