本發(fā)明涉及計算機領(lǐng)域,尤其涉及基于輕量級虛擬機的并行計算方法、裝置及系統(tǒng)。
背景技術(shù):
21世紀(jì)是信息化的時代,由于傳感技術(shù)和通信網(wǎng)絡(luò)的發(fā)展、數(shù)據(jù)收集和存儲的規(guī)模在飛速增大,如何從海量數(shù)據(jù)中挖據(jù)出有效的信息是當(dāng)前的研究熱點。目前較為普遍的方案是采用集群系統(tǒng)和分布式框架來提高數(shù)據(jù)處理的效率。并行計算是提高計算機系統(tǒng)計算速度和處理能力的一種有效手段。
并行計算或稱平行計算是相對于串行計算來說的。它是一種一次可執(zhí)行多個指令的算法,目的是提高計算速度,以及通過擴大問題求解規(guī)模,解決大型而復(fù)雜的計算問題。所謂并行計算可分為時間上的并行和空間上的并行。時間上的并行就是指流水線技術(shù),而空間上的并行則是指用多個處理器并發(fā)的執(zhí)行計算。并行計算是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統(tǒng)計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來協(xié)同求解同一問題,即將被求解的問題分解為若干個部分,各部分均由一個獨立的處理機來并行計算。并行計算系統(tǒng)既可以是專門設(shè)計的、含有多個處理器的超級計算機,也可以是以某種方式互連的若干臺獨立計算機構(gòu)成的集群。
MPI(信息傳遞接口)是目前開發(fā)并行應(yīng)用程序的主要編程模型,消息傳遞編程模型的事實標(biāo)準(zhǔn)。MPI存在的問題是,針對不同的并行算法,需要重寫數(shù)據(jù)分配、通信等細(xì)節(jié),代碼重用率低,機器擴展性能差,對編程人員的要求高,且優(yōu)化和調(diào)試成本高。
MapReduce是谷歌提出的一種并行化編程框架,其通過簡單的編程模型,使得用戶從編寫底層程序中解放出來,只需將注意力放在上層應(yīng)用。然而用戶很難對復(fù)雜數(shù)據(jù)進行處理,用于不得不編寫大量的MapReduce任務(wù),往往導(dǎo)致執(zhí)行效率低下。尤其在迭代過程中,Map和Reduce會頻繁進行序列化和反序列化操作,這些操作導(dǎo)致了較高的輸入和輸出開銷。
技術(shù)實現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的之一在于提供基于輕量級虛擬機的并行計算方法,其能解決現(xiàn)有技術(shù)中執(zhí)行效率低、復(fù)雜度高的問題。
本發(fā)明的目的之二在于提供基于輕量級虛擬機的并行計算裝置,其能解決本發(fā)明的目的之一。
本發(fā)明的目的之三在于提供基于輕量級虛擬機的并行計算系統(tǒng),其解決現(xiàn)有技術(shù)中執(zhí)行效率低、復(fù)雜度高的問題。
本發(fā)明的目的之一采用以下技術(shù)方案實現(xiàn):
基于輕量級虛擬機的并行計算方法,包括如下步驟:
S1:接收計算請求并將該計算請求放入任務(wù)隊列中,并向控制節(jié)點發(fā)送查詢請求;所述任務(wù)隊列中包含至少一個計算請求,該任務(wù)隊列中的所有計算請求按照計算請求的時間的先后順序依次排列;計算請求包括計算數(shù)據(jù)和代碼;
S2:根據(jù)查詢請求查詢所有計算節(jié)點的狀態(tài)信息;所述狀態(tài)信息包括可用于計算和不可用于計算;
S3:根據(jù)計算節(jié)點的狀態(tài)信息將計算數(shù)據(jù)和代碼發(fā)送至可用于計算的計算節(jié)點,使所有可用于計算的計算節(jié)點對應(yīng)的輕量級虛擬機同步運行代碼進行計算。
優(yōu)選的,S1中,計算數(shù)據(jù)和代碼由用戶輸入。
優(yōu)選的,S1中,根據(jù)任務(wù)隊列中排在首位的計算請求向控制節(jié)點發(fā)送查詢請求。
優(yōu)選的,所述狀態(tài)信息還包括錯誤。
優(yōu)選的,S3中,可用于計算的計算節(jié)點對應(yīng)的輕量級虛擬機運行代碼進行計算包括如下步驟:
Sa:接收計算數(shù)據(jù)和代碼;
Sb:從計算數(shù)據(jù)中提取并行算法以及所需計算的數(shù)據(jù);
Sc:判斷是否提取成功,若是,則根據(jù)并行算法編譯對應(yīng)的輕量級虛擬機,否則返回Sb;
Sd:判斷是否編譯成功,若是,則使對應(yīng)的輕量級虛擬機進行計算,并將計算結(jié)果返回至服務(wù)節(jié)點,否則,重新根據(jù)并行算法編譯輕量級虛擬機。
本發(fā)明的目的之二采用以下技術(shù)方案實現(xiàn):
基于輕量級虛擬機的并行計算裝置,包括
接收單元:用于接收計算請求并將該計算請求放入任務(wù)隊列中,并向控制節(jié)點發(fā)送查詢請求;所述任務(wù)隊列中包含至少一個計算請求,該任務(wù)隊列中的所有計算請求按照計算請求的時間的先后順序依次排列;計算請求包括計算數(shù)據(jù)和代碼;
查詢單元:用于根據(jù)查詢請求查詢所有計算節(jié)點的狀態(tài)信息;所述狀態(tài)信息包括可用于計算和不可用于計算;
計算單元:用于根據(jù)計算節(jié)點的狀態(tài)信息將計算數(shù)據(jù)和代碼發(fā)送至可用于計算的計算節(jié)點,使所有可用于計算的計算節(jié)點對應(yīng)的輕量級虛擬機同步運行代碼進行計算。
優(yōu)選的,計算請求來自客戶端,且該客戶端中的計算數(shù)據(jù)和代碼由用戶輸入。
優(yōu)選的,接收單元根據(jù)任務(wù)隊列中排在首位的計算請求向控制節(jié)點發(fā)送查詢請求。
優(yōu)選的,所述狀態(tài)信息還包括錯誤。
本發(fā)明的目的之三采用以下技術(shù)方案實現(xiàn):
基于輕量級虛擬機的并行計算系統(tǒng),包括客戶端、控制管理器、數(shù)據(jù)庫、服務(wù)管理器、輕量級虛擬機,
所述客戶端用于發(fā)送計算請求至服務(wù)管理器;所述計算請求包括計算數(shù)據(jù)和代碼;
所述服務(wù)管理器用于將計算請求放入任務(wù)隊列中,并向控制管理器發(fā)送查詢請求,使控制管理器根據(jù)查詢請求查詢所有計算節(jié)點的狀態(tài)信息;服務(wù)管理器還根據(jù)來自控制管理器的狀態(tài)信息將計算數(shù)據(jù)和代碼發(fā)送至可用于計算的計算節(jié)點;所述任務(wù)隊列中包含至少一個計算請求,該任務(wù)隊列中的所有計算請求按照服務(wù)管理器接收到計算請求的時間的先后順序依次排列;狀態(tài)信息包括可用于計算和不可用于計算;
數(shù)據(jù)庫用于存儲控制管理器所查詢的計算節(jié)點的狀態(tài)信息;
輕量級虛擬機應(yīng)用于計算節(jié)點中,計算節(jié)點用于接收來自服務(wù)管理器的計算請求,使對應(yīng)的輕量級虛擬機同步運行代碼進行計算。
相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:
本發(fā)明的代碼可以重用,編程復(fù)雜度低,面對復(fù)雜的計算任務(wù)不用編寫大量MapReduce任務(wù),并行計算代碼從客戶端傳送到計算節(jié)點,再編譯輕量級虛擬機,執(zhí)行效率高。
附圖說明
圖1為本發(fā)明的基于輕量級虛擬機的并行計算方法的流程圖。
圖2為本發(fā)明的基于輕量級虛擬機的并行計算系統(tǒng)的結(jié)構(gòu)圖。
具體實施方式
下面,結(jié)合附圖以及具體實施方式,對本發(fā)明做進一步描述:
本發(fā)明提供一種基于輕量級虛擬機的并行計算方法,其中,本發(fā)明所指的輕量級虛擬機是指contiki系統(tǒng)編譯出來的輕量級虛擬機,contiki是采用c語言開發(fā)的非常小型的嵌入式操作系統(tǒng),在編譯過程中可以在其中嵌入不同的代碼。輕量級虛擬機可以自動創(chuàng)建、復(fù)制、遷移、刪除、并根據(jù)嵌入代碼實現(xiàn)不同的功能。本發(fā)明將輕量級虛擬機應(yīng)用在計算節(jié)點,可以靈活處理復(fù)制的計算任務(wù),不需要處理消息傳遞、代碼可以重用,編譯復(fù)雜度低,不同機器容易擴展。面對復(fù)雜的計算任務(wù)時,不用編寫大量的MapReduce任務(wù),并行計算代碼從客戶端傳送到計算節(jié)點,再編譯輕量級虛擬機,提高執(zhí)行效率。
參見圖1所示,包括如下步驟:
S1:接收計算請求并將該計算請求放入任務(wù)隊列中;所述任務(wù)隊列中包含至少一個計算請求,該任務(wù)隊列中的所有計算請求按照計算請求的時間的先后順序依次排列;計算請求包括計算數(shù)據(jù)和代碼;
本發(fā)明的并行計算是從客戶端開始,用戶在客戶端進行并行算法編程,也就是輸入代碼,并且輸入計算數(shù)據(jù),這里的代碼也就是輕量級虛擬機嵌入代碼。S1中的計算請求來自客戶端,并且計算請求中的計算數(shù)據(jù)可代碼由用戶輸入。根據(jù)客戶端發(fā)送計算請求的時間對所有來自客戶端的計算請求進行先后排序,并加入到任務(wù)隊列中,也就是任務(wù)隊列中的所有計算請求都是按時間順序排列的。其中,計算請求中包含有客戶端發(fā)送該計算請求至服務(wù)節(jié)點的時間。在本步驟中,實際是發(fā)送關(guān)于任務(wù)隊列中排在首位的計算請求的查詢請求。
S2:根據(jù)查詢請求查詢所有計算節(jié)點的狀態(tài)信息,并將該狀態(tài)信息反饋至服務(wù)節(jié)點;所述狀態(tài)信息包括可用于計算和不可用于計算;作為優(yōu)選,狀態(tài)信息還可以包括錯誤??捎糜谟嬎愕臓顟B(tài)表明該計算節(jié)點可以用作計算,不可用于計算的狀態(tài)表明該計算節(jié)點不可用于計算,但是計算節(jié)點是可以正常使用的,而錯誤狀態(tài)則該計算節(jié)點不可以用于計算,并且該計算節(jié)點出錯,需要修復(fù)。
查詢請求由上一步驟發(fā)起,本步驟承擔(dān)分發(fā)和收集的任務(wù),只作為控制功能,不作計算使用。多個計算節(jié)點的選擇,查詢計算節(jié)點的狀態(tài),返回可用于計算的計算節(jié)點,全部分配計算任務(wù)。
S3:根據(jù)計算節(jié)點的狀態(tài)信息將計算數(shù)據(jù)和代碼發(fā)送至可用于計算的計算節(jié)點,使所有可用于計算的計算節(jié)點對應(yīng)的輕量級虛擬機同步運行代碼進行計算,并將計算結(jié)果返回服務(wù)節(jié)點。
根據(jù)計算節(jié)點的狀態(tài)信息得到每個計算節(jié)點的處理能力,把計算數(shù)據(jù)和代碼發(fā)送給計算幾點。計算節(jié)點接收到計算請求后,基于輕量級虛擬機進行計算,該輕量級虛擬機可以自動創(chuàng)建、復(fù)制、遷移、刪除、動態(tài)編譯和運行并行算法代碼,計算完成后計算節(jié)點將計算的結(jié)果發(fā)送給服務(wù)節(jié)點。之后服務(wù)節(jié)點接收完所有來自計算節(jié)點的計算結(jié)果后,返回全部計算結(jié)果至客戶端。
在步驟S3中,可用于計算的計算節(jié)點對應(yīng)的輕量級虛擬機運行代碼進行計算包括如下步驟:
Sa:接收計算數(shù)據(jù)和代碼;
Sb:從計算數(shù)據(jù)中提取并行算法以及所需計算的數(shù)據(jù);
Sc:判斷是否提取成功,若是,則根據(jù)并行算法編譯對應(yīng)的輕量級虛擬機,否則返回Sb;
Sd:判斷是否編譯成功,若是,則使對應(yīng)的輕量級虛擬機進行計算,并將計算結(jié)果返回至服務(wù)節(jié)點,否則,重新根據(jù)并行算法編譯輕量級虛擬機。
相對應(yīng)上述并行計算方法,本發(fā)明提供一種基于輕量級虛擬機的并行計算裝置,與并行計算方法一一對應(yīng),包括:
接收單元:用于接收計算請求并將該計算請求放入任務(wù)隊列中,并向控制節(jié)點發(fā)送查詢請求;所述任務(wù)隊列中包含至少一個計算請求,該任務(wù)隊列中的所有計算請求按照計算請求的時間的先后順序依次排列;計算請求包括計算數(shù)據(jù)和代碼;
查詢單元:用于根據(jù)查詢請求查詢所有計算節(jié)點的狀態(tài)信息;所述狀態(tài)信息包括可用于計算和不可用于計算;
計算單元:用于根據(jù)計算節(jié)點的狀態(tài)信息將計算數(shù)據(jù)和代碼發(fā)送至可用于計算的計算節(jié)點,使所有可用于計算的計算節(jié)點對應(yīng)的輕量級虛擬機同步運行代碼進行計算。
另外一方面,參見圖2,本發(fā)明還提供基于輕量級虛擬機的并行計算系統(tǒng),包括客戶端、控制管理器、數(shù)據(jù)庫、服務(wù)管理器、輕量級虛擬機,
所述客戶端用于發(fā)送計算請求至服務(wù)管理器;所述計算請求包括計算數(shù)據(jù)和代碼;
所述服務(wù)管理器用于將計算請求放入任務(wù)隊列中,并向控制管理器發(fā)送查詢請求,使控制管理器根據(jù)查詢請求查詢所有計算節(jié)點的狀態(tài)信息;服務(wù)管理器還根據(jù)來自控制管理器的狀態(tài)信息將計算數(shù)據(jù)和代碼發(fā)送至可用于計算的計算節(jié)點;所述任務(wù)隊列中包含至少一個計算請求,該任務(wù)隊列中的所有計算請求按照服務(wù)管理器接收到計算請求的時間的先后順序依次排列;狀態(tài)信息包括可用于計算和不可用于計算;
數(shù)據(jù)庫用于存儲控制管理器所查詢的計算節(jié)點的狀態(tài)信息;
輕量級虛擬機應(yīng)用在計算節(jié)點中,計算節(jié)點用于接收來自服務(wù)管理器的計算請求,動態(tài)編譯輕量級虛擬機承擔(dān)計算任務(wù),使對應(yīng)的輕量級虛擬機同步運行代碼進行計算。
實際上服務(wù)管理器與計算節(jié)點之間的聯(lián)系通過分發(fā)器和收集器完成,分發(fā)器將計算數(shù)據(jù)和代碼轉(zhuǎn)發(fā)給各計算節(jié)點,收集器用于收集各計算節(jié)點的計算結(jié)果。
在客戶端的流程主要包括:編寫并行計算算法,也就是所述的代碼;編寫計算數(shù)據(jù);打包并行計算算法和計算數(shù)據(jù),發(fā)送計算請求,并接收結(jié)果。
在服務(wù)節(jié)點的流程主要包括:服務(wù)管理器接收計算請求;將計算請求寫入任務(wù)隊列;如果該計算請求處于隊列頭,也就是按時間順序排列在首位,則向控制節(jié)點查詢計算節(jié)點信息,否則,不查詢,直到該計算請求處于隊列頭時再查詢。如果有滿足條件的計算節(jié)點,則分發(fā)器轉(zhuǎn)發(fā)計算請求至滿足條件的所有計算節(jié)點,收集器收集計算街而過,返回計算結(jié)果給客戶端。
控制節(jié)點與數(shù)據(jù)庫相關(guān),當(dāng)控制節(jié)點接收到服務(wù)管理器的查詢請求,讀數(shù)據(jù)庫查詢計算節(jié)點狀態(tài),寫數(shù)據(jù)庫,將計算節(jié)點的狀態(tài)信息寫入數(shù)據(jù)庫,并反饋信息給服務(wù)管理器。
本發(fā)明可以通過軟件以及硬件平臺的方式來實現(xiàn),也可以全部通過硬件來實施,本發(fā)明的技術(shù)方案對背景設(shè)計做出貢獻的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施部分。
對本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護范圍之內(nèi)。