專利名稱:基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法
技術(shù)領(lǐng)域:
本發(fā)明涉及大規(guī)模數(shù)據(jù)密集型科學(xué)數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法。
背景技術(shù):
萬維網(wǎng)的快速增長產(chǎn)生了大量可用的在線信息。此外,社會、科學(xué)和工程應(yīng)用也產(chǎn)生了大量結(jié)構(gòu)化和非結(jié)構(gòu)化的信息,這些信息需要被處理、分析和連接。目前,典型的數(shù)據(jù)密集型計算使用數(shù)據(jù)中心架構(gòu)和大規(guī)模數(shù)據(jù)處理模式。本發(fā)明研究基于多個數(shù)據(jù)中心的大規(guī)模數(shù)據(jù)處理模型。近年來,多個分布式機群或數(shù)據(jù)中心的數(shù)據(jù)密集型科學(xué)數(shù)據(jù)分析需求顯著增長。一個數(shù)據(jù)密集型分析的好例子是高能物理領(lǐng)域(HEP,High Energy Physics),包括ALICE, ATLAS, CMS和LHCB在內(nèi)的大型強子對撞機(LHC,Large Hadron Collider)的四個主要探測器在2010年產(chǎn)生了 13PB的數(shù)據(jù),這些大量數(shù)據(jù)存儲在LHC世界范圍內(nèi)的計算網(wǎng)格中,包括分布在34個國家的140多個計算中心[3,4]。這些分布在全球的分布式計算中心通過廣域網(wǎng)相連,彼此之間的數(shù)據(jù)拷貝過程是低效而乏味的。通過在多個機群之上使用數(shù)據(jù)并行處理模式,科學(xué)家們的模擬計算能夠并發(fā)地在多計算中心上進行,并且不需要數(shù)據(jù)拷貝。當(dāng)前的數(shù)據(jù)密集型工作流系統(tǒng),例如DAGMan、Pegasus、Swift、Kepler、VirtualWorkflow、Virtual Data System和Taverna,被用于跨多數(shù)據(jù)中心的分布式數(shù)據(jù)處理。在多數(shù)據(jù)中心上使用工作流模式有如下限制1)工作流提供粗粒度并行,并且不能滿足高吞吐數(shù)據(jù)處理需求,這些高吞吐數(shù)據(jù)處理往往需要大規(guī)模并行處理;2)典型的數(shù)據(jù)密集型計算工作流系統(tǒng)需要多任務(wù)間大量的數(shù)據(jù)傳輸,有時會帶來不必要的數(shù)據(jù)塊或數(shù)據(jù)集移動;
3)工作流系統(tǒng)必須考慮任務(wù)執(zhí)行和數(shù)據(jù)傳輸?shù)娜蒎e問題,容錯是數(shù)據(jù)密集型計算實現(xiàn)的重要問題。將谷歌的MapReduce用于分布式數(shù)據(jù)中心的數(shù)據(jù)處理,能夠克服工作流系統(tǒng)的上述限制。MapReduce是谷歌提出用于大規(guī)模數(shù)據(jù)集的并行編程模型,它基于兩個主要過程映射(Map)和規(guī)約(Reduce)。映射函數(shù)用來把一組鍵值對映射成一組新的鍵值對,規(guī)約函數(shù)合并所有相同的中間值。許多現(xiàn)實世界的應(yīng)用都采用MapReduce模型。Gfarm文件系統(tǒng)是一個分布式文件系統(tǒng),用于共享全球范圍內(nèi)大量的分布式數(shù)據(jù)。Gfarm文件系統(tǒng)支持在計算節(jié)點上的本地存儲能力。因此目前亟需提出基于多數(shù)據(jù)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法設(shè)計和實現(xiàn)。為了共享多個管理域的數(shù)據(jù)集,我們使用了 Gfarm文件系統(tǒng)來代替Hadoop的文件系統(tǒng) HDFS(Hadoop Distributed File System)。用戶向 Gfarm 提交他們的 MapReduce 應(yīng)用,基于多數(shù)據(jù)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程模型執(zhí)行映射(map)和化簡(reduce)任務(wù)?;诙鄶?shù)據(jù)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法提供了一個基于MapReduce的并行處理環(huán)境,處理分布式機群的大規(guī)模數(shù)據(jù)集。與現(xiàn)有的數(shù)據(jù)密集型工作流系統(tǒng)相比,該方法實現(xiàn)了細粒度的數(shù)據(jù)并行處理,達到高吞吐數(shù)據(jù)處理性能,并且提供大規(guī)模數(shù)據(jù)處理的容錯功能。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,在保持各機群的自治性和現(xiàn)有Hadoop的MapReduce程序兼容性前提下,通過構(gòu)建基于MapReduce編程模型的框架,能夠自動加載MapReduce任務(wù),使之在多個全球分布的機群節(jié)點上并行執(zhí)行,解決多數(shù)據(jù)中心的數(shù)據(jù)密集型應(yīng)用的并行編程問題。本發(fā)明的目的通過以下技術(shù)方案來實現(xiàn)
一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,包括以下步驟
1)構(gòu)建系統(tǒng)架構(gòu)的主節(jié)點,接收用戶提交的若干作業(yè),并通過主節(jié)點將所述作業(yè)分割成相對應(yīng)的次一級任務(wù),并將所述次一級任務(wù)分布到子節(jié)點上,所述主節(jié)點包括元數(shù)據(jù) Metadata服務(wù)器和作業(yè)跟蹤程序JobTracker服務(wù)器,所述元數(shù)據(jù)Metadata服務(wù)器使用Gfarm文件系統(tǒng)未經(jīng)修改的元數(shù)據(jù)服務(wù)器,元數(shù)據(jù)服務(wù)器管理分布在多個機群上的文件,決定文件的實際位置,管理文件的復(fù)制,協(xié)調(diào)多個客戶對文件的訪問;元數(shù)據(jù)服務(wù)器還需要管理用戶訪問控制信息,所述作業(yè)跟蹤程序JobTracker服務(wù)器使用一個數(shù)據(jù)感知的調(diào)度器,在考慮數(shù)據(jù)所在位置的基礎(chǔ)上,將計算任務(wù)分布到多個機群中;
2)構(gòu)建系統(tǒng)架構(gòu)的子節(jié)點,所述子節(jié)點包括任務(wù)跟蹤程序TaskTracker服務(wù)器、作業(yè)跟蹤程序、I/O服務(wù)器程序和網(wǎng)絡(luò)共享程序;
3)將MapReduce應(yīng)用及其配置置于網(wǎng)絡(luò)的共享位置中,供機群中的所有計算節(jié)點訪問共享位置中的作業(yè),并加以執(zhí)行;以及
4)設(shè)計自動加載MapReduce作業(yè)并行處理模型,所述并行處理模型包括提交作業(yè)、作業(yè)初始化、任務(wù)分配、任務(wù)定位、任務(wù)提交、任務(wù)執(zhí)行和釋放資源功能。進一步的,所述任務(wù)跟蹤程序TaskTracker服務(wù)器負責(zé)接收和執(zhí)行分布式資源管理應(yīng)用接口 DRMAA Gfarm Plugin送來的任務(wù),所述作業(yè)跟蹤程序使用一個分布式資源管理應(yīng)用接口 DRMAA的java庫進行任務(wù)提交;所述子節(jié)點上的I/O服務(wù)器管理存儲在子節(jié)點中的數(shù)據(jù),所述主節(jié)點上的I/O服務(wù)器將數(shù)據(jù)存儲在機群的高性能文件系統(tǒng)中。本發(fā)明的有益效果為大規(guī)模數(shù)據(jù)密集型科學(xué)數(shù)據(jù)領(lǐng)域技術(shù)人員,無需熟悉基于多數(shù)據(jù)中心的并行計算模型、也無需具備與高性能計算相關(guān)的MapReduce和MPI并行編程技術(shù),只需要在多個分布式機群上進行簡單配置,并加載MapReduce計算任務(wù),無需改變已有集群系統(tǒng)的軟硬件配置,就可實現(xiàn)架構(gòu)于多數(shù)據(jù)中心,基于MapReduce編程模型的數(shù)據(jù)密集型應(yīng)用的快速并行化,達到較高的并行效率,從而大大提高大規(guī)模分布式數(shù)據(jù)密集型科學(xué)數(shù)據(jù)的處理性能。
圖I為本發(fā)明實施例所述的基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法的體系結(jié)構(gòu) 圖2為本發(fā)明中主節(jié)點的軟件組成部分示意 圖3為本發(fā)明中子節(jié)點的軟件組成部分示意圖;圖4為本發(fā)明中一個MapReduce任務(wù)的執(zhí)行流程示意圖。
具體實施例方式本發(fā)明實施例所述的一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,包括以下步驟
1)構(gòu)建系統(tǒng)架構(gòu)的主節(jié)點,接收用戶提交的若干作業(yè),并通過主節(jié)點將所述作業(yè)分割成相對應(yīng)的次一級任務(wù),并將所述次一級任務(wù)分布到子節(jié)點上;主節(jié)點分為上下兩層。首先,在作為系統(tǒng)主節(jié)點的計算機系統(tǒng)上安裝Hadoop和Gfarm軟件包。Hadoop是一個分布式計算平臺,它實現(xiàn)了一個分布式文件系統(tǒng)。Gfarm也是一個分布式文件系統(tǒng)。Hadoop工作在主節(jié)點的上層,負責(zé)作業(yè)提交和跟蹤管理。Gfarm工作在主節(jié)點的下層,負責(zé)管理存儲系統(tǒng)。其次,在Hadoop和Gfarm之間安裝一個GfarmFS Hadoop-Plugin插件軟件程序,負責(zé)Hadoop和Gfarm的通訊。最后,分別在Hadoop上運行JobTracker程序,在Gfarm上運行 Meta Data Server 程序; 所述主節(jié)點包括元數(shù)據(jù)Metadata服務(wù)器和作業(yè)跟蹤程序JobTracker服務(wù)器,所述元數(shù)據(jù)Metadata服務(wù)器使用Gfarm文件系統(tǒng)未經(jīng)修改的元數(shù)據(jù)服務(wù)器,元數(shù)據(jù)服務(wù)器管理分布在多個機群上的文件,決定文件的實際位置,管理文件的復(fù)制,協(xié)調(diào)多個客戶對文件的訪問;元數(shù)據(jù)服務(wù)器還需要管理用戶訪問控制信息,所述作業(yè)跟蹤程序JobTracker服務(wù)器使用一個數(shù)據(jù)感知的調(diào)度器,在考慮數(shù)據(jù)所在位置的基礎(chǔ)上,將計算任務(wù)分布到多個機群中;
2)構(gòu)建系統(tǒng)架構(gòu)的子節(jié)點,所述子節(jié)點包括任務(wù)跟蹤程序TaskTracker服務(wù)器、作業(yè)跟蹤程序、I/O服務(wù)器程序和網(wǎng)絡(luò)共享程序,在作為系統(tǒng)子節(jié)點的計算機系統(tǒng)上安裝Hadoop 和 Gfarm 軟件包。其次,在 Hadoop 和 Gfarm 之間安裝一個 GfarmFS Hadoop-Plugin插件軟件程序,負責(zé)Hadoop和Gfarm的通訊。最后,在Hadoop上運行TaskTracker程序,在Gfarm上運行I/O Server程序,TaskTracker程序等待管理主節(jié)點分配來的任務(wù),I/OServer程序等待為這些任務(wù)進行數(shù)據(jù)的讀寫;
所述任務(wù)跟蹤程序TaskTracker服務(wù)器負責(zé)接收和執(zhí)行分布式資源管理應(yīng)用接口DRMAA Gfarm Plugin送來的任務(wù),所述作業(yè)跟蹤程序使用一個分布式資源管理應(yīng)用接口DRMAA的java庫進行任務(wù)提交;所述子節(jié)點上的I/O服務(wù)器管理存儲在子節(jié)點中的數(shù)據(jù),所述主節(jié)點上的I/O服務(wù)器將數(shù)據(jù)存儲在機群的高性能文件系統(tǒng)中;
3)將MapReduce應(yīng)用及其配置置于網(wǎng)絡(luò)的共享位置中,供機群中的所有計算節(jié)點訪問共享位置中的作業(yè),并加以執(zhí)行;以及
4)設(shè)計自動加載MapReduce作業(yè)并行處理模型,所述并行處理模型包括提交作業(yè)、作業(yè)初始化、任務(wù)分配、任務(wù)定位、任務(wù)提交、任務(wù)執(zhí)行和釋放資源功能。具體實施時,基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法的具體應(yīng)用流程如下
I)提交作業(yè)。用戶在客戶節(jié)點上調(diào)用runjob O方法,開始進行一個MapReduce應(yīng)用,runjob 實例化產(chǎn)生一個 JobClient, JobClient 是 Hadoop 的 MapReduce 堆棧的一部分,負責(zé)向系統(tǒng)提交作業(yè)。JobClient首先聯(lián)系主節(jié)點上的作業(yè)跟蹤程序(JobTracker),為新作業(yè)請求一個唯一的ID, JobClient把MapReduce執(zhí)行程序、配置參數(shù)和輸入文件等附加資源賦值到一個指定的Gfarm文件系統(tǒng)目錄中。JobClient把作業(yè)提交給任務(wù)跟蹤程序,用于執(zhí)行。2)作業(yè)初始化。在主節(jié)點上,作業(yè)跟蹤程序(JobTracker)對作業(yè)進行初始化,通過generatelnputSplit O方法把作業(yè)分割成多個任務(wù),該方法由用戶實現(xiàn),并聯(lián)系Gfarm元數(shù)據(jù)服務(wù)器,請求得到作業(yè)輸入文件的所有位置信息。由于Gfarm文件系統(tǒng)使用基于文件的方法,所以不同大小的文件被定位在不同的機群上。映像文件的編號被設(shè)置為輸入文件的編號,每個任務(wù)使用一個文件作為它的輸入數(shù)據(jù)。3)任務(wù)分配。子節(jié)點上的任務(wù)跟蹤程序(TaskTracker)使用心跳消息協(xié)議,定期向作業(yè)跟蹤程序(JobTracker)詢問是否有新的任務(wù)。基于輸入文件的位置信息,任務(wù)傾向于分配給輸入數(shù)據(jù)所在的機群。作業(yè)跟蹤程序(JobTracker)使用單個心跳消息能夠回答多個新任務(wù)請求。4)任務(wù)定位。當(dāng)任務(wù)跟蹤程序(TaskTracker)收到一個新任務(wù),它通過把Gfarm 文件系統(tǒng)的工作目錄復(fù)制到一個網(wǎng)絡(luò)共享程序,將可執(zhí)行任務(wù)和資源進行定位。5)任務(wù)提交。任務(wù)被任務(wù)跟蹤程序(TaskTracker)定位到機群上之后,使用分布式資源管理應(yīng)用接口(DRMAA),將可執(zhí)行程序和它的工作目錄提交給機群調(diào)度器。6)任務(wù)執(zhí)行。機群調(diào)度器選擇一個空閑的計算節(jié)點用于新任務(wù)的執(zhí)行。計算節(jié)點從作業(yè)工作目錄的共享位置獲得可執(zhí)行程序,需要的庫文件(例如Hadoop和Gfarm)必須被放在機群指定的共享位置,用于訪問。在計算節(jié)點上產(chǎn)生一個新的Java虛擬機(JVM),執(zhí)行這個作業(yè),使用配置好的參數(shù)運行相應(yīng)的任務(wù)。這些任務(wù)包括映射(Map)任務(wù)和化簡(Reduce)任務(wù)。如果是映射任務(wù),則開始讀取任務(wù)的輸入文件,輸出內(nèi)容被寫入到機群的一個共享目錄中,并進行排序。如果是化簡任務(wù),則聯(lián)系任務(wù)跟蹤程序(TaskTracker)取回映射任務(wù)產(chǎn)生的輸出內(nèi)容。如果化簡任務(wù)和映射任務(wù)產(chǎn)生的輸出是在同一個機群上,那么從公共共享區(qū)域讀取文件,否則使用超文本傳輸協(xié)議(HTTP)從其它機群上取回映射輸出?;喨蝿?wù)的結(jié)果通常被寫入到Gfarm文件系統(tǒng)中。在任務(wù)執(zhí)行過程中,定期向任務(wù)跟蹤程序(TaskTracker)報告任務(wù)的狀態(tài),當(dāng)任務(wù)執(zhí)行完成后,向任務(wù)跟蹤程序(TaskTracker)報告完成狀態(tài),并退出。7)釋放資源。當(dāng)機群調(diào)度器執(zhí)行完任務(wù),任務(wù)跟蹤程序?qū)⑨尫刨Y源,并且準備執(zhí)行下一個任務(wù)。按以上步驟,設(shè)計了一個面向多數(shù)據(jù)架構(gòu)中心的數(shù)據(jù)密集型應(yīng)用并行編程方法,適用于執(zhí)行MapReduce作業(yè)。該方法由MapReduce并行編程模型、Gfarm分布式文件系統(tǒng)、主節(jié)點程序和子節(jié)點程序組成,已經(jīng)實現(xiàn)了 MapReduce作業(yè)在多數(shù)據(jù)中心上的并行執(zhí)行。雖然以上僅描述了本發(fā)明的具體實施方式
范例,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更或修改均落入本發(fā)明的保護范圍。
權(quán)利要求
1.一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,其特征在于,包括以下步驟 1)構(gòu)建系統(tǒng)架構(gòu)的主節(jié)點,接收用戶提交的若干作業(yè),并通過主節(jié)點將所述作業(yè)分割成相對應(yīng)的次一級任務(wù),并將所述次一級任務(wù)分布到子節(jié)點上; 2)構(gòu)建系統(tǒng)架構(gòu)的子節(jié)點,所述子節(jié)點包括任務(wù)跟蹤程序TaskTracker服務(wù)器、作業(yè)跟蹤程序、I/O服務(wù)器程序和網(wǎng)絡(luò)共享程序; 3)將MapReduce應(yīng)用及其配置置于網(wǎng)絡(luò)的共享位置中,供機群中的所有計算節(jié)點訪問共享位置中的作業(yè),并加以執(zhí)行;以及 4)設(shè)計自動加載MapReduce作業(yè)并行處理模型,所述并行處理模型包括提交作業(yè)、作業(yè)初始化、任務(wù)分配、任務(wù)定位、任務(wù)提交、任務(wù)執(zhí)行和釋放資源功能。
2.根據(jù)權(quán)利要求I所述的一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,其特征在于所述主節(jié)點包括元數(shù)據(jù)Metadata服務(wù)器和作業(yè)跟蹤程序JobTracker服務(wù)器,所述元數(shù)據(jù)Metadata服務(wù)器使用Gfarm文件系統(tǒng)未經(jīng)修改的元數(shù)據(jù)服務(wù)器,元數(shù)據(jù)服務(wù)器管理分布在多個機群上的文件,決定文件的實際位置,管理文件的復(fù)制,協(xié)調(diào)多個客戶對文件的訪問;元數(shù)據(jù)服務(wù)器還管理用戶訪問控制信息,所述作業(yè)跟蹤程序JobTracker服務(wù)器使用一個數(shù)據(jù)感知的調(diào)度器,在考慮數(shù)據(jù)所在位置的基礎(chǔ)上,將計算任務(wù)分布到多個機群中。
3.根據(jù)權(quán)利要求2所述的一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,其特征在于所述任務(wù)跟蹤程序TaskTracker服務(wù)器負責(zé)接收和執(zhí)行分布式資源管理應(yīng)用接口 DRMAA Gfarm Plugin送來的任務(wù),所述作業(yè)跟蹤程序使用一個分布式資源管理應(yīng)用接口 DRMAA的java庫進行任務(wù)提交。
4.根據(jù)權(quán)利要求3所述的一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,其特征在于;所述子節(jié)點上的I/O服務(wù)器管理存儲在子節(jié)點中的數(shù)據(jù),所述主節(jié)點上的I/O服務(wù)器將數(shù)據(jù)存儲在機群的高性能文件系統(tǒng)中。
全文摘要
本發(fā)明涉及一種基于多數(shù)據(jù)架構(gòu)中心面向數(shù)據(jù)密集型應(yīng)用的并行編程方法,包括構(gòu)建系統(tǒng)架構(gòu)的主節(jié)點、構(gòu)建系統(tǒng)架構(gòu)的子節(jié)點、加載、執(zhí)行等步驟。本發(fā)明的有益效果為大規(guī)模數(shù)據(jù)密集型科學(xué)數(shù)據(jù)領(lǐng)域技術(shù)人員,無需熟悉基于多數(shù)據(jù)中心的并行計算模型、也無需具備與高性能計算相關(guān)的MapReduce和MPI并行編程技術(shù),只需要在多個分布式機群上進行簡單配置,并加載MapReduce計算任務(wù),無需改變已有集群系統(tǒng)的軟硬件配置,就可實現(xiàn)架構(gòu)于多數(shù)據(jù)中心,基于MapReduce編程模型的數(shù)據(jù)密集型應(yīng)用的快速并行化,達到較高的并行效率,從而大大提高大規(guī)模分布式數(shù)據(jù)密集型科學(xué)數(shù)據(jù)的處理性能。
文檔編號G06F9/46GK102880510SQ201210359600
公開日2013年1月16日 申請日期2012年9月24日 優(yōu)先權(quán)日2012年9月24日
發(fā)明者王力哲 申請人:中國科學(xué)院對地觀測與數(shù)字地球科學(xué)中心