本發(fā)明屬于分布式計(jì)算領(lǐng)域,更具體地,涉及一種基于存儲(chǔ)和加速優(yōu)化的hadoop異構(gòu)系統(tǒng)。
背景技術(shù):
數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)在業(yè)內(nèi)越來(lái)越受到關(guān)注,而針對(duì)大數(shù)據(jù)處理應(yīng)用的mapreduce(一種分布式編程模型)框架由于自身map(映射)和reduce(歸約)計(jì)算階段的特性,是個(gè)極易并行化的編程模型。由于mapreduce框架提供給開(kāi)發(fā)者的map和reduce接口的簡(jiǎn)化方式,諸如并行性、擴(kuò)展性和移植性等諸多問(wèn)題都得以解決,其開(kāi)源實(shí)現(xiàn)是hadoop(一種分布式系統(tǒng)基礎(chǔ)架構(gòu)),hadoop由于自身單點(diǎn)故障問(wèn)題,將功能解耦升級(jí)成yarn(另一種資源協(xié)調(diào)器)。
隨著cpu工藝尺寸的限制在核心數(shù)擴(kuò)展方面出現(xiàn)的問(wèn)題,與之形成對(duì)照的是數(shù)據(jù)量的不斷擴(kuò)張和對(duì)計(jì)算性能要求的不斷提高,定制化的加速器芯片盡管時(shí)鐘頻率不高,編程和架構(gòu)優(yōu)化具有一定難度,但由于其高度并行的性能優(yōu)勢(shì)、能耗低、能效高以及不變更硬件平臺(tái)的前提下可重構(gòu)的優(yōu)勢(shì)能夠支撐這類大數(shù)據(jù)應(yīng)用的運(yùn)行,在普通機(jī)器的cpu不進(jìn)行物理升級(jí),集群不進(jìn)行拓?fù)錉顟B(tài)更改的時(shí)候作為一種協(xié)處理器的存在方式提升集群的計(jì)算性能,所以逐漸在數(shù)據(jù)中心規(guī)模集群中流行起來(lái)。隨之而來(lái),mapreduce框架也逐漸在該研究領(lǐng)域流行起來(lái)。隨著數(shù)據(jù)量的暴漲以及k均值聚類算法在諸多應(yīng)用領(lǐng)域的流行,近些年在該趨勢(shì)下越來(lái)越多的研究都基于k均值聚類算法開(kāi)展。而gpu架構(gòu)設(shè)計(jì)是一種協(xié)處理器架構(gòu)并且編程api針對(duì)圖形圖像應(yīng)用,雖然沒(méi)有fpga的編程靈活性,但是相較于cpu,在內(nèi)存帶寬和計(jì)算能力方面還是高出一個(gè)數(shù)據(jù)量級(jí),并且以超過(guò)摩爾定律的性能增長(zhǎng)方式提升自身性能,受到基于cpu的mapreduce框架應(yīng)用的影響,基于gpu的mapreduce框架的開(kāi)發(fā)以及yarn平臺(tái)下對(duì)gpu資源的管理都得到啟發(fā)。
目前包括微軟和英特爾在內(nèi)的多家公司都在做大規(guī)模數(shù)據(jù)中心集成fpga加速器的實(shí)踐,但是大規(guī)模部署加速器會(huì)帶來(lái)諸多不利影響。首先,fpga的重構(gòu)編程以及優(yōu)化的代價(jià)會(huì)在大規(guī)模部署的時(shí)候被放大,由于fpga功能的定制都需要人為通過(guò)硬件語(yǔ)言進(jìn)行描述最后編譯上板,給開(kāi)發(fā)人員帶來(lái)很多額外的負(fù)擔(dān);其次,由于fpga本身昂貴的成本導(dǎo)致在權(quán)衡對(duì)大數(shù)據(jù)分析應(yīng)用的加速和fpga集群成本的時(shí)候需要做抉擇,需要在盡量減少加速器的使用量盡可能地提升應(yīng)用的計(jì)算性能;然后,由于現(xiàn)有基于mapreduce編程模型的設(shè)計(jì)方案中reducefpga(規(guī)約加速器)的資源利用率極低,大規(guī)模部署fpga可能會(huì)造成reducefpga本身資源的極大浪費(fèi)。除了以上提到的三點(diǎn),甚至還可能有其他不利的因素存在。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于存儲(chǔ)和加速優(yōu)化的hadoop異構(gòu)方法和系統(tǒng),其目的在于針對(duì)數(shù)據(jù)處理需求將存儲(chǔ)介質(zhì)分為三類:固態(tài)存儲(chǔ)介質(zhì)、普通存儲(chǔ)介質(zhì)和高密度存儲(chǔ)介質(zhì),為不同類型的數(shù)據(jù)找到最適合的存儲(chǔ)方式;同時(shí)將需要提升計(jì)算性能的加速應(yīng)用定向到有特定算法的fpga加速器或gpu加速器上完成計(jì)算,以提升應(yīng)用的處理性能,并且fpga和gpu加速器的算法功能以及布局可以進(jìn)行靜態(tài)切換,由此提高了整個(gè)集群的讀寫(xiě)性能、應(yīng)用任務(wù)的執(zhí)行性能和加速器件的資源利用率。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種基于存儲(chǔ)和加速優(yōu)化的hadoop異構(gòu)方法,該方法包括:
(1)將系統(tǒng)中冷數(shù)據(jù)和普通應(yīng)用的處理數(shù)據(jù)儲(chǔ)存在普通存儲(chǔ)介質(zhì)中,將系統(tǒng)中熱數(shù)據(jù)和需加速應(yīng)用的處理數(shù)據(jù)儲(chǔ)存在固態(tài)存儲(chǔ)介質(zhì)中,將系統(tǒng)中不斷擴(kuò)增的數(shù)據(jù)儲(chǔ)存在高密度存儲(chǔ)介質(zhì)中;
其中,系統(tǒng)集群的所有計(jì)算節(jié)點(diǎn)中都配置有普通存儲(chǔ)介質(zhì),系統(tǒng)集群中任意選取部分計(jì)算節(jié)點(diǎn)配置固態(tài)存儲(chǔ)介質(zhì)、高密度存儲(chǔ)介質(zhì)或固態(tài)存儲(chǔ)介質(zhì)和高密度存儲(chǔ)介質(zhì);
(2)在系統(tǒng)集群中任意選取部分計(jì)算節(jié)點(diǎn)配置fpga加速器、gpu加速器或fpga加速器和gpu加速器,根據(jù)加速任務(wù)的功能需求為加速任務(wù)匹配合適的加速器進(jìn)行加速計(jì)算。
進(jìn)一步地,所述步驟(1)還包括:
若固態(tài)存儲(chǔ)介質(zhì)或高密度存儲(chǔ)介質(zhì)容量不滿足分配需求時(shí),則將待分配數(shù)據(jù)存儲(chǔ)到普通存儲(chǔ)介質(zhì)中。
進(jìn)一步地,所述步驟(2)包括:
(21)獲取集群各計(jì)算節(jié)點(diǎn)中加速器的功能和數(shù)量并上報(bào);
(22)獲取集群各計(jì)算節(jié)點(diǎn)中加速器的負(fù)載情況并上報(bào);
(23)集合集群中所有加速器的功能、數(shù)量和負(fù)載情況,結(jié)合加速器的分布情況構(gòu)建加速器資源的網(wǎng)絡(luò)拓?fù)洌?/p>
(24)根據(jù)加速任務(wù)的功能需求和本地性需求查詢加速器資源的網(wǎng)絡(luò)拓?fù)?,匹配合適加速器進(jìn)行計(jì)算;同時(shí)將加速任務(wù)的數(shù)據(jù)塊副本轉(zhuǎn)存到加速器所在計(jì)算節(jié)點(diǎn)的固態(tài)存儲(chǔ)介質(zhì)中,沒(méi)有固態(tài)存儲(chǔ)介質(zhì)則轉(zhuǎn)存到普通存儲(chǔ)介質(zhì)中。
進(jìn)一步地,所述步驟(2)還包括:
加速器支持布局、算法或功能的靜態(tài)切換。
按照本發(fā)明的另一方面,提供了一種基于存儲(chǔ)和加速優(yōu)化的hadoop異構(gòu)系統(tǒng),該系統(tǒng)包括:
存儲(chǔ)異構(gòu)模塊,用于將系統(tǒng)中冷數(shù)據(jù)和普通應(yīng)用的處理數(shù)據(jù)儲(chǔ)存在普通存儲(chǔ)介質(zhì)中,將系統(tǒng)中熱數(shù)據(jù)和需加速應(yīng)用的處理數(shù)據(jù)儲(chǔ)存在固態(tài)存儲(chǔ)介質(zhì)中,將系統(tǒng)中不斷擴(kuò)增的數(shù)據(jù)儲(chǔ)存在高密度存儲(chǔ)介質(zhì)中;
其中,系統(tǒng)集群的所有計(jì)算節(jié)點(diǎn)中都配置有普通存儲(chǔ)介質(zhì),系統(tǒng)集群中任意選取部分計(jì)算節(jié)點(diǎn)配置固態(tài)存儲(chǔ)介質(zhì)、高密度存儲(chǔ)介質(zhì)或固態(tài)存儲(chǔ)介質(zhì)和高密度存儲(chǔ)介質(zhì);
加速異構(gòu)模塊,用于在系統(tǒng)集群中任意選取部分計(jì)算節(jié)點(diǎn)配置fpga加速器、gpu加速器或fpga加速器和gpu加速器,根據(jù)加速任務(wù)的功能需求為加速任務(wù)匹配合適的加速器進(jìn)行加速計(jì)算。
進(jìn)一步地,所述存儲(chǔ)異構(gòu)模塊還包括:
存儲(chǔ)退化單元,用于判斷若固態(tài)存儲(chǔ)介質(zhì)或高密度存儲(chǔ)介質(zhì)容量不滿足分配需求時(shí),則將待分配數(shù)據(jù)存儲(chǔ)到普通存儲(chǔ)介質(zhì)中。
進(jìn)一步地,所述加速異構(gòu)模塊包括:
節(jié)點(diǎn)加速資源獲取單元,用于獲取集群各計(jì)算節(jié)點(diǎn)中加速器的功能和數(shù)量并上報(bào);
節(jié)點(diǎn)加速負(fù)載獲取單元,用于獲取集群各計(jì)算節(jié)點(diǎn)中加速器的負(fù)載情況并上報(bào);
加速器網(wǎng)絡(luò)拓?fù)錁?gòu)建單元,用于集合集群中所有加速器的功能、數(shù)量和負(fù)載情況,結(jié)合加速器的節(jié)點(diǎn)分布情況構(gòu)建加速器資源的網(wǎng)絡(luò)拓?fù)洌?/p>
加速器分配單元,用于根據(jù)加速任務(wù)的功能需求和本地性需求查詢加速器資源的網(wǎng)絡(luò)拓?fù)?,匹配合適加速器進(jìn)行計(jì)算;同時(shí)將加速任務(wù)的數(shù)據(jù)塊副本轉(zhuǎn)存到加速器所在計(jì)算節(jié)點(diǎn)的固態(tài)存儲(chǔ)介質(zhì)中,沒(méi)有固態(tài)存儲(chǔ)介質(zhì)則轉(zhuǎn)存到普通存儲(chǔ)介質(zhì)中。
進(jìn)一步地,所述加速異構(gòu)模塊還包括:
加速器切換單元,用于靜態(tài)切換集群中加速器布局、算法或功能。
總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)特征及有益效果:
(1)在大數(shù)據(jù)下,集群針對(duì)不同類型數(shù)據(jù)的提供不同類型存儲(chǔ)介質(zhì)進(jìn)行差異化存儲(chǔ),提高了數(shù)據(jù)讀寫(xiě)性能,進(jìn)而提升了應(yīng)用執(zhí)行性能;
(2)在大數(shù)據(jù)下,集群針對(duì)不同類型的加速任務(wù)提供不同功能的加速器,進(jìn)而提升了應(yīng)用執(zhí)行速度;
(3)本地加速器管理模塊插件化,提出的異構(gòu)加速器向后兼容,可擴(kuò)展集成更多的加速器件,降低了分布式系統(tǒng)集成加速器的難度。
附圖說(shuō)明
圖1是本發(fā)明系統(tǒng)的系統(tǒng)構(gòu)架圖;
圖2是本發(fā)明技術(shù)方案中存儲(chǔ)異構(gòu)定義圖;
圖3是本發(fā)明異構(gòu)存儲(chǔ)執(zhí)行流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
首先,介紹本發(fā)明系統(tǒng)具體應(yīng)用場(chǎng)景。實(shí)際場(chǎng)景中本系統(tǒng)可能由幾十臺(tái)甚至上千臺(tái)計(jì)算機(jī)節(jié)點(diǎn)構(gòu)成集群,計(jì)算節(jié)點(diǎn)可以同屬一個(gè)機(jī)架或者同屬不同機(jī)架,甚至在不同的數(shù)據(jù)中心。按照hadoop2.0部署和配置好后,在每臺(tái)計(jì)算節(jié)點(diǎn)安裝高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng),包括fpga、gpu和ssd,需要注意的是這樣安裝不代表將來(lái)每臺(tái)節(jié)點(diǎn)都會(huì)配置相應(yīng)的硬件設(shè)施,而是一項(xiàng)基礎(chǔ)準(zhǔn)備工作。選擇任意數(shù)量節(jié)點(diǎn)進(jìn)行硬件設(shè)備安裝,硬件設(shè)備暫時(shí)采取的是全定制化功能的方式為上層軟件提供服務(wù),每臺(tái)服務(wù)器通過(guò)以太網(wǎng)互聯(lián)。用戶提交與fpga加速器、gpu加速器功能對(duì)應(yīng)的算法應(yīng)用的作業(yè)時(shí),需要向集群提交對(duì)應(yīng)的執(zhí)行數(shù)據(jù),若指定數(shù)據(jù)的存儲(chǔ)位置則分布式文件系統(tǒng)會(huì)將數(shù)據(jù)存儲(chǔ)到具體計(jì)算節(jié)點(diǎn)的對(duì)應(yīng)存儲(chǔ)介質(zhì)上。
該集群是向前向后兼容的,向前兼容即由mapreduce框架編寫(xiě)的普通程序依舊可以按照原來(lái)的執(zhí)行方式繼續(xù)與加速應(yīng)用同時(shí)在集群中執(zhí)行,向后兼容即在不變更hadoop2.0軟件的前提下,根據(jù)實(shí)際應(yīng)用算法需要和硬件程序定制方式重新燒制fpga和gpu加速器并便可以達(dá)到更新集群內(nèi)的硬件配置布局的效果。另外,本發(fā)明系統(tǒng)還支持用戶上傳持續(xù)擴(kuò)增的數(shù)據(jù)以及對(duì)冷熱數(shù)據(jù)的區(qū)別處理。
如圖1所示,本發(fā)明系統(tǒng)包括存儲(chǔ)異構(gòu)模塊和加速異構(gòu)模塊:
存儲(chǔ)異構(gòu)模塊,用于在系統(tǒng)集群的所有計(jì)算節(jié)點(diǎn)中都配置普通存儲(chǔ)介質(zhì),固態(tài)存儲(chǔ)介質(zhì)和高密度存儲(chǔ)介質(zhì)配置在集群中部分計(jì)算節(jié)點(diǎn)中;將系統(tǒng)中冷數(shù)據(jù)和普通應(yīng)用的處理數(shù)據(jù)儲(chǔ)存在普通存儲(chǔ)介質(zhì)中,將系統(tǒng)中熱數(shù)據(jù)和需加速應(yīng)用的處理數(shù)據(jù)儲(chǔ)存在固態(tài)存儲(chǔ)介質(zhì)中,將系統(tǒng)中不斷擴(kuò)增的數(shù)據(jù)儲(chǔ)存在高密度存儲(chǔ)介質(zhì)中;
加速異構(gòu)模塊,用于在系統(tǒng)集群中部分計(jì)算節(jié)點(diǎn)上配置包含特定算法功能的加速器,針對(duì)不同算法應(yīng)用利用包含相應(yīng)算法功能的加速器完成加速任務(wù)。
存儲(chǔ)異構(gòu)主要用來(lái)實(shí)現(xiàn)三個(gè)功能:
(1)將持續(xù)擴(kuò)增的數(shù)據(jù)存儲(chǔ)在配置了高密度存儲(chǔ)介質(zhì)的計(jì)算節(jié)點(diǎn)上;
(2)將面向加速應(yīng)用的數(shù)據(jù)存儲(chǔ)在配置了高性能存儲(chǔ)介質(zhì)ssd的計(jì)算節(jié)點(diǎn)上;
(3)對(duì)于冷數(shù)據(jù)默認(rèn)存儲(chǔ)在普通存儲(chǔ)介質(zhì)中,對(duì)于熱數(shù)據(jù)存儲(chǔ)在配置了高性能存儲(chǔ)介質(zhì)ssd的計(jì)算節(jié)點(diǎn)上。
針對(duì)這三個(gè)功能,首先在文件系統(tǒng)的計(jì)算節(jié)點(diǎn)中定義存儲(chǔ)介質(zhì)類型,存儲(chǔ)介質(zhì)類型包括普通存儲(chǔ)類型、ssd類型和高密度存儲(chǔ)類型,如圖2所示,這三種存儲(chǔ)介質(zhì)的讀寫(xiě)性能由高到低依次為ssd>disk>archive;
計(jì)算節(jié)點(diǎn)具備的存儲(chǔ)能力由配置文件的屬性值預(yù)先指定,并且首部使用存儲(chǔ)類型標(biāo)簽予以聲明區(qū)分,由計(jì)算節(jié)點(diǎn)對(duì)本地存儲(chǔ)設(shè)備類型進(jìn)行細(xì)粒度的收集提取,創(chuàng)建列表并通過(guò)心跳實(shí)時(shí)匯報(bào)給名字節(jié)點(diǎn);名字節(jié)點(diǎn)根據(jù)計(jì)算節(jié)點(diǎn)匯報(bào)的列表信息在數(shù)據(jù)上傳過(guò)程中根據(jù)數(shù)據(jù)存儲(chǔ)策略集合進(jìn)行數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的選擇,其中存儲(chǔ)策略集合中根據(jù)定義的存儲(chǔ)介質(zhì)類型定義了熱數(shù)據(jù)策略、冷數(shù)據(jù)策略、ssd策略和高密度策略;數(shù)據(jù)塊副本存儲(chǔ)節(jié)點(diǎn)分配過(guò)程具體如圖3所示,以下分三種情況對(duì)待復(fù)制文件存儲(chǔ)節(jié)點(diǎn)策略進(jìn)行說(shuō)明:
功能(1):計(jì)算節(jié)點(diǎn)向名字節(jié)點(diǎn)提交分配對(duì)于將會(huì)持續(xù)擴(kuò)增的數(shù)據(jù)塊存儲(chǔ)節(jié)點(diǎn)的請(qǐng)求,名字節(jié)點(diǎn)會(huì)在數(shù)據(jù)塊管理器分配節(jié)點(diǎn)過(guò)程中根據(jù)請(qǐng)求到存儲(chǔ)策略集合中調(diào)用高密度策略作為該數(shù)據(jù)塊副本存儲(chǔ)節(jié)點(diǎn)分配策略;
值得一提的是本發(fā)明系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)分配策略中用到了一種退化思想,即當(dāng)前分配的節(jié)點(diǎn)不完全滿足請(qǐng)求的時(shí)候會(huì)采用降級(jí)的方式去分配其他的存儲(chǔ)節(jié)點(diǎn),比如數(shù)據(jù)塊默認(rèn)的副本數(shù)為3,但是滿足分配條件的返回結(jié)果中只有第一個(gè)副本分配到了帶有高密度存儲(chǔ)介質(zhì)的存儲(chǔ)節(jié)點(diǎn),那么其他兩個(gè)存儲(chǔ)節(jié)點(diǎn)則自動(dòng)退化為普通盤(pán)的存儲(chǔ)節(jié)點(diǎn),退化的規(guī)則則是根據(jù)前文提到的存儲(chǔ)介質(zhì)的性能來(lái)訂制;即固態(tài)盤(pán)存儲(chǔ)退化為普通盤(pán)存儲(chǔ),高密度存儲(chǔ)退化為普通盤(pán)存儲(chǔ)。
功能(2):計(jì)算節(jié)點(diǎn)向名字節(jié)點(diǎn)提交分配加速應(yīng)用的數(shù)據(jù)塊存儲(chǔ)節(jié)點(diǎn)的請(qǐng)求,名字節(jié)點(diǎn)會(huì)在數(shù)據(jù)塊管理器分配節(jié)點(diǎn)過(guò)程中根據(jù)請(qǐng)求到存儲(chǔ)策略集合中調(diào)用ssd策略作為該數(shù)據(jù)塊副本存儲(chǔ)節(jié)點(diǎn)分配策略。
功能(3):集群分布式文件系統(tǒng)在現(xiàn)有基礎(chǔ)之上,向用戶提供了實(shí)現(xiàn)了熱數(shù)據(jù)重定址功能的命令,用戶可以根據(jù)特定的冷熱數(shù)據(jù)來(lái)劃分集群內(nèi)的數(shù)據(jù),比如使用linux系統(tǒng)自帶命令blktrace,然后通過(guò)使用該命令向名字節(jié)點(diǎn)提交熱數(shù)據(jù)重定址的請(qǐng)求,名字節(jié)點(diǎn)中的數(shù)據(jù)塊管理器分配節(jié)點(diǎn)的過(guò)程會(huì)根據(jù)請(qǐng)求到存儲(chǔ)策略集合中調(diào)用熱數(shù)據(jù)策略作為新數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)分配的依據(jù),然后形成計(jì)算節(jié)點(diǎn)之間的數(shù)據(jù)流重定向,將熱數(shù)據(jù)重新安排到配置了ssd的計(jì)算節(jié)點(diǎn)上,同時(shí)更新名字節(jié)點(diǎn)內(nèi)部的文件與數(shù)據(jù)塊副本的對(duì)應(yīng)關(guān)系信息。
加速異構(gòu)模塊主要用來(lái)實(shí)現(xiàn)兩個(gè)功能:
(1)利用高性能加速器去完成加速應(yīng)用的計(jì)算;
(2)針對(duì)不同算法定制不同功能的加速器在本發(fā)明系統(tǒng)內(nèi)的無(wú)痕切換。
針對(duì)分布式文件系統(tǒng),加速器在linux文件系統(tǒng)中以設(shè)備文件的方式存在,計(jì)算節(jié)點(diǎn)在啟動(dòng)的時(shí)候會(huì)通過(guò)一定方式識(shí)別本地加速器掛載情況并以四元組的方式組織在注冊(cè)時(shí)向上匯報(bào),四元組方式如下:<映射fpga加速器,規(guī)約fpga加速器,映射gpu加速器,規(guī)約gpu加速器>,如:若本地節(jié)點(diǎn)主板只掛載映射fpga加速器,經(jīng)過(guò)計(jì)算節(jié)點(diǎn)識(shí)別后設(shè)置該四元組表達(dá)為:<1,0,0,0>;名字節(jié)點(diǎn)分配數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的依據(jù)是根據(jù)計(jì)算節(jié)點(diǎn)注冊(cè)時(shí)根據(jù)注冊(cè)信息創(chuàng)建的集群計(jì)算節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)鋱D并利用數(shù)據(jù)結(jié)構(gòu)保存計(jì)算節(jié)點(diǎn)與加速器掛載的對(duì)應(yīng)信息,本發(fā)明系統(tǒng)中,名字節(jié)點(diǎn)會(huì)根據(jù)四元組的第一位和第三位信息創(chuàng)建三張?jiān)撏負(fù)鋱D來(lái)表示加速器形成的邏輯集群情況,即普通網(wǎng)絡(luò)拓?fù)洹pga加速節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)?、gpu加速節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)?,?duì)于普通類型的mapreduce框架應(yīng)用,則分配依據(jù)是普通網(wǎng)絡(luò)拓?fù)?,?duì)于利用fpga加速的mapreduce應(yīng)用,則分配依據(jù)是fpga加速節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)洌瑢?duì)于利用gpu加速的mapreduce應(yīng)用,則分配依據(jù)是gpu加速節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)?;分布式文件系統(tǒng)的命令在原來(lái)的基礎(chǔ)上提供了參數(shù)給用戶用以向系統(tǒng)說(shuō)明當(dāng)前提交的數(shù)據(jù)對(duì)應(yīng)的加速程序類型,如:fpga類型或者gpu類型;當(dāng)提交的數(shù)據(jù)針對(duì)fpga類型,名字節(jié)點(diǎn)分配存儲(chǔ)節(jié)點(diǎn)時(shí)會(huì)調(diào)用fpga加速節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)渥鳛橛?jì)算節(jié)點(diǎn)分配依據(jù),當(dāng)提交的數(shù)據(jù)針對(duì)gpu類型,則會(huì)調(diào)用gpu加速節(jié)點(diǎn)網(wǎng)絡(luò)拓?fù)渥鳛橛?jì)算節(jié)點(diǎn)分配依據(jù)。
gpu加速任務(wù)調(diào)用加速器過(guò)程:高級(jí)編程語(yǔ)言直接調(diào)用gpu函數(shù)即可將數(shù)據(jù)裝載并調(diào)用加速器進(jìn)行計(jì)算;fpga加速器任務(wù)調(diào)用加速器過(guò)程:加速器加掛到計(jì)算節(jié)點(diǎn)后由計(jì)算節(jié)點(diǎn)對(duì)其進(jìn)行虛擬化,并與物理地址映射。基于fpga加速的任務(wù)啟動(dòng)后,計(jì)算節(jié)點(diǎn)為任務(wù)傳入設(shè)備文件名,利用linux系統(tǒng)調(diào)用進(jìn)行fpga加速器計(jì)算。
確定加速器功能后尋找加速任務(wù)數(shù)據(jù)塊副本所在計(jì)算節(jié)點(diǎn)和加速器所在計(jì)算節(jié)點(diǎn)的拓?fù)渚嚯x,選擇拓?fù)渚嚯x最近的計(jì)算節(jié)點(diǎn)轉(zhuǎn)存加速任務(wù)數(shù)據(jù)塊副本。
值得說(shuō)明的是,本發(fā)明系統(tǒng)是面向加速器通用的,當(dāng)用戶想切換加速器的算法的時(shí)候只需要將原來(lái)集群中配置了加速器的計(jì)算節(jié)點(diǎn)主板上的加速器取下,更新加速器算法后重新安裝回加速器到集群中;想切換加速器功能時(shí)可以將fpga加速器更換為gpu加速器或?qū)pu加速器更換為fpga加速器;加速器也可以任意更換計(jì)算節(jié)點(diǎn)。另外,本發(fā)明系統(tǒng)不影響原生mapreduce算法應(yīng)用的操作執(zhí)行。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。