一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制的制作方法
【專利摘要】本發(fā)明公開了一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,通過應用CloudStack的虛擬機云管理平臺實時監(jiān)控集群狀態(tài),對split數(shù)據(jù)分塊進行抽樣,統(tǒng)計Reduce任務所在虛擬機上接收到的每一個key值對應的Map任務源,獲得生成key值最多的Map任務源;以獲得的Map任務源所在虛擬機的物理機器作為對應Reduce任務所在虛擬機的遷移目標;為核心,通過虛擬機動態(tài)遷移實現(xiàn)Reduce任務盡可能本地化地接收相同key值的Map任務的輸出,節(jié)約網絡帶寬。
【專利說明】—種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制
【技術領域】
[0001]本發(fā)明涉及一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制。
【背景技術】
[0002]當前云計算作為一種商業(yè)計算模式,促進了網絡化操作系統(tǒng)的提出。云計算的核心技術是虛擬化技術,虛擬機云管理平臺作為網絡化操作系統(tǒng)的基礎,建立在由大量服務器等硬件資源組成的集群之上向用戶提供可用的操作系統(tǒng)環(huán)境,并且相互之間無影響,即實現(xiàn)IaaS (基礎設施即服務)。
[0003]現(xiàn)有技術和運營模式下,在云計算系統(tǒng)中的虛擬機云管理平臺里,采用提供操作系統(tǒng)模板映像的方式為用戶創(chuàng)建虛擬機,模板映像是已經安裝好操作系統(tǒng)并集成應用程序、上傳至云系統(tǒng)的磁盤映像。具體來說是在用戶要創(chuàng)建虛擬機時,虛擬機云管理平臺根據(jù)用戶自己所選擇的模板映像來將該模板映像復制一份作為虛擬機的虛擬磁盤。這樣,虛擬機創(chuàng)建完成并啟動之后,就是安裝了操作系統(tǒng)可供用戶直接使用的虛擬機。
[0004]MapReduce是谷歌公司發(fā)明的一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運算。它主要由兩部分組成:編程模型和運行環(huán)境。其中,編程模型為用戶提供了非常簡易的編程接口,用戶只需像編寫一般串行程序一樣實現(xiàn)簡單的主函數(shù)、Map函數(shù)、Reduce函數(shù)即可實現(xiàn)一個分布式程序,而其他復雜的工作,如節(jié)點間的通信、節(jié)點失效的處理、數(shù)據(jù)的切分等,都由運行環(huán)境自行完成,用戶無須關心這些細節(jié)。
[0005]Hadoop作為谷歌MapReduce分布式計算模型的開源實現(xiàn)版本,已在工業(yè)界廣泛應用。當前Hadoop MapReduce的軟件實現(xiàn)主要由以下幾個組件組成:client (客戶端)、JobTracker (作業(yè)服務器)、TaskTracker (任務服務器)和任務。
[0006](I) Client (客戶端)
[0007]在Hadoop內部,用“作業(yè)”表示分布式程序,每個作業(yè)會被分解成若干個split (分塊)。Client負責將用戶編寫的作業(yè)提交到JobTracker端。此外,Client提供一些接口可以查看作業(yè)的運行狀態(tài)。
[0008](2) JobTracker (作業(yè)服務器)
[0009]JobTracker主要負責系統(tǒng)資源監(jiān)控和用戶作業(yè)調度。在Hadoop中,JobTracker是一個可插拔的模塊,用戶可以根據(jù)自己的實際需要設計、更改相應的JobTracker。
[0010](3) TaskTracker (任務服務器)
[0011 ] TaskTracker會周期性地通過心跳包將本節(jié)點上資源使用情況和任務運行情況匯報給JobTracker,同時接收JobTracker發(fā)送過來的命令并執(zhí)行相應的操作(如啟動新任務、終止某個任務等)。
[0012]⑷任務
[0013]任務分為Map (映射)任務和Reduce (規(guī)約)任務兩種,均由TaskTracker啟動。在Hadoop內部,數(shù)據(jù)處理的最小單位是split (分塊),每個split會交由一個Map任務處理,Map任務和Map任務之間是并行執(zhí)行的。Map任務先將對應的split迭代解析成一個個(key, value)鍵值對,并依次調用用戶自定義的map函數(shù)將其映射成一組新的(key, value)鍵值對,最終將中間數(shù)據(jù)即新的(key,value)鍵值對存放到本地磁盤上,其中中間數(shù)據(jù)被分成若干個partition (分區(qū)),每個partition (分區(qū))將被一個Reduce任務處理。Reduce任務用來把所有Map任務產生的partition按照key值,對對應的value值進行處理,產生多個共享相同key值的鍵組,最終完成整個作業(yè)。
[0014]這種將作業(yè)分割成許多小任務并行執(zhí)行的思想,非常適合云計算時代的大數(shù)據(jù)處理。一些國際國內領先廠商,尤其是FaceBooKYahoo !以及阿里巴巴等互聯(lián)網巨頭,均在使用Hadoop做大數(shù)據(jù)處理的工作。然而,由于開發(fā)時間較短,Hadoop仍存在一定的問題,特別是中間數(shù)據(jù)管理問題。在廣泛使用的Hadoopl.2.0版本中中,Reduce任務包含了拷貝、排序和Reduce函數(shù)執(zhí)行的三個階段??截愲A段是讀取所有Map任務的輸出數(shù)據(jù)patition ( SP中間數(shù)據(jù));排序階段是對Reduce階段的輸入數(shù)據(jù)進行排序;最后利用Reduce函數(shù)來產生最終的結果??截惡团判蜻@兩個階段是為Reduce任務的輸入數(shù)據(jù)進行預處理。在實際的應用環(huán)境中,拷貝和排序這兩個階段占用Reduce任務較多的時間,尤其是在拷貝階段,每個Reduce任務都必須從遠端物理節(jié)點通過網絡通信帶寬讀取中間數(shù)據(jù),從而導致了較大的網絡延遲。
[0015]Amazon (亞馬遜)公司于 2009 年通過基于 Amazon EC2 (Amazon Elastic ComputeCloud,即亞馬遜彈性計算云)技術和 Amazon S3 (Amazon Simple Storage Service,即亞馬遜簡易存儲服務)技術的Amazon EMR(Amazon Elastic MapReduce,即亞馬遜彈性MapReduce)來提供Hadoop服務。它實際是一種網頁規(guī)?;A設施,是一種Hadoop托管服務運行架構。Amazon EMR在 Amazon EC2實例上部署Hadoop,并將任務流程中的數(shù)據(jù)細分為更小的數(shù)據(jù)塊以進行并行處理,最終將經過處理的數(shù)據(jù)重新組合為最終解決方案。但是Amazon EMR將Amazon S3作為數(shù)據(jù)分析源以及最終結果的輸出目的地,導致調試不便,運行結果無法及時檢查。
[0016]VMware (威睿)公司于2012年6月開始Serengeti (塞倫蓋蒂)項目,目的即是將Hadoop架構在云環(huán)境下的虛擬機中,支持企業(yè)能夠在虛擬和云環(huán)境中快速部署、管理和擴展Hadoop,然而其除了部署靈活性之外,在性能、安全性、資源利用率方面均不具備優(yōu)勢。特別是其對存儲的想法是將數(shù)據(jù)放在Isilon(美國賽龍公司的集群存儲系統(tǒng))或者EMCVNX(美國易安信公司的存儲平臺)集中存儲上,這樣既增加了成本又增加了網絡壓力。
[0017]另外,Red Hat (紅帽)公司、Hortonworks公司和Mirantis公司于2013年共同開啟的Savanna (薩凡納)項目旨在讓用戶可以在OpenStack上運行和管理Hadoop集群,即讓Hadoop成為OpenStack的一級使用者。然而Savanna項目對Hadoop虛擬計算節(jié)點的管理策略是將其分配到不同物理機器上,從而導致了網絡帶寬占用量大,MapReduce性能不高,同時也使得Hadoop分布式文件系統(tǒng)的性能受損。
[0018]總之,目前無論哪一種將Hadoop部署在IaaS平臺的服務或項目,存在網絡帶寬占用大、服務器資源利用不合理及MapReduce性能不高的問題。
【發(fā)明內容】
[0019]本發(fā)明提出了一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,其目的在于克服上述現(xiàn)有技術中MapReduce實現(xiàn)機制中網絡帶寬占用量大、服務器資源利用不合理等問題
[0020]一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,包括以下步驟:
[0021]步驟1:在物理服務器上構建具有虛擬機的分布式運行Hodoop系統(tǒng);
[0022]步驟2:用戶Client向步驟I所述Hodoop系統(tǒng)提交作業(yè),Hodoop系統(tǒng)將作業(yè)分解為split數(shù)據(jù)分塊; [0023]步驟3:從split數(shù)據(jù)分塊中依據(jù)規(guī)則抽取樣本元素,然后將所有抽取的樣本元素作為模擬樣本組;
[0024]步驟4:由Map任務對模擬樣本組進行處理,得到每個split數(shù)據(jù)分塊所對應生成的鍵值對〈key, value〉,并按照key值對數(shù)據(jù)進行分區(qū),從而產生分區(qū)partition ;
[0025]步驟5:每一個partition由一個Reduce任務進行處理,依次統(tǒng)計Reduce任務所在虛擬機上接收到的每一個key值對應的Map任務源,獲得生成key值最多的Map任務源;
[0026]步驟6:以步驟5獲得的Map任務源所在虛擬機的物理機器作為對應Reduce任務所在虛擬機的遷移目標;
[0027]步驟7:對其他Reduce任務重復步驟5和步驟6,獲得整個Hodoop系統(tǒng)內所有虛擬機的遷移路徑的集合對應虛擬機遷移網絡拓撲圖。
[0028]所述步驟I中虛擬機的構建采用CloudStack虛擬機云管理平臺安裝在物理服務器集群上創(chuàng)建多個獨立的虛擬機,所有虛擬機由CloudStack虛擬機云管理平臺管控和監(jiān)測,每個虛擬機以單獨的操作系統(tǒng)運行Hadoop MapReduce任務。
[0029]所述步驟3中抽取樣本元素的規(guī)則為split數(shù)據(jù)分塊隊列中每隔十個split抽取一個split作為樣本元素。
[0030]有益效果
[0031]本發(fā)明提供一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,通過應用CloudStack的虛擬機云管理平臺實時監(jiān)控集群狀態(tài),對split數(shù)據(jù)分塊進行抽樣,統(tǒng)計Reduce任務所在虛擬機上接收到的每一個key值對應的Map任務源,獲得生成key值最多的Map任務源;以獲得的Map任務源所在虛擬機的物理機器作為對應Reduce任務所在虛擬機的遷移目標;為核心,通過虛擬機動態(tài)遷移實現(xiàn)Reduce任務盡可能本地化地接收相同key值的Map任務的輸出,節(jié)約網絡帶寬。
[0032]本發(fā)明彌補上述現(xiàn)有技術不足的同時,保留其各自優(yōu)勢,加強Hadoop的本地化操作,大幅度提高MapReduce的性能,此外還對Hadoop起到有效的促進作用--第一,讓Hadoop適用于多租戶環(huán)境,因為不同應用可能都需要不同的Hadoop集群;第二,提高Hadoop的安全性,云管理平臺虛擬化在不同集群之間保持強隔離;第三,提高Hadoop的可伸縮性,使得它很容易進行伸縮加減節(jié)點;最后,增加服務器集群CPU的整體利用率。
【專利附圖】
【附圖說明】
[0033]圖1為本發(fā)明所述方法的Hodoop系統(tǒng)架構圖;
[0034]圖2為本發(fā)明所述方法的流程圖。
【具體實施方式】
[0035]下面將結合附圖和實施例對本發(fā)明做進一步的說明。[0036]一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,包括以下步驟:
[0037]步驟1:在物理服務器上構建具有虛擬機的分布式運行Hodoop系統(tǒng);
[0038]步驟2:用戶Client向步驟I所述Hodoop系統(tǒng)提交作業(yè),Hodoop系統(tǒng)將作業(yè)分解為split數(shù)據(jù)分塊;
[0039]步驟3:從split數(shù)據(jù)分塊中依據(jù)規(guī)則抽取樣本元素,然后將所有抽取的樣本元素作為模擬樣本組;
[0040]步驟4:由Map任務對模擬樣本組進行處理,得到每個split數(shù)據(jù)分塊所對應生成的鍵值對〈key, value〉,并按照key值對數(shù)據(jù)進行分區(qū),從而產生分區(qū)partition ;
[0041]步驟5:每一個partition由一個Reduce任務進行處理,依次統(tǒng)計Reduce任務所在虛擬機上接收到的每一個key值對應的Map任務源,獲得生成key值最多的Map任務源;
[0042]步驟6:以步驟5獲得的Map任務源所在虛擬機的物理機器作為對應Reduce任務所在虛擬機的遷移目標;
[0043]步驟7:對其他Reduce任務重復步驟5和步驟6,獲得整個Hodoop系統(tǒng)內所有虛擬機的遷移路徑的集合對應虛擬機遷移網絡拓撲圖。
[0044]所述步驟I中虛擬機的構建采用CloudStack虛擬機云管理平臺安裝在物理服務器集群上創(chuàng)建多個獨立的虛擬機,所有虛擬機由CloudStack虛擬機云管理平臺管控和監(jiān)測,每個虛擬機以單獨的操作系統(tǒng)運行Hadoop MapReduce任務。
[0045]所述步驟3中抽取樣本元素的規(guī)則為split數(shù)據(jù)分塊隊列中每隔十個split抽取一個split作為樣本元素。
[0046]如圖1所示,為本發(fā)明所述方法的Hodoop系統(tǒng)架構圖,在一組物理服務器集群上搭建基于CloudStack的多節(jié)點分布式虛擬機云管理平臺,云平臺以相同模板鏡像創(chuàng)建多個虛擬機作為組成Hadoop分布式運行環(huán)境的節(jié)點機器;圖中,OS為操作系統(tǒng),VM為虛擬機。
[0047]如圖2所示,為本發(fā)明所述方法的流程圖,首先在云環(huán)境下,由用戶Client向Hadoop系統(tǒng)提交一個作業(yè),該作業(yè)將被分割成數(shù)個split數(shù)據(jù)分塊。接著在split數(shù)據(jù)分塊隊列中每隔十個split抽取一次作為樣本元素,組成任務模擬樣本組;然后將模擬樣本組提交給JobTracker, JobTracker啟動多個TaskTracker運行模擬樣本組,得出每一個Map任務產生的〈key, value〉鍵值對的去向,即Reduce任務和它要拷貝的中間數(shù)據(jù)的映射關系,統(tǒng)計相同key值在Reduce任務上的分布概率情況;接著,云平臺中虛擬機遷移是根據(jù)上述結果以最大概率分布優(yōu)先為準則,構建虛機遷移網絡拓撲圖,并完成對Reduce任務虛擬機的遷移。最后,MapReduce真正啟動運行。
[0048]為了驗證本發(fā)明所述方法的可靠性及準確性,在16個節(jié)點的集群上分別對傳統(tǒng)MapReduce 以及高性能 MapReduce 機制的 Hadoop,運行 TeraSort、TestDFSIO、WordCount 和K-means Clustering五大基準測試程序,并對其作業(yè)完成時間的情況進行統(tǒng)計和分析??紤]到測試有一定偶然性,每個作業(yè)均重復運行三次,統(tǒng)計數(shù)據(jù)取平均。詳細數(shù)據(jù)見表I及表2。
[0049]從表2可以看出,本發(fā)明所述方法高性能MapReduce機制對比傳統(tǒng)的MapReduce機制,在測試程序TeraSort的測試結果中性能提升了 22.82%;在測試程序TestDFSIO的測試結果中,讀操作性能提升了 33.72%,寫操作性能提升了 33.63% ;在測試程序WordCount的測試結果中性能提升了 29.75% ;在測試程序K-means Clustering的測試結果性能中提升了 38.03% ;由此可見,本發(fā)明所述方法大幅度提高了 MapReduce的性能,通過虛擬機動態(tài)遷移實現(xiàn)Reduce任務盡可能本地化地接收相同key值的Map任務的輸出,節(jié)約網絡帶寬。
[0050]表1基準測試程序負載特點及數(shù)據(jù)量
[0051]
【權利要求】
1.一種基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,其特征在于,包括以下步驟: 步驟1:在物理服務器上構建具有虛擬機的分布式運行Hodoop系統(tǒng); 步驟2:用戶Client向步驟I所述Hodoop系統(tǒng)提交作業(yè),Hodoop系統(tǒng)將作業(yè)分解為split數(shù)據(jù)分塊; 步驟3:從split數(shù)據(jù)分塊中依據(jù)規(guī)則抽取樣本元素,然后將所有抽取的樣本元素作為模擬樣本組; 步驟4:由Map任務對模擬樣本組進行處理,得到每個split數(shù)據(jù)分塊所對應生成的鍵值對〈key, value〉,并按照key值對數(shù)據(jù)進行分區(qū),從而產生分區(qū)partition ; 步驟5:每一個partition由一個Reduce任務進行處理,依次統(tǒng)計Reduce任務所在虛擬機上接收到的每一個key值對應的Map任務源,獲得生成key值最多的Map任務源; 步驟6:以步驟5獲得的Map任務源所在虛擬機的物理機器作為對應Reduce任務所在虛擬機的遷移目標; 步驟7:對其他Reduce任務重復步驟5和步驟6,獲得整個Hodoop系統(tǒng)內所有虛擬機的遷移路徑的集合對應虛擬機遷移網絡拓撲圖。
2.根據(jù)權利要求1所述的基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,其特征在于,所述步驟I中虛擬機的構建采用CloudStack虛擬機云管理平臺安裝在物理服務器集群上創(chuàng)建多個獨立的虛擬機,所有虛擬機由CloudStack虛擬機云管理平臺管控和監(jiān)測,每個虛擬機以單獨的操作系統(tǒng)運行Hadoop MapReduce任務。
3.根據(jù)權利要求2所述的基于虛擬機動態(tài)遷移的高性能MapReduce實現(xiàn)機制,其特征在于,所述步驟3中抽取樣本元素的規(guī)則為split數(shù)據(jù)分塊隊列中每隔十個split抽取一個split作為樣本元素。
【文檔編號】G06F9/455GK104008012SQ201410238408
【公開日】2014年8月27日 申請日期:2014年5月30日 優(yōu)先權日:2014年5月30日
【發(fā)明者】唐卓, 江林剛, 曾優(yōu), 楊黎, 馬穩(wěn), 祁玲 申請人:長沙麓云信息科技有限公司