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