CN104008012A - 一种基于虚拟机动态迁移的高性能MapReduce实现机制 - Google Patents
一种基于虚拟机动态迁移的高性能MapReduce实现机制 Download PDFInfo
- Publication number
- CN104008012A CN104008012A CN201410238408.2A CN201410238408A CN104008012A CN 104008012 A CN104008012 A CN 104008012A CN 201410238408 A CN201410238408 A CN 201410238408A CN 104008012 A CN104008012 A CN 104008012A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- task
- split
- performance
- mapreduce
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于虚拟机动态迁移的高性能MapReduce实现机制,通过应用CloudStack的虚拟机云管理平台实时监控集群状态,对split数据分块进行抽样,统计Reduce任务所在虚拟机上接收到的每一个key值对应的Map任务源,获得生成key值最多的Map任务源;以获得的Map任务源所在虚拟机的物理机器作为对应Reduce任务所在虚拟机的迁移目标;为核心,通过虚拟机动态迁移实现Reduce任务尽可能本地化地接收相同key值的Map任务的输出,节约网络带宽。
Description
技术领域
本发明涉及一种基于虚拟机动态迁移的高性能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托管服务运行架构。AmazonEMR在Amazon EC2实例上部署Hadoop,并将任务流程中的数据细分为更小的数据块以进行并行处理,最终将经过处理的数据重新组合为最终解决方案。但是Amazon EMR将AmazonS3作为数据分析源以及最终结果的输出目的地,导致调试不便,运行结果无法及时检查。
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测试结果(作业完成时间,单位:秒)
Claims (3)
1.一种基于虚拟机动态迁移的高性能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系统内所有虚拟机的迁移路径的集合对应虚拟机迁移网络拓扑图。
2.根据权利要求1所述的基于虚拟机动态迁移的高性能MapReduce实现机制,其特征在于,所述步骤1中虚拟机的构建采用CloudStack虚拟机云管理平台安装在物理服务器集群上创建多个独立的虚拟机,所有虚拟机由CloudStack虚拟机云管理平台管控和监测,每个虚拟机以单独的操作系统运行Hadoop MapReduce任务。
3.根据权利要求2所述的基于虚拟机动态迁移的高性能MapReduce实现机制,其特征在于,所述步骤3中抽取样本元素的规则为split数据分块队列中每隔十个split抽取一个split作为样本元素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410238408.2A CN104008012B (zh) | 2014-05-30 | 2014-05-30 | 一种基于虚拟机动态迁移的高性能MapReduce实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410238408.2A CN104008012B (zh) | 2014-05-30 | 2014-05-30 | 一种基于虚拟机动态迁移的高性能MapReduce实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008012A true CN104008012A (zh) | 2014-08-27 |
CN104008012B CN104008012B (zh) | 2017-10-20 |
Family
ID=51368677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410238408.2A Active CN104008012B (zh) | 2014-05-30 | 2014-05-30 | 一种基于虚拟机动态迁移的高性能MapReduce实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008012B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104734892A (zh) * | 2015-04-02 | 2015-06-24 | 江苏物联网研究发展中心 | 大数据处理系统Hadoop在云平台OpenStack上自动部署系统 |
CN105373477A (zh) * | 2015-11-25 | 2016-03-02 | 普华基础软件股份有限公司 | 一种容量测试方法 |
CN105426255A (zh) * | 2015-12-28 | 2016-03-23 | 重庆邮电大学 | Hadoop大数据平台中基于网络I/O代价评估的ReduceTask数据本地性调度方法 |
CN105589731A (zh) * | 2015-09-16 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种虚拟机迁移方法和装置 |
CN105589752A (zh) * | 2016-02-24 | 2016-05-18 | 哈尔滨工业大学深圳研究生院 | 基于键值分布的跨数据中心大数据处理 |
CN105760222A (zh) * | 2014-12-18 | 2016-07-13 | 北京神州泰岳软件股份有限公司 | 基于MapReduce的平均值计算方法及装置 |
WO2017020742A1 (zh) * | 2015-08-06 | 2017-02-09 | 阿里巴巴集团控股有限公司 | 负载均衡方法及设备 |
CN110287197A (zh) * | 2019-06-28 | 2019-09-27 | 微梦创科网络科技(中国)有限公司 | 一种数据存储方法、迁移方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102082692A (zh) * | 2011-01-24 | 2011-06-01 | 华为技术有限公司 | 基于网络数据流向的虚拟机迁移方法、设备和集群系统 |
US20110167149A1 (en) * | 2010-01-06 | 2011-07-07 | The Industry & Academic Cooperation In Chungnam National University | Internet flow data analysis method using parallel computations |
CN102541858A (zh) * | 2010-12-07 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 基于映射和规约的数据均衡性处理方法、装置及系统 |
CN103353901A (zh) * | 2013-08-01 | 2013-10-16 | 百度在线网络技术(北京)有限公司 | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 |
-
2014
- 2014-05-30 CN CN201410238408.2A patent/CN104008012B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110167149A1 (en) * | 2010-01-06 | 2011-07-07 | The Industry & Academic Cooperation In Chungnam National University | Internet flow data analysis method using parallel computations |
CN102541858A (zh) * | 2010-12-07 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 基于映射和规约的数据均衡性处理方法、装置及系统 |
CN102082692A (zh) * | 2011-01-24 | 2011-06-01 | 华为技术有限公司 | 基于网络数据流向的虚拟机迁移方法、设备和集群系统 |
CN103353901A (zh) * | 2013-08-01 | 2013-10-16 | 百度在线网络技术(北京)有限公司 | 基于Hadoop分布式文件系统的表数据的有序管理方法以及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760222A (zh) * | 2014-12-18 | 2016-07-13 | 北京神州泰岳软件股份有限公司 | 基于MapReduce的平均值计算方法及装置 |
CN104734892A (zh) * | 2015-04-02 | 2015-06-24 | 江苏物联网研究发展中心 | 大数据处理系统Hadoop在云平台OpenStack上自动部署系统 |
WO2017020742A1 (zh) * | 2015-08-06 | 2017-02-09 | 阿里巴巴集团控股有限公司 | 负载均衡方法及设备 |
CN106445677A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 负载均衡方法及设备 |
CN105589731A (zh) * | 2015-09-16 | 2016-05-18 | 杭州华三通信技术有限公司 | 一种虚拟机迁移方法和装置 |
CN105589731B (zh) * | 2015-09-16 | 2019-01-18 | 新华三技术有限公司 | 一种虚拟机迁移方法和装置 |
CN105373477A (zh) * | 2015-11-25 | 2016-03-02 | 普华基础软件股份有限公司 | 一种容量测试方法 |
CN105426255A (zh) * | 2015-12-28 | 2016-03-23 | 重庆邮电大学 | Hadoop大数据平台中基于网络I/O代价评估的ReduceTask数据本地性调度方法 |
CN105426255B (zh) * | 2015-12-28 | 2019-04-19 | 重庆邮电大学 | Hadoop大数据平台中基于网络I/O代价评估的ReduceTask数据本地性调度方法 |
CN105589752A (zh) * | 2016-02-24 | 2016-05-18 | 哈尔滨工业大学深圳研究生院 | 基于键值分布的跨数据中心大数据处理 |
CN105589752B (zh) * | 2016-02-24 | 2019-10-15 | 哈尔滨工业大学深圳研究生院 | 基于键值分布的跨数据中心大数据处理 |
CN110287197A (zh) * | 2019-06-28 | 2019-09-27 | 微梦创科网络科技(中国)有限公司 | 一种数据存储方法、迁移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104008012B (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Athlur et al. | Varuna: scalable, low-cost training of massive deep learning models | |
CN104008012A (zh) | 一种基于虚拟机动态迁移的高性能MapReduce实现机制 | |
US10275278B2 (en) | Stream processing task deployment using precompiled libraries | |
CN108351806B (zh) | 分布式基于流的数据库触发器 | |
CN105025095B (zh) | 实现云计算弹性服务的集群架构 | |
US8959138B2 (en) | Distributed data scalable adaptive map-reduce framework | |
Iordache et al. | Resilin: Elastic mapreduce over multiple clouds | |
US20140122559A1 (en) | Runtime grouping of tuples in a streaming application | |
US20150052530A1 (en) | Task-based modeling for parallel data integration | |
CN107766147A (zh) | 分布式的数据分析任务调度系统 | |
Ye et al. | vHadoop: A scalable Hadoop virtual cluster platform for MapReduce-based parallel machine learning with performance consideration | |
Urbani et al. | AJIRA: a lightweight distributed middleware for MapReduce and stream processing | |
US10872007B2 (en) | Methods and systems to compound alerts in a distributed computing system | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
Lu et al. | Assessing MapReduce for internet computing: a comparison of Hadoop and BitDew-MapReduce | |
Miceli et al. | Programming abstractions for data intensive computing on clouds and grids | |
US20190220532A1 (en) | Data processing with nullable schema information | |
Xie et al. | Orpheus: Efficient distributed machine learning via system and algorithm co-design | |
Mangwani et al. | Evaluation of a Multitenant SaaS Using Monolithic and Microservice Architectures | |
Mao et al. | Trisk: Task-centric data stream reconfiguration | |
Kalnis et al. | Mizan: Optimizing graph mining in large parallel systems | |
Daikoku et al. | On exploring efficient shuffle design for in-memory mapreduce | |
Ortiz-Garcés et al. | Performance data analysis for parallel processing using bigdata distribution | |
Jothi et al. | Increasing performance of parallel and distributed systems in high performance computing using weight based approach | |
Lei et al. | DCSPARK: Virtualizing spark using docker containers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |