專利名稱:基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)、網(wǎng)絡(luò)通信領(lǐng)域,特別涉及一種基于動(dòng)態(tài)數(shù)據(jù)拆分的 分布式并行計(jì)算的系統(tǒng)及其方法。
背景技術(shù):
隨著計(jì)算機(jī)及網(wǎng)絡(luò)的普及,由于網(wǎng)絡(luò)通信活動(dòng)的日益頻繁,為網(wǎng)絡(luò)中的 計(jì)算機(jī)提供各種服務(wù)的服務(wù)器越來越多,例如各種門戶網(wǎng)站、各種即時(shí)通訊 服務(wù)提供商、各種搜索引擎等,而提供這些網(wǎng)絡(luò)服務(wù)的各種服務(wù)器每天不但 要接收到海量的數(shù)據(jù),而且還要在各種復(fù)雜計(jì)算模型下對(duì)這些數(shù)據(jù)進(jìn)行計(jì)
算。以即時(shí)通訊服務(wù)提供商為例,其每天接收到的數(shù)據(jù)總量可能超過500 G,每個(gè)月則達(dá)到16T;而針對(duì)接收到的這些數(shù)據(jù),還需要通過計(jì)算服務(wù)器 (運(yùn)算機(jī))進(jìn)行數(shù)十項(xiàng)計(jì)算模型的計(jì)算,而且這些計(jì)算模型的邏輯都非常復(fù) 雜,因此對(duì)這樣的海量數(shù)據(jù)進(jìn)行計(jì)算耗時(shí)極長(zhǎng);即使是單個(gè)模型的計(jì)算,月 度匯總的耗時(shí)都可能超過10天,而年度匯總則耗時(shí)更長(zhǎng)。對(duì)于這樣的狀況, 以前的做法是按計(jì)算模型并行計(jì)算,即將沒有關(guān)聯(lián)的計(jì)算模型分機(jī)器執(zhí)行; 即使這樣,由于單個(gè)模型的計(jì)算時(shí)間長(zhǎng),而且部分模型之間又有直接的聯(lián) 系,導(dǎo)致耗時(shí)仍然很長(zhǎng);另一方面,由于各模型所需計(jì)算時(shí)間的不同,所采 用的計(jì)算服務(wù)器并不都是一直在參與運(yùn)算,部分計(jì)算服務(wù)器在每天計(jì)算完成 后總是有段空閑時(shí)間,直到第二天的運(yùn)算開始,因此會(huì)造成運(yùn)算資源的浪 費(fèi)。
而現(xiàn)有技術(shù)中,為提高數(shù)據(jù)的運(yùn)算效率,通過按任務(wù)分服務(wù)器(靜態(tài)數(shù) 據(jù)拆分)在多服務(wù)器上并行計(jì)算,每臺(tái)服務(wù)器固定計(jì)算整個(gè)模型中的一部分 任務(wù);例如大型游戲服務(wù)器中,作為整個(gè)計(jì)算模型中的一部分任務(wù),將角色 的AI(Artificial Intelligence,人工智能)放到一臺(tái)計(jì)算服務(wù)器上運(yùn)算,將場(chǎng)景的 動(dòng)畫放到另一臺(tái)計(jì)算服務(wù)器上運(yùn)算,等等;其中每臺(tái)運(yùn)算機(jī)(計(jì)算服務(wù)器)所要執(zhí)行的任務(wù)是固定的,每臺(tái)運(yùn)算機(jī)的計(jì)算環(huán)境相應(yīng)于其所執(zhí)行的任務(wù)而 固定。但是,這種按任務(wù)來進(jìn)行靜態(tài)數(shù)據(jù)拆分的方法,存在如下缺點(diǎn)1、各 種任務(wù)有大有小,所需運(yùn)算資源分配不均,因此運(yùn)算機(jī)利用率不高;2、必須 額外做容災(zāi),使得運(yùn)算機(jī)利用率更低;3、不能靈活的增刪運(yùn)算機(jī),以增加計(jì) 算效率或分離運(yùn)算機(jī);4、運(yùn)算機(jī)計(jì)算環(huán)境切換困難,運(yùn)算機(jī)的計(jì)算環(huán)境對(duì)應(yīng) 其所執(zhí)行的任務(wù)而固定。另一方面,現(xiàn)有技術(shù)中還存在一種基于對(duì)等式分布 計(jì)算技術(shù)的并行信息傳送技術(shù)方案,在此方案中,信息不是通過服務(wù)器和客 戶機(jī)之間一對(duì)一傳送而是通過多個(gè)同位體和客戶機(jī)之間并行傳送,可以有效 縮短傳送信息所需的時(shí)間;此外,'中央服務(wù)器不是在中央控制來自所有客戶 機(jī)的所有請(qǐng)求,而是多個(gè)同位體同時(shí)進(jìn)行并行處理這些請(qǐng)求,從而可以大大 減少服務(wù)器的負(fù)荷,以便減少用于構(gòu)造服務(wù)器的成本并且網(wǎng)絡(luò)總的可利用帶 寬可以增大。這種方案的缺點(diǎn)在于1、該方案僅適用互聯(lián)網(wǎng)上的數(shù)據(jù)傳輸, 不適合內(nèi)網(wǎng)數(shù)據(jù)傳輸;2、該技術(shù)方案僅能加快信息的傳送,而不能對(duì)數(shù)據(jù)進(jìn) 行模型計(jì)算,可提高信息的傳送效率而無法提高數(shù)據(jù)的計(jì)算效率。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種基于動(dòng)態(tài)拆分?jǐn)?shù)據(jù),使用多臺(tái)服務(wù)器 協(xié)同并同時(shí)計(jì)算一個(gè)數(shù)據(jù)項(xiàng)目的系統(tǒng)及其方法。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算 的系統(tǒng),其包括拆分單元,其負(fù)責(zé)分割待計(jì)算的數(shù)據(jù)項(xiàng)目,把待計(jì)算數(shù)據(jù) 根據(jù)劃分規(guī)則劃分成若干相對(duì)獨(dú)立的子集,這些子集中,每個(gè)與其它子集的 計(jì)算無相關(guān)性的子集作為一個(gè)計(jì)算項(xiàng);運(yùn)算單元,其負(fù)責(zé)對(duì)所述計(jì)算項(xiàng)進(jìn)行
分布式并行計(jì)算,包括若干運(yùn)算機(jī),各運(yùn)算機(jī)分別計(jì)算其所分配到的計(jì)算
項(xiàng);環(huán)境單元,其負(fù)責(zé)在并行計(jì)算前部署所述運(yùn)算機(jī)中的執(zhí)行環(huán)境,并且在 計(jì)算執(zhí)行完成后將所述運(yùn)算機(jī)還原到執(zhí)行前的狀態(tài);負(fù)載均衡單元,其負(fù)責(zé) 檢查所有運(yùn)算機(jī)的負(fù)載情況,并根據(jù)各運(yùn)算機(jī)的資源消耗情況動(dòng)態(tài)地分配相 應(yīng)數(shù)量的計(jì)算項(xiàng)至各運(yùn)算機(jī)。
其中,該系統(tǒng)還包括控制單元,該控制單元包括至少一控制機(jī),通過該 控制機(jī)可配置管理所述系統(tǒng)和執(zhí)行控制指令。其中,該系統(tǒng)還包括顯示單元,該顯示單元負(fù)責(zé)顯示和監(jiān)控所述系統(tǒng)的 各單元的運(yùn)行情況,并且在系統(tǒng)執(zhí)行指令失敗或系統(tǒng)資源緊張時(shí)告警。
其中,該系統(tǒng)還包括以郵件或短信的方式發(fā)送告警的告警單元,該告警 單元包括郵件代理和短信代理,以及設(shè)于所述系統(tǒng)的其他各單元的發(fā)送郵件 或短信的工具。
其中,該系統(tǒng)還包括匯總單元,當(dāng)所述待計(jì)算數(shù)據(jù)的某些計(jì)算無法由所 述拆分單元拆分時(shí),運(yùn)算單元并行計(jì)算的所有數(shù)據(jù)項(xiàng)結(jié)果都傳到該匯總單元 中,傳輸完成后,由該匯總單元進(jìn)行匯總運(yùn)算。
其中,所述劃分規(guī)則為根據(jù)用戶需求按待計(jì)算數(shù)據(jù)的散列或者日期去分割。
其中,在所述運(yùn)算單元中,當(dāng)一計(jì)算項(xiàng)在一運(yùn)算機(jī)上計(jì)算失敗時(shí),該計(jì) 算項(xiàng)自動(dòng)重新分配至另 一運(yùn)算機(jī)進(jìn)行計(jì)算。
其中,所述運(yùn)算單元可以修改保存所述運(yùn)算機(jī)相關(guān)信息的配置文件,從 而在該運(yùn)算單元中增加或刪除運(yùn)算機(jī)。
其中,部署所述運(yùn)算機(jī)中的執(zhí)行環(huán)境包括在所述運(yùn)算機(jī)中部署計(jì)算腳 本、創(chuàng)建必須的目錄和設(shè)置必要的環(huán)境變量。
其中,所述系統(tǒng)的顯示單元、控制單元、負(fù)載均衡單元、環(huán)境單元以及 拆分單元設(shè)置于一臺(tái)服務(wù)器中。
其中,所述運(yùn)算機(jī)中對(duì)計(jì)算項(xiàng)的數(shù)據(jù)傳輸和計(jì)算同時(shí)進(jìn)行。
其中,所述運(yùn)算單元包括由一臺(tái)服務(wù)器虛擬而成的數(shù)個(gè)運(yùn)算機(jī)。
相應(yīng)地,本發(fā)明還提供一種基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方 法,其包括步驟
51、 分割待計(jì)算的數(shù)據(jù)項(xiàng)目,把待計(jì)算數(shù)據(jù)根據(jù)劃分規(guī)則劃分成若干相 對(duì)獨(dú)立的子集,這些子集中,每個(gè)與其它子集的計(jì)算無相關(guān)性的子集作為一 個(gè)計(jì)算項(xiàng);
52、 在若干運(yùn)算機(jī)中部署執(zhí)行環(huán)境;
53、 檢查所有運(yùn)算機(jī)的負(fù)載情況,并根據(jù)各運(yùn)算機(jī)的資源消耗情況動(dòng)態(tài) 地分配相應(yīng)數(shù)量的計(jì)算項(xiàng)至各運(yùn)算機(jī);
54、 各運(yùn)算機(jī)分別計(jì)算其所分配到的計(jì)算項(xiàng);
55、 計(jì)算執(zhí)行完成后將所述運(yùn)算機(jī)還原到執(zhí)行前的狀態(tài)。其中,還包括步驟執(zhí)行步驟Sl后,所述待計(jì)算數(shù)據(jù)的某些計(jì)算無法拆 分時(shí),則對(duì)執(zhí)行步驟S4所得的所有數(shù)據(jù)項(xiàng)結(jié)果執(zhí)行匯總運(yùn)算。
其中,步驟Sl中的劃分規(guī)則為根據(jù)用戶需求按待計(jì)算數(shù)據(jù)的散列或者日 期去分割。
其中,執(zhí)行步驟S4時(shí),當(dāng)一計(jì)算項(xiàng)在一運(yùn)算機(jī)上計(jì)算失敗時(shí),該計(jì)算項(xiàng) 自動(dòng)重新分配至另 一運(yùn)算機(jī)進(jìn)行計(jì)算。
其中,還包括步驟修改保存所述運(yùn)算機(jī)相關(guān)信息的配置文件,從而增 加或刪除運(yùn)算機(jī)。
其中,還包括步驟將一臺(tái)服務(wù)器虛擬成多臺(tái)運(yùn)算機(jī)。
本發(fā)明所提供的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)及其方法具 有如下優(yōu)點(diǎn)1)最大程度加快計(jì)算速度;2)最大程度利用了計(jì)算機(jī)的空閑 資源;3)方便控制、監(jiān)控和査看數(shù)據(jù)計(jì)算;4)運(yùn)算單元自容災(zāi),如果其中 部分運(yùn)算機(jī)壞了,不影響計(jì)算結(jié)果,只是計(jì)算效率有所降低。
下面結(jié)合附圖,通過對(duì)本發(fā)明的具體實(shí)施方式
詳細(xì)描述,將使本發(fā)明的 技術(shù)方案及其有益效果顯而易見。 附圖中,
圖1為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)的結(jié)構(gòu)示意
圖2為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)的一較佳實(shí)施 例的結(jié)構(gòu)示意圖3為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)的又一較佳實(shí) 施例的結(jié)構(gòu)示意圖4為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)中數(shù)據(jù)傳輸和 計(jì)算的方式的示意圖5為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明 白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此 處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
參見圖l,其為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)的結(jié)構(gòu)
示意圖,該系統(tǒng)主要包括拆分單元IO、運(yùn)算單元ll、環(huán)境單元12、負(fù)載均衡 單元13,其中運(yùn)算單元ll由若干運(yùn)算機(jī)(slave) 14組成。
拆分單元10負(fù)責(zé)分割數(shù)據(jù),其把待計(jì)算數(shù)據(jù)根據(jù)規(guī)則劃分成相對(duì)獨(dú)立的 子集,這些子集中,每個(gè)與其它子集的計(jì)算無相關(guān)性的子集作為一個(gè)計(jì)算 項(xiàng),"無相關(guān)性"是指一數(shù)據(jù)子集的計(jì)算不受另一數(shù)據(jù)子集計(jì)算的影響,即 此無相關(guān)性的兩個(gè)數(shù)據(jù)子集可以同時(shí)作并行運(yùn)算,不需運(yùn)算完一個(gè)子集才能 算另一個(gè)子集,對(duì)于滿足成為計(jì)算項(xiàng)條件的子集,要求任意兩個(gè)子集之間都 無相關(guān)性,即這些子集可以同時(shí)并行計(jì)算,也就是由拆分單元10拆分出可作 并行計(jì)算的計(jì)算項(xiàng);利用該拆分單元10可實(shí)現(xiàn)對(duì)待計(jì)算數(shù)據(jù)項(xiàng)目的動(dòng)態(tài)拆 分,而動(dòng)態(tài)數(shù)據(jù)拆分與靜態(tài)數(shù)據(jù)拆分相比,動(dòng)態(tài)拆分的數(shù)據(jù)更均勻,拆分的 子集數(shù)量可控,因此對(duì)運(yùn)算機(jī)的任務(wù)分配更合理,利用率也會(huì)提高不少。運(yùn) 算單元ll負(fù)責(zé)對(duì)所述計(jì)算項(xiàng)進(jìn)行分布式并行計(jì)算,并行計(jì)算的主要運(yùn)算在該 運(yùn)算單元ll中執(zhí)行,各運(yùn)算機(jī)14分別計(jì)算其所分配到的計(jì)算項(xiàng)。環(huán)境單元12 負(fù)責(zé)在并行計(jì)算前部署所有運(yùn)算機(jī)(slave)中的執(zhí)行環(huán)境,并且在計(jì)算執(zhí)行 完成后將所述運(yùn)算機(jī)還原到執(zhí)行前的狀態(tài),從而使整個(gè)計(jì)算對(duì)slave透明;因 此,slave在計(jì)算完一個(gè)模型后,如果需要用于計(jì)算其他模型,不用人工去搭 計(jì)算環(huán)境。負(fù)載均衡單元13其負(fù)責(zé)檢査所有運(yùn)算機(jī)的負(fù)載情況,其根據(jù)各運(yùn) 算機(jī)的磁盤、內(nèi)存、CPU、 IO等資源消耗情況,動(dòng)態(tài)地分配相應(yīng)數(shù)量的計(jì)算 項(xiàng)至各運(yùn)算機(jī)。
參見圖2,其為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)的一較 佳實(shí)施例的結(jié)構(gòu)示意圖,在此較佳實(shí)施例中,該基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式 并行計(jì)算的系統(tǒng)除包括拆分單元IO、由若干運(yùn)算機(jī)14組成的運(yùn)算單元11、環(huán) 境單元12、負(fù)載均衡單元13外,還包括用于輔助該系統(tǒng)運(yùn)行的控制單元、顯 示單元、告警單元16、匯總單元17和源數(shù)據(jù)存儲(chǔ)單元18,在此實(shí)施例中控制 單元和顯示單元結(jié)合在一起成為顯示/控制單元15。源數(shù)據(jù)存儲(chǔ)單元18存儲(chǔ)有對(duì)應(yīng)于待計(jì)算數(shù)據(jù)項(xiàng)目的源數(shù)據(jù),其將數(shù)據(jù)傳 輸給拆分單元10進(jìn)行拆分??刂茊卧俏ㄒ恍枰斯じ深A(yù)的單元,其主要功 能是配置管理和執(zhí)行指令,該控制單元包括至少一控制機(jī),通過控制機(jī)
(master),項(xiàng)目負(fù)責(zé)人19可采用網(wǎng)頁(yè)控制的方式增加、刪除或修改待計(jì)算模 型的配置項(xiàng),通過控制機(jī)來對(duì)不同的計(jì)算模型進(jìn)行配置管理;同樣,項(xiàng)目負(fù) 責(zé)人也可以利用CGI (公共網(wǎng)關(guān)接口)登陸控制機(jī)(master),執(zhí)行所需的控制 指令,控制機(jī)再將指令傳達(dá)給其他各單元。顯示單元具有顯示和監(jiān)控功能, 其可以通過網(wǎng)頁(yè)的形式實(shí)時(shí)顯示各單元的運(yùn)行情況,計(jì)算模型的計(jì)算進(jìn)度, 以及預(yù)估模型計(jì)算還需要多少時(shí)間等信息;同時(shí),在系統(tǒng)執(zhí)行指令失敗或系 統(tǒng)資源緊張時(shí),會(huì)向項(xiàng)目負(fù)責(zé)人19告警(例如以郵件或短信的方式,通過告警 單元16來完成)。告警單元16主要負(fù)責(zé)將計(jì)算過程中的異常快速傳達(dá)給項(xiàng)目負(fù) 責(zé)人19,該告警單元16主要包括郵件代理和短信代理,其他各單元的每臺(tái)服 務(wù)器上都有一個(gè)專門的工具來實(shí)現(xiàn)發(fā)郵件或短信的功能。匯總單元17為可選 單元,當(dāng)數(shù)據(jù)的某些計(jì)算無法拆分時(shí),即對(duì)某些計(jì)算來說,數(shù)據(jù)無法全部拆 分為可進(jìn)行并行計(jì)算的計(jì)算項(xiàng)時(shí),則需要將數(shù)據(jù)匯總,由運(yùn)算單元ll并行計(jì) 算的所有數(shù)據(jù)項(xiàng)結(jié)果都將傳到該匯總單元17中,傳輸完成后,會(huì)自動(dòng)啟動(dòng)匯 總運(yùn)算;如果對(duì)特定的計(jì)算,型或計(jì)算項(xiàng)目來說不存在無法拆分的數(shù)據(jù),則 該匯總單元17可省去;而且該匯總單元17可看作一特別的運(yùn)算機(jī),如圖2所 示,其同樣可像普通的運(yùn)算機(jī)一樣由環(huán)境單元12來搭建其運(yùn)行環(huán)境,由環(huán)境 單元12負(fù)責(zé)在匯總計(jì)算前部署匯總單元17中的執(zhí)行環(huán)境,并且在匯總計(jì)算執(zhí) 行完成后將所述匯總單元17還原到執(zhí)行前的狀態(tài)。
在此較佳實(shí)施例中,拆分單元10分割待計(jì)算數(shù)據(jù)項(xiàng)目的規(guī)則可以是根據(jù) 用戶需求按數(shù)據(jù)的散列(Hash)或者日期等去分割。
在針對(duì)某一計(jì)算模型進(jìn)行計(jì)算之前,先通過環(huán)境單元12在運(yùn)算單元11的 運(yùn)算機(jī)14上的搭環(huán)境,包括部署針對(duì)計(jì)算模型的計(jì)算腳本,創(chuàng)建必須的目 錄,設(shè)置必要的環(huán)境變量等。在模型計(jì)算時(shí),每臺(tái)運(yùn)算機(jī)14先拖取原始數(shù)據(jù) (經(jīng)拆分單元10分割后的數(shù)據(jù)),然后啟動(dòng)運(yùn)算腳本,計(jì)算完成后再將數(shù)據(jù)傳 輸?shù)絽R總單元17上(需要匯總運(yùn)算的情況下)。
為確保執(zhí)行的準(zhǔn)確性,該系統(tǒng)中運(yùn)行的每個(gè)步驟都要驗(yàn)證數(shù)據(jù)的正確 性。例如,傳輸完原始數(shù)據(jù)后,需要檢查傳輸后的文件數(shù)量及校驗(yàn)和;在計(jì)算完成后,需要檢查計(jì)算的結(jié)果文件數(shù)量及文件大??;傳輸匯總數(shù)據(jù)完成 后,需要檢查文件的數(shù)量及校驗(yàn)和。如果其中任何一個(gè)地方異常,都標(biāo)志這 個(gè)計(jì)算項(xiàng)計(jì)算失敗,進(jìn)而通過顯示/控制單元15和告警單元16來告警,并將該 計(jì)算項(xiàng)自動(dòng)重新分配至另一運(yùn)算機(jī)進(jìn)行計(jì)算,直到失敗3次(次數(shù)可調(diào)整)。
由于運(yùn)算機(jī)是在項(xiàng)目計(jì)算的時(shí)候才分配的,所以如果有運(yùn)算機(jī)壞了,該 并行計(jì)算系統(tǒng)會(huì)自動(dòng)找另外的運(yùn)算機(jī)重新計(jì)算該機(jī)負(fù)責(zé)的任務(wù),因此該系統(tǒng) 的運(yùn)算單元是自容災(zāi)的,不需要額外加機(jī)器作容災(zāi)。
同樣,我們還可以在運(yùn)算單元中修改保存運(yùn)算機(jī)相關(guān)信息的配置文件, 從而方便地從該并行計(jì)算系統(tǒng)中增加或刪除一臺(tái)運(yùn)算機(jī),從而靈活地增加或 減少該系統(tǒng)的資源。
在此較佳實(shí)施例中,各單元可分別采用單獨(dú)的服務(wù)器來實(shí)現(xiàn),也可以如 顯示/控制單元15—樣,采用數(shù)個(gè)單元結(jié)合的形式。
實(shí)際上,由于除運(yùn)算單元外的顯示、控制、負(fù)載均衡、環(huán)境以及拆分單 元等的負(fù)載都很小,通??蓪@示單元、控制單元、負(fù)載均衡單元、環(huán)境單 元以及拆分單元設(shè)置于一臺(tái)服務(wù)器中,具體可參見圖3,其為本發(fā)明基于動(dòng)態(tài) 數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)的又一較佳實(shí)施例的結(jié)構(gòu)示意圖。圖3中, 通過虛線和方框按照功能將該實(shí)施例的結(jié)構(gòu)劃分為四部分,由左至右分別為 數(shù)據(jù)接收、原始數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)計(jì)算和結(jié)果數(shù)據(jù)存儲(chǔ);數(shù)據(jù)接收單元25、 26 和27負(fù)責(zé)接收數(shù)據(jù)并分別傳遞給原始數(shù)據(jù)存儲(chǔ)單元28和29,其中數(shù)據(jù)接收單 元25傳遞數(shù)據(jù)1給原始數(shù)據(jù)存儲(chǔ)單元28,并且在控制機(jī)20的控制下,分割為數(shù) 據(jù)1/1、 1/2及1/3,而數(shù)據(jù)接收單元26和27傳遞數(shù)據(jù)2給原始數(shù)據(jù)存儲(chǔ)單元29,并 在控制機(jī)20的控制下,分割為數(shù)據(jù)2/1、 2/2及2/3;方框內(nèi)為本發(fā)明的并行計(jì) 算系統(tǒng),其包括由顯示、控制、負(fù)載均衡、環(huán)境以及拆分單元等組合而成的 控制機(jī)(master) 20、若干運(yùn)算機(jī)21,項(xiàng)目負(fù)責(zé)人22通過控制機(jī)20向該系統(tǒng) 輸入控制指令,同時(shí),控制機(jī)還20具有顯示和告警功能,從而項(xiàng)目負(fù)責(zé)人22 可掌握系統(tǒng)的運(yùn)行,數(shù)據(jù)1/1、 1/2及1/3,數(shù)據(jù)2/1、 2/2及2/3分別通過所述運(yùn) 算機(jī)21進(jìn)行并行運(yùn)算;最終,并行計(jì)算的結(jié)果由控制機(jī)20控制其進(jìn)行匯總運(yùn) 算并存入結(jié)果數(shù)據(jù)存儲(chǔ)單元23和24。
應(yīng)用本系統(tǒng)來進(jìn)行模型計(jì)算時(shí),整個(gè)系統(tǒng)的使用流程如下首先可由項(xiàng) 目負(fù)責(zé)人在配置單元中添加計(jì)算項(xiàng),填寫各種計(jì)算所需的配置,例如項(xiàng)目負(fù)責(zé)人的郵箱地址、電話號(hào)碼、數(shù)據(jù)源的位置、數(shù)據(jù)拆分方式等。然后在控制 單元中填入執(zhí)行參數(shù),點(diǎn)擊執(zhí)行按鈕,系統(tǒng)則啟動(dòng)并行計(jì)算的全部流程。每 一個(gè)流程完成)5無需人工干預(yù),自動(dòng)進(jìn)入下一個(gè)流程。期間可以在顯示單元 中觀察有哪些項(xiàng)目正在計(jì)算、各個(gè)運(yùn)算機(jī)的系統(tǒng)運(yùn)行狀態(tài)、每個(gè)項(xiàng)目中數(shù)據(jù) 項(xiàng)完成的情況、己經(jīng)完成的數(shù)據(jù)項(xiàng)的計(jì)算日志、以及整個(gè)計(jì)算項(xiàng)目大概還需 要多長(zhǎng)時(shí)間結(jié)束等。計(jì)算完成后網(wǎng)頁(yè)上會(huì)自動(dòng)顯示狀態(tài)為完成,如果配置了 完成通知的郵箱和電話號(hào)碼,系統(tǒng)還會(huì)自動(dòng)發(fā)郵件和短信通知。
此外,如圖4所示,其為本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系
統(tǒng)中數(shù)據(jù)傳輸和計(jì)算的方式的示意圖;因?yàn)樵谕慌_(tái)機(jī)器上,傳輸數(shù)據(jù)和運(yùn) 行腳本之間影響很小,可以同時(shí)進(jìn)行,所以在并行計(jì)算時(shí),所述運(yùn)算機(jī)對(duì)計(jì) 算項(xiàng)的數(shù)據(jù)傳輸和計(jì)算可以同時(shí)進(jìn)行;如圖4所示,在傳源數(shù)據(jù)2的同時(shí)進(jìn)行 計(jì)算l,在傳源數(shù)據(jù)3和傳匯總1的同時(shí)進(jìn)行計(jì)算2等等,從而提高了時(shí)間的利 用效率。設(shè)空閑計(jì)算機(jī)器數(shù)N,單機(jī)器的整個(gè)項(xiàng)目計(jì)算時(shí)間Ts,并行計(jì)算的總 時(shí)間Tp,數(shù)據(jù)傳輸?shù)目倳r(shí)間Tt,匯總時(shí)間Tg,貝U Tp=(Ts-Tg+Tt)/N+Tg;計(jì) 算和數(shù)據(jù)傳輸是可以同時(shí)進(jìn)行的,所以Tp^(Ts-Tg)/N+Tg;如果不需要匯 總,則Tp^Ts/N;從而利用本發(fā)明的系統(tǒng)可充分利用空閑機(jī)器,并最大程度 加快數(shù)據(jù)項(xiàng)目的計(jì)算速度。
此外,本發(fā)明的并行計(jì)算技術(shù)的另一種應(yīng)用方式為,將一臺(tái)服務(wù)器虛擬 成多臺(tái)運(yùn)算機(jī),也就是由一臺(tái)服務(wù)器虛擬成數(shù)個(gè)運(yùn)算機(jī)來代替多臺(tái)獨(dú)立的運(yùn) 算機(jī)(服務(wù)器),進(jìn)而可以將本發(fā)明的所有單元在一臺(tái)機(jī)器上實(shí)現(xiàn),也就是將 各單元設(shè)置于一臺(tái)服務(wù)器中;由于除運(yùn)算單元外的其他單元對(duì)服務(wù)器資源的 消耗接近于零,所以只用考慮運(yùn)算單元的資源消耗。 一般服務(wù)器上都有不只 一塊的CPU,計(jì)算時(shí), 一個(gè)進(jìn)程只能在一個(gè)CPU上執(zhí)行,這樣對(duì)CPU是極 大的浪費(fèi),如果在一臺(tái)服務(wù)器上虛擬成多臺(tái)服務(wù)器,并用來做并行計(jì)算,則 可以充分利用CPU,加大執(zhí)行效率。
對(duì)應(yīng)于本發(fā)明基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng),本發(fā)明還提 供了相應(yīng)的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方法,參見圖5,其為該方 法的流程圖。該方法包括步驟Sl、分割待計(jì)算的數(shù)據(jù)項(xiàng)目,把待計(jì)算數(shù)據(jù) 根據(jù)劃分規(guī)則劃分成若干相對(duì)獨(dú)立的子集,這些子集中,每個(gè)與其它子集的 計(jì)算無相關(guān)性的子集作為一個(gè)計(jì)算項(xiàng),通過這樣的動(dòng)態(tài)拆分使得數(shù)據(jù)更均勻,拆分的子集數(shù)量可控,從而可以更加合理的分配計(jì)算任務(wù);S2、在若干 運(yùn)算機(jī)中部署執(zhí)行環(huán)境,即針對(duì)不同的計(jì)算模型,部署計(jì)算腳本,創(chuàng)建必須 的目錄,設(shè)置必要的環(huán)境變量等;S3、檢査所有運(yùn)算機(jī)的負(fù)載情況,并根據(jù) 各運(yùn)算機(jī)的資源消耗情況動(dòng)態(tài)地分配相應(yīng)數(shù)量的計(jì)算項(xiàng)至各運(yùn)算機(jī),從而可 充分合理的利用全部運(yùn)算機(jī)的資源;S4、各運(yùn)算機(jī)分別計(jì)算其所分配到的計(jì) 算項(xiàng),即執(zhí)行并行計(jì)算的運(yùn)算工作;S5、計(jì)算執(zhí)行完成后將所述運(yùn)算機(jī)還原 到執(zhí)行前的狀態(tài),使整個(gè)計(jì)算對(duì)運(yùn)算機(jī)透明,因而,運(yùn)算機(jī)在計(jì)算完一個(gè)模 型后,如果需要用于計(jì)算其他模型,可重新搭建新的計(jì)算環(huán)境。
該方法還包括,步驟Sl中的劃分規(guī)則為根據(jù)用戶需求按待計(jì)算數(shù)據(jù)的散 列或者日期去分割;執(zhí)行步驟Sl后,所述待計(jì)算數(shù)據(jù)的某些計(jì)算無法拆分 時(shí),則對(duì)執(zhí)行步驟S4所得的所有數(shù)據(jù)項(xiàng)結(jié)果執(zhí)行匯總運(yùn)算。
作為該方法的進(jìn)一步改進(jìn),執(zhí)行步驟S4時(shí),當(dāng)一計(jì)算項(xiàng)在一運(yùn)算機(jī)上計(jì) 算失敗時(shí),該計(jì)算項(xiàng)自動(dòng)重新分配至另一運(yùn)算機(jī)進(jìn)行計(jì)算;而且,該方法還 可以包括修改保存運(yùn)算機(jī)相關(guān)信息的配置文件,從而可方便地增加或刪除運(yùn) 算機(jī);因此通過該方法可實(shí)現(xiàn)運(yùn)算單元的自容災(zāi),不需要額外加機(jī)器作容 災(zāi)。
該方法還可以包括將一臺(tái)服務(wù)器虛擬成多臺(tái)運(yùn)算機(jī),從而可以充分利用 現(xiàn)有多CPU服務(wù)器的資源,加大執(zhí)行效率。
可以理解,以上所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方法,可 應(yīng)用于本發(fā)明所提供的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)中,在此 不再贅述。
綜上,本發(fā)明所提供的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)及其 方法具有如下優(yōu)點(diǎn)1)最大程度加快計(jì)算速度;2)最大程度利用了計(jì)算機(jī) 的空閑資源;3)方便控制、監(jiān)控和查看數(shù)據(jù)計(jì)算;4)運(yùn)算單元自容災(zāi),如 果其中部分運(yùn)算機(jī)壞了,不影響計(jì)算結(jié)果,只是計(jì)算效率有所降低。
以上所述,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,可以根據(jù)本發(fā)明的技術(shù)方 案和技術(shù)構(gòu)思作出其他各種相應(yīng)的改變和變形,而所有這些改變和變形都應(yīng) 屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、一種基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng),其特征在于,其包括拆分單元,其負(fù)責(zé)分割待計(jì)算的數(shù)據(jù)項(xiàng)目,把待計(jì)算數(shù)據(jù)根據(jù)劃分規(guī)則劃分成若干相對(duì)獨(dú)立的子集,這些子集中,每個(gè)與其它子集的計(jì)算無相關(guān)性的子集作為一個(gè)計(jì)算項(xiàng);運(yùn)算單元,其負(fù)責(zé)對(duì)所述計(jì)算項(xiàng)進(jìn)行分布式并行計(jì)算,包括若干運(yùn)算機(jī),各運(yùn)算機(jī)分別計(jì)算其所分配到的計(jì)算項(xiàng);環(huán)境單元,其負(fù)責(zé)在并行計(jì)算前部署所述運(yùn)算機(jī)中的執(zhí)行環(huán)境,并且在計(jì)算執(zhí)行完成后將所述運(yùn)算機(jī)還原到執(zhí)行前的狀態(tài);負(fù)載均衡單元,其負(fù)責(zé)檢查所有運(yùn)算機(jī)的負(fù)載情況,并根據(jù)各運(yùn)算機(jī)的資源消耗情況動(dòng)態(tài)地分配相應(yīng)數(shù)量的計(jì)算項(xiàng)至各運(yùn)算機(jī)。
2、 如權(quán)利要求l所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng),其 特征在于,其還包括控制單元,該控制單元包括至少一控制機(jī),通過該控制 機(jī)可配置管理所述系統(tǒng)和執(zhí)行控制指令。
3、 如權(quán)利要求l所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng),其 特征在于,其還包括匯總單元,當(dāng)所述待計(jì)算數(shù)據(jù)的某些計(jì)算無法由所述拆 分單元拆分時(shí),運(yùn)算單元并行計(jì)算的所有數(shù)據(jù)項(xiàng)結(jié)果都傳到該匯總單元中, 傳輸完成后,由該匯總單元進(jìn)行匯總運(yùn)算。
4、 如權(quán)利要求1一3任一所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系 統(tǒng),其特征在于,所述劃分規(guī)則為根據(jù)用戶需求按待計(jì)算數(shù)據(jù)的散列或者日 期去分割。
5、 如權(quán)利要求1一3任一所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系 統(tǒng),其特征在于,在所述運(yùn)算單元中,當(dāng)一計(jì)算項(xiàng)在一運(yùn)算機(jī)上計(jì)算失敗 時(shí),該計(jì)算項(xiàng)自動(dòng)重新分配至另一運(yùn)算機(jī)進(jìn)行計(jì)算。
6、 如權(quán)利要求1一3任一所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系 統(tǒng),其特征在于,所述運(yùn)算單元可以修改保存所述運(yùn)算機(jī)相關(guān)信息的配置文 件,從而在該運(yùn)算單元中增加或刪除運(yùn)算機(jī)。
7、 如權(quán)利要求l 一3任一所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系 統(tǒng),其特征在于,部署所述運(yùn)算機(jī)中的執(zhí)行環(huán)境包括在所述運(yùn)算機(jī)中部署計(jì) 算腳本、創(chuàng)建必須的目錄和設(shè)置必要的環(huán)境變量。
8、 如權(quán)利要求l —3任一所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系 統(tǒng),其特征在于,所述運(yùn)算單元包括由一臺(tái)服務(wù)器虛擬而成的數(shù)個(gè)運(yùn)算機(jī)。
9、 一種基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方法,其特征在于,包括 步驟 51、 分割待計(jì)算的數(shù)據(jù)項(xiàng)目,把待計(jì)算數(shù)據(jù)根據(jù)劃分規(guī)則拆分成若干相 對(duì)獨(dú)立的子集,這些子集中,每個(gè)與其它子集的計(jì)算無相關(guān)性的子集作為一 個(gè)計(jì)算項(xiàng); 52、 在若干運(yùn)算機(jī)中部署執(zhí)行環(huán)境; 53、 檢查所有運(yùn)算機(jī)的負(fù)載情況,并根據(jù)各運(yùn)算機(jī)的資源消耗情況動(dòng)態(tài) 地分配相應(yīng)數(shù)量的計(jì)算項(xiàng)至各運(yùn)算機(jī); 54、 各運(yùn)算機(jī)分別計(jì)算其所分配到的計(jì)算項(xiàng);55、 計(jì)算執(zhí)行完成后將所述運(yùn)算機(jī)還原到執(zhí)行前的狀態(tài)。
10、 如權(quán)利要求9所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方法,其 特征在于,其還包括步驟執(zhí)行步驟Sl后,所述待計(jì)算數(shù)據(jù)的某些計(jì)算無法 拆分時(shí),則對(duì)執(zhí)行步驟S4所得的所有數(shù)據(jù)項(xiàng)結(jié)果執(zhí)行匯總運(yùn)算。
11、 如權(quán)利要求9或10所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方 法,其特征在于,步驟Sl中的劃分規(guī)則為根據(jù)用戶需求按待計(jì)算數(shù)據(jù)的散列 或者日期去分割。
12、 如權(quán)利要求9或10所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方 法,其特征在于,執(zhí)行步驟S4時(shí),當(dāng)一計(jì)算項(xiàng)在一運(yùn)算機(jī)上計(jì)算失敗時(shí),該 計(jì)算項(xiàng)自動(dòng)重新分配至另一運(yùn)算機(jī)進(jìn)行計(jì)算。
13、 如權(quán)利要求9或10所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方 法,其特征在于,其還包括步驟修改保存所述運(yùn)算機(jī)相關(guān)信息的配置文 件,從而增加或刪除運(yùn)算機(jī)。
14、 如權(quán)利要求9或10所述的基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的方 法,其特征在于,其還包括步驟將一臺(tái)服務(wù)器虛擬成多臺(tái)運(yùn)算機(jī)。
全文摘要
一種基于動(dòng)態(tài)數(shù)據(jù)拆分的分布式并行計(jì)算的系統(tǒng)及其方法,該系統(tǒng)包括拆分單元,其負(fù)責(zé)分割待計(jì)算的數(shù)據(jù)項(xiàng)目,把待計(jì)算數(shù)據(jù)根據(jù)劃分規(guī)則劃分成若干相對(duì)獨(dú)立計(jì)算項(xiàng);運(yùn)算單元,其負(fù)責(zé)對(duì)所述計(jì)算項(xiàng)進(jìn)行分布式并行計(jì)算,包括若干運(yùn)算機(jī);環(huán)境單元,其負(fù)責(zé)在并行計(jì)算前部署所述運(yùn)算機(jī)中的執(zhí)行環(huán)境,并且在計(jì)算執(zhí)行完成后將所述運(yùn)算機(jī)還原到執(zhí)行前的狀態(tài);負(fù)載均衡單元,其負(fù)責(zé)檢查所有運(yùn)算機(jī)的負(fù)載情況,并根據(jù)各運(yùn)算機(jī)的資源消耗情況動(dòng)態(tài)地分配相應(yīng)數(shù)量的計(jì)算項(xiàng)至各運(yùn)算機(jī)。本發(fā)明的優(yōu)點(diǎn)為1)最大程度加快計(jì)算速度;2)最大程度利用了計(jì)算機(jī)的空閑資源;3)方便控制、監(jiān)控和查看數(shù)據(jù)計(jì)算;4)運(yùn)算單元自容災(zāi)。
文檔編號(hào)G06F9/38GK101441557SQ200810217439
公開日2009年5月27日 申請(qǐng)日期2008年11月8日 優(yōu)先權(quán)日2008年11月8日
發(fā)明者伍倡輝, 凌國(guó)惠, 李郁韜, 晶 聶, 川 陳 申請(qǐng)人:騰訊科技(深圳)有限公司