陳卓航,陳雅琴,郭志勇
(西南民族大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,成都 610225)
隨著計(jì)算機(jī)信息技術(shù)的發(fā)展,對(duì)數(shù)據(jù)處理的需求不斷增大,使得高性能計(jì)算類型不再是單一的計(jì)算密集型計(jì)算, 數(shù)據(jù)密集型計(jì)算已成為高性能計(jì)算中不可或缺的一部分。MPI[1-2]適用于計(jì)算密集型計(jì)算,在如今的高性能計(jì)算中仍占主導(dǎo)地位,但是不太適合現(xiàn)在具有數(shù)據(jù)密集型特征的計(jì)算。
印度國(guó)立大學(xué)提出的將HDFS和Matlab分布式計(jì)算節(jié)點(diǎn)進(jìn)行整合[3],集群中的每一個(gè)節(jié)點(diǎn)既作為HDFS的存儲(chǔ)節(jié)點(diǎn)也作為Matlab分布式計(jì)算的計(jì)算結(jié)點(diǎn)。這種架構(gòu)資源利用率更高,測(cè)試結(jié)果表明存儲(chǔ)效率比普通文件系統(tǒng)高。
文中詳細(xì)闡述基于HDFS的MPIFS分布式文件系統(tǒng)的設(shè)計(jì)思路以及實(shí)現(xiàn),將MPI和HDFS結(jié)合提出一種分布式文件系統(tǒng)架構(gòu)。該文件系統(tǒng)整合Hadoop和MPI各自的優(yōu)點(diǎn),同時(shí)支持?jǐn)?shù)據(jù)密集型與計(jì)算密集型計(jì)算。
MPI是1994年發(fā)布的一個(gè)基于Pipe管道通訊的通訊協(xié)議,適用于計(jì)算密集型并行計(jì)算,成為并行計(jì)算的主要實(shí)現(xiàn)方法。它是一個(gè)跨語言的通訊協(xié)議,用于編寫并行計(jì)算程序,常用于編寫并行代碼指令,同時(shí)支持點(diǎn)對(duì)點(diǎn)、面對(duì)面、廣播等多種協(xié)議連接形式[4]。
MPI計(jì)算特點(diǎn)是數(shù)據(jù)向計(jì)算遷移[5],需要計(jì)算的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)接?jì)算節(jié)點(diǎn),當(dāng)MPI遇到數(shù)據(jù)密集型計(jì)算就會(huì)出現(xiàn)大文件傳輸,給MPI集群網(wǎng)絡(luò)造成較大壓力。這樣會(huì)導(dǎo)致整個(gè)MPI工作時(shí)長(zhǎng)增加,有效工作(計(jì)算)時(shí)間占比下降。MPI大多用于計(jì)算密集型科學(xué)計(jì)算,涉及較多的是計(jì)算和消息傳遞,幾乎不涉及本地文件的訪問和處理。
MPI不提供數(shù)據(jù)訪問方法,MPI程序的數(shù)據(jù)訪問部分代碼只能使用編程語言提供的方法。在分布式環(huán)境下程序?qū)崿F(xiàn)文件訪問,各個(gè)節(jié)點(diǎn)需要打開各自的本地文件,程序的編寫非常繁瑣,編寫這部分代碼沒有任何意義反而增加工作量。為此,提出一個(gè)專用于文件訪問的中間件層,使用者只需調(diào)用就能實(shí)現(xiàn)數(shù)據(jù)訪問,可以降低程序編寫難度,提高工作效率,使MPI勝任數(shù)據(jù)密集型計(jì)算。
MPI并不會(huì)將可執(zhí)行文件分發(fā)到集群的各節(jié)點(diǎn),MPI程序只會(huì)讓各個(gè)節(jié)點(diǎn)去啟動(dòng)自己路徑下的可執(zhí)行程序。MPI程序能夠在集群中正確運(yùn)行需要前期準(zhǔn)備,建立集群共享文件夾,把可執(zhí)行文件放到共享文件夾,每個(gè)節(jié)點(diǎn)都可以訪問并執(zhí)行,也可將可執(zhí)行文件分別復(fù)制到各節(jié)點(diǎn)本地。
集群共享文件夾的主要實(shí)現(xiàn)方式是NFS(Network File System)[6]網(wǎng)絡(luò)共享文件夾[7],在數(shù)據(jù)特別龐大的情況下會(huì)給系統(tǒng)造成存儲(chǔ)壓力以及讀取文件時(shí)產(chǎn)生網(wǎng)絡(luò)傳輸壓力兩類問題,這些情況都會(huì)影響系統(tǒng)的性能以及工作效率,而且MPI沒有原生的文件系統(tǒng),部署MPI集群不僅需要在每個(gè)節(jié)點(diǎn)安裝MPI編譯環(huán)境,還需要為集群創(chuàng)建共享文件夾。如果集群中沒有共享文件夾,每個(gè)節(jié)點(diǎn)只能訪問自己本地的文件。這種情況下要使MPI正確運(yùn)行,計(jì)算時(shí)需要將不同數(shù)據(jù)分別發(fā)送到各節(jié)點(diǎn)本地,這也會(huì)增加時(shí)間和工作復(fù)雜度。而DFS(Distributed File System)[8]分布式文件系統(tǒng)能夠符合MPI并行計(jì)算的文件需求。
HDFS[9-11]是Hadoop的分布式文件系統(tǒng),它是一個(gè)廣泛使用的大數(shù)據(jù)系統(tǒng),由Apache軟件基金會(huì)在2006年開發(fā)完成第一個(gè)版本。系統(tǒng)實(shí)現(xiàn)了文件的分布式存儲(chǔ),支持并行批處理計(jì)算與數(shù)據(jù)密集型分布式計(jì)算。
HDFS提供文件存儲(chǔ)、讀取、分塊、尋址功能。HDFS可以將大文件切塊,將文件切割成小文件塊并分布式存儲(chǔ)在集群的各節(jié)點(diǎn)上。文件塊非常適合數(shù)據(jù)的備份和磁盤資源的利用,還可以實(shí)現(xiàn)相同文件不同文件塊之間的并行計(jì)算。以往對(duì)非分布式單獨(dú)大文件只能單進(jìn)程對(duì)其操作,文件切塊后分布式存儲(chǔ)對(duì)文件的操作實(shí)現(xiàn)并行化,這樣的模式大大縮短了文件讀寫的時(shí)間。
HDFS將大文件分塊并分布式存儲(chǔ)在集群各節(jié)點(diǎn),該特性可以與MPI分布式執(zhí)行的特性有機(jī)結(jié)合。
基于以上對(duì)MPI和HDFS的研究與分析,提出一種新的文件系統(tǒng)架構(gòu)MPIFS,使用中間件層將兩個(gè)成熟的系統(tǒng)結(jié)合起來。MPIFS基于HDFS,利用HDFS成熟的分布式文件系統(tǒng)作為MPI的底層文件系統(tǒng)。利用兩者分布式的共性,使被發(fā)送到節(jié)點(diǎn)上的MPI進(jìn)程根據(jù)HDFS提供的文件存儲(chǔ)信息去尋址。各個(gè)節(jié)點(diǎn)上的進(jìn)程找到對(duì)應(yīng)存儲(chǔ)在節(jié)點(diǎn)本地的數(shù)據(jù),所有節(jié)點(diǎn)進(jìn)程之間并行處理自己本地的數(shù)據(jù),處理完成后通過MPI通訊函數(shù)將結(jié)果發(fā)送到主節(jié)點(diǎn)匯總。該架構(gòu)將MPI以往的數(shù)據(jù)向計(jì)算遷移的計(jì)算特征轉(zhuǎn)變?yōu)橛?jì)算向數(shù)據(jù)遷移,MPI可依賴MPIFS執(zhí)行數(shù)據(jù)密集型計(jì)算,解決傳統(tǒng)MPI沒有文件系統(tǒng)、讀取數(shù)據(jù)時(shí)需要網(wǎng)絡(luò)傳輸、無法在大數(shù)據(jù)環(huán)境下有效工作的問題。計(jì)算和存儲(chǔ)節(jié)點(diǎn)合二為一,其主節(jié)點(diǎn)、從節(jié)點(diǎn)在同一臺(tái)物理機(jī)上,實(shí)現(xiàn)本地計(jì)算的同時(shí)也節(jié)省了搭建該系統(tǒng)所需的硬件資源。
系統(tǒng)分為五層,如圖1所示。系統(tǒng)各層級(jí)之間使用統(tǒng)一標(biāo)準(zhǔn)的接口,隱藏各層的實(shí)現(xiàn)細(xì)節(jié),降低各層之間的耦合性,使系統(tǒng)開發(fā)和維護(hù)簡(jiǎn)單方便,用戶使用起來更簡(jiǎn)潔高效。
用戶層:系統(tǒng)使用者的所有操作都在這一層級(jí),用戶可以在這一層完成自己的高性能計(jì)算任務(wù)。用戶看到的文件也和普通單節(jié)點(diǎn)文件系統(tǒng)一樣,是以根目錄為起點(diǎn)的文件系統(tǒng)。在該系統(tǒng)中通過中間件層對(duì)文件進(jìn)行操作,與在單節(jié)點(diǎn)文件系統(tǒng)的操作一樣,使用者并不需要去了解文件分布式存儲(chǔ)之后的具體分塊和存儲(chǔ)情況。使用上和常規(guī)MPI高性能并行計(jì)算方法相同,都是通過集群主節(jié)點(diǎn)控制整個(gè)集群。集群中的從節(jié)點(diǎn)通過HDFS層從主節(jié)點(diǎn)上獲取到本地文件塊的信息,對(duì)文件塊進(jìn)行用戶自定義計(jì)算后,從節(jié)點(diǎn)將結(jié)果通過MPI通訊機(jī)制發(fā)送給主節(jié)點(diǎn)。主節(jié)點(diǎn)將接收到從節(jié)點(diǎn)發(fā)送的信息并進(jìn)行匯總和統(tǒng)計(jì)分析工作,完成Map-Reduce[12-15]的歸約Reduce部分。
中間件層:中間件層對(duì)用戶層隱藏HDFS層的分布式文件存儲(chǔ)細(xì)節(jié),并將虛擬文件系統(tǒng)目錄映射到上層,用戶能感知到的是一個(gè)以根目錄為起點(diǎn)的普通文件系統(tǒng)。用戶使用中間件層提供的文件操作方法對(duì)文件進(jìn)行進(jìn)一步地自定義操作,在文件的讀寫操作上,只需要在方法中填入虛擬文件路徑,中間件層向HDFS發(fā)出請(qǐng)求獲取虛擬文件路徑下對(duì)應(yīng)的真實(shí)文件分塊文件名及所在節(jié)點(diǎn)。主節(jié)點(diǎn)根據(jù)文件塊的分布情況分發(fā)任務(wù),使得每個(gè)節(jié)點(diǎn)都只對(duì)本地文件進(jìn)行操作,實(shí)現(xiàn)本地計(jì)算,完成MapReduce的任務(wù)分發(fā)Map部分。存儲(chǔ)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)合并在同一臺(tái)物理機(jī)上,不僅能實(shí)現(xiàn)本地計(jì)算還能節(jié)約硬件資源,同時(shí)降低因?yàn)槲募绻?jié)點(diǎn)讀取造成的網(wǎng)絡(luò)傳輸壓力。中間件層向用戶層返回的只是文件描述符,用戶層通過文件描述符能做到關(guān)于文件的所有操作,更具有靈活性,不限制于某一種或某一類工作。實(shí)現(xiàn)方式上根據(jù)HDFS安裝時(shí)配置的文件存儲(chǔ)路徑和中間件層獲取的文件名快速定位文件,使用底層操作系統(tǒng)文件讀寫函數(shù)打開文件進(jìn)行讀取。
HDFS層:HDFS存儲(chǔ)主要負(fù)責(zé)文件的分塊存儲(chǔ),將分塊后得到的文件塊分布式存儲(chǔ)在集群的節(jié)點(diǎn)上。利用成熟的分布式文件系統(tǒng)HDFS作為文件系統(tǒng),HDFS的分布式存儲(chǔ)特征又能和MPI的分布式計(jì)算特征相結(jié)合。HDFS存儲(chǔ)層對(duì)上層隱藏了文件分塊和文件存儲(chǔ)的實(shí)現(xiàn)細(xì)節(jié),只提供命令接口給中間件層。文件切分、切分大小標(biāo)準(zhǔn)、切分的文件塊存儲(chǔ)在哪個(gè)節(jié)點(diǎn)上、文件塊實(shí)際路徑的記錄都由HDFS層負(fù)責(zé)并對(duì)上層隱藏。這些特征使得對(duì)底層文件系統(tǒng)不用太多的關(guān)注,系統(tǒng)構(gòu)建更加簡(jiǎn)單穩(wěn)定。HDFS也采用分布式系統(tǒng)經(jīng)典的主從節(jié)點(diǎn)架構(gòu),主節(jié)點(diǎn)負(fù)責(zé)整個(gè)集群信息的保存維護(hù)、文件的分塊及存儲(chǔ)和存儲(chǔ)文件作業(yè)的調(diào)度。
操作系統(tǒng)層:集群中主節(jié)點(diǎn)存儲(chǔ)分塊以及控制信息,從節(jié)點(diǎn)上文件分割之后的數(shù)據(jù)塊存儲(chǔ)都依托于操作系統(tǒng)。所有文件塊都通過操作系統(tǒng)的文件系統(tǒng)進(jìn)行存儲(chǔ),操作系統(tǒng)提供最基礎(chǔ)的文件查找、尋址、打開、讀寫等功能。所有的上層功能都通過操作系統(tǒng)提供的基礎(chǔ)功能優(yōu)化組合而來。HDFS系統(tǒng)架設(shè)在操作系統(tǒng)上,需要的環(huán)境如Java由操作系統(tǒng)提供。HDFS并沒有直接架設(shè)在物理層,操作系統(tǒng)作為中間層可以實(shí)現(xiàn)硬件無關(guān)性。鑒于Linux對(duì)MPI和HDFS良好的支持性,實(shí)驗(yàn)使用的操作系統(tǒng)選用Linux較為成熟的發(fā)行版本Ubuntu。
物理層:集群的硬件設(shè)備,真實(shí)物理機(jī)。將MPIFS的主節(jié)點(diǎn)同時(shí)作為MPI的主節(jié)點(diǎn)與HDFS的master節(jié)點(diǎn),MPIFS集群的從節(jié)點(diǎn)作為MPI的從節(jié)點(diǎn)與HDFS的slave節(jié)點(diǎn)。MPI與HDFS管理節(jié)點(diǎn)部署在一起,MPI計(jì)算節(jié)點(diǎn)與HDFS存儲(chǔ)節(jié)點(diǎn)部署在一起,計(jì)算結(jié)點(diǎn)與存儲(chǔ)節(jié)點(diǎn)合二為一,既節(jié)省硬件資源也在硬件架構(gòu)上支持本地計(jì)算,使計(jì)算變得更高效。
以詞頻統(tǒng)計(jì)工作為例,系統(tǒng)的工作流程如圖2所示。詞頻統(tǒng)計(jì)程序啟動(dòng),MPIFS主節(jié)點(diǎn)執(zhí)行Map任務(wù)分配工作給從節(jié)點(diǎn)。主節(jié)點(diǎn)等待結(jié)果返回統(tǒng)計(jì),執(zhí)行Reduce任務(wù)。MPIFS從節(jié)點(diǎn)以文件系統(tǒng)中存儲(chǔ)的文件路徑為參數(shù)調(diào)用MYMPI_Openfile函數(shù),函數(shù)調(diào)用HDFS獲得整個(gè)文件所有分塊的存儲(chǔ)情況。獲取虛擬文件對(duì)應(yīng)的真實(shí)存儲(chǔ)在集群中屬于虛擬文件的文件塊信息,信息包括一共有多少個(gè)文件塊、文件塊的名字以及存儲(chǔ)節(jié)點(diǎn)的IP地址。每個(gè)節(jié)點(diǎn)的MPI進(jìn)程都會(huì)得到一張完整的文件塊對(duì)應(yīng)的IP地址表,通過獲取自己的IP地址與表中的數(shù)據(jù)比對(duì),得到自己本地磁盤存儲(chǔ)的文件塊名。HDFS分布式文件系統(tǒng)在每一個(gè)節(jié)點(diǎn)上存儲(chǔ)文件塊的位置都是相對(duì)固定的,存儲(chǔ)文件位置可在部署HDFS之前自定義。從節(jié)點(diǎn)通過操作系統(tǒng)層查找到文件塊的絕對(duì)路徑,調(diào)用操作系統(tǒng)層提供的打開文件函數(shù),打開文件獲取文件描述符,MYMPI_Openfile函數(shù)返回文件描述符。詞頻統(tǒng)計(jì)程序得到文件描述符對(duì)文件進(jìn)行詞頻統(tǒng)計(jì)工作,統(tǒng)計(jì)工作完成后關(guān)閉文件向主節(jié)點(diǎn)發(fā)送統(tǒng)計(jì)結(jié)果,從節(jié)點(diǎn)程序結(jié)束,完成本地計(jì)算。主節(jié)點(diǎn)等待所有的從節(jié)點(diǎn)完成,通過MPI消息傳遞機(jī)制對(duì)各節(jié)點(diǎn)的計(jì)算結(jié)果進(jìn)行匯總并統(tǒng)計(jì)輸出,得到整個(gè)集群的計(jì)算結(jié)果。
圖2 工作流程
文中設(shè)計(jì)了兩個(gè)類型的實(shí)驗(yàn):
1)使用固定數(shù)量的節(jié)點(diǎn),將數(shù)據(jù)量遞增的文件都分布式存儲(chǔ)在系統(tǒng)中,每個(gè)節(jié)點(diǎn)上存儲(chǔ)的數(shù)據(jù)量也因而遞增。用詞頻統(tǒng)計(jì)的方法進(jìn)行測(cè)試,得出不同數(shù)據(jù)量的處理時(shí)間。根據(jù)集群中文件數(shù)據(jù)量增加時(shí)處理時(shí)間的變化,得出集群中各節(jié)點(diǎn)的并行關(guān)系。每一組實(shí)驗(yàn)使用固定數(shù)量的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)量依次倍增的詞頻統(tǒng)計(jì)實(shí)驗(yàn),集群中單個(gè)節(jié)點(diǎn)上存儲(chǔ)的數(shù)據(jù)量以及依次遞增情況相同。各組實(shí)驗(yàn)之間集群的節(jié)點(diǎn)數(shù)量不同,依此分析集群節(jié)點(diǎn)數(shù)量不同時(shí)集群的并行關(guān)系。
2)使用不同數(shù)量的節(jié)點(diǎn),把相同數(shù)據(jù)量的文件分布式存儲(chǔ)在系統(tǒng)中,每個(gè)節(jié)點(diǎn)上存儲(chǔ)的數(shù)據(jù)量會(huì)因?yàn)楣?jié)點(diǎn)的數(shù)量而改變。用詞頻統(tǒng)計(jì)的方法進(jìn)行測(cè)試,得出不同節(jié)點(diǎn)數(shù)量的處理時(shí)間。根據(jù)結(jié)果分析集群中節(jié)點(diǎn)增加時(shí)處理時(shí)間的變化,以及集群中各節(jié)點(diǎn)之間的并行關(guān)系。每一組實(shí)驗(yàn)使用的節(jié)點(diǎn)數(shù)量依次遞增,進(jìn)行數(shù)據(jù)量不變的詞頻統(tǒng)計(jì)實(shí)驗(yàn),集群中節(jié)點(diǎn)數(shù)量依次遞增情況相同。各組實(shí)驗(yàn)之間集群數(shù)據(jù)量依次倍增,依此分析系統(tǒng)中存儲(chǔ)不同數(shù)據(jù)量時(shí)集群的并行關(guān)系。
將MPIFS分布式文件系統(tǒng)部署在同一局域網(wǎng)下的6臺(tái)計(jì)算機(jī)上。在HDFS分布式文件系統(tǒng)中,包括一個(gè)主節(jié)點(diǎn)5個(gè)從節(jié)點(diǎn)。單個(gè)計(jì)算機(jī)軟硬件設(shè)備如表1所示。
表1 實(shí)驗(yàn)設(shè)備軟硬件
集群中每一個(gè)節(jié)點(diǎn)上存儲(chǔ)切分后的數(shù)據(jù)塊數(shù)據(jù)量,由8 MiB以每次數(shù)據(jù)量?jī)杀兜臄?shù)量級(jí)倍增到256 MiB,每個(gè)節(jié)點(diǎn)的計(jì)算時(shí)間和該節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)量的關(guān)系如圖3所示。
圖3 節(jié)點(diǎn)計(jì)算時(shí)間與節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)量關(guān)系
圖3分別將節(jié)點(diǎn)數(shù)設(shè)置為1、2、3、4、5,并對(duì)比不同數(shù)據(jù)量的節(jié)點(diǎn)計(jì)算時(shí)間。經(jīng)分析數(shù)據(jù)結(jié)果可得圖3中節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)量與計(jì)算時(shí)間呈一次線性正相關(guān),說明詞頻計(jì)算時(shí)間的增長(zhǎng)是因?yàn)閿?shù)據(jù)量增大而導(dǎo)致運(yùn)算量增大,最終導(dǎo)致計(jì)算時(shí)間延長(zhǎng)。
圖4記錄了集群總的數(shù)據(jù)存儲(chǔ)量與不同個(gè)數(shù)的節(jié)點(diǎn)上存儲(chǔ)數(shù)據(jù)量大小的關(guān)系,分別設(shè)置節(jié)點(diǎn)數(shù)為1、2、3、4、5。
圖4 集群存儲(chǔ)總數(shù)據(jù)量與節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)量關(guān)系
由圖3和圖4可知,計(jì)算時(shí)間并不由集群的總數(shù)據(jù)量決定,而是由分布式存儲(chǔ)在集群每個(gè)節(jié)點(diǎn)上的數(shù)據(jù)量大小決定。
總數(shù)據(jù)量增長(zhǎng)的同時(shí)增加集群的節(jié)點(diǎn)數(shù),使得單個(gè)節(jié)點(diǎn)上的數(shù)據(jù)量不變,計(jì)算時(shí)間不變。當(dāng)集群只有一個(gè)存儲(chǔ)和計(jì)算節(jié)點(diǎn),節(jié)點(diǎn)的計(jì)算方式只能是本地計(jì)算,圖3中多個(gè)節(jié)點(diǎn)和單個(gè)節(jié)點(diǎn)計(jì)算時(shí)間一致,說明文件在系統(tǒng)中沒有進(jìn)行傳輸,如果存在文件在節(jié)點(diǎn)之間的傳輸,會(huì)出現(xiàn)多個(gè)節(jié)點(diǎn)和單個(gè)節(jié)點(diǎn)計(jì)算時(shí)間不一致。由此可得出集群的所有節(jié)點(diǎn)都是本地運(yùn)算。
集群總存儲(chǔ)數(shù)據(jù)量由40 MiB以每次數(shù)據(jù)量?jī)杀兜臄?shù)量級(jí)倍增到1 280 MiB,計(jì)算時(shí)間與節(jié)點(diǎn)數(shù)量關(guān)系如圖5所示。
圖5 計(jì)算時(shí)間與節(jié)點(diǎn)數(shù)量關(guān)系
圖5記錄了存儲(chǔ)在MPIFS的文件由集群中的計(jì)算和存儲(chǔ)節(jié)點(diǎn)讀取計(jì)算,計(jì)算和存儲(chǔ)節(jié)點(diǎn)數(shù)量與詞頻統(tǒng)計(jì)時(shí)間之間的關(guān)系。在存儲(chǔ)文件數(shù)據(jù)量不變的情況下,集群中計(jì)算和存儲(chǔ)節(jié)點(diǎn)數(shù)量從1增加到5,由圖5可看出,讀取時(shí)間和集群計(jì)算和存儲(chǔ)節(jié)點(diǎn)數(shù)成非線性負(fù)相關(guān),隨著集群計(jì)算和存儲(chǔ)節(jié)點(diǎn)數(shù)量的增加計(jì)算時(shí)間減小。經(jīng)過數(shù)學(xué)分析,整個(gè)集群存儲(chǔ)文件時(shí),節(jié)點(diǎn)數(shù)量與計(jì)算時(shí)間呈一元冪指函數(shù)負(fù)相關(guān)。
不同數(shù)據(jù)量的運(yùn)算呈現(xiàn)的數(shù)據(jù)量和運(yùn)算時(shí)間的關(guān)系都相同,運(yùn)算時(shí)間并不會(huì)隨運(yùn)算量大小而改變,說明系統(tǒng)節(jié)點(diǎn)之間是并行關(guān)系,運(yùn)算關(guān)系不受文件大小的影響。
當(dāng)集群中存儲(chǔ)待分析文件數(shù)據(jù)量不變時(shí),隨著集群節(jié)點(diǎn)數(shù)的增加,計(jì)算工作量分發(fā)到每個(gè)節(jié)點(diǎn)會(huì)減少,從而整個(gè)集群的工作時(shí)間減小。在節(jié)點(diǎn)數(shù)量成倍增加時(shí),整個(gè)集群的工作時(shí)間成倍減小,可得出每個(gè)節(jié)點(diǎn)的工作量成倍減少。由此得出集群的計(jì)算節(jié)點(diǎn)之間沒有互相依賴的并行關(guān)系。
文中提出一種MPIFS分布式文件系統(tǒng),通過實(shí)驗(yàn)得出,當(dāng)數(shù)據(jù)量m不變,集群計(jì)算時(shí)間t隨集群計(jì)算節(jié)點(diǎn)數(shù)量n減小而增加,m增大n數(shù)量增大t不變,m增大n數(shù)量不變t增大,經(jīng)過數(shù)學(xué)分析,t與m/n成一次線性正相關(guān)關(guān)系,因此,證明計(jì)算時(shí)間不是由集群的總數(shù)據(jù)量決定,而是由單個(gè)節(jié)點(diǎn)上的數(shù)據(jù)量決定,集群計(jì)算節(jié)點(diǎn)之間是并行關(guān)系。
文中成功驗(yàn)證了MPIFS能將MPI與HDFS結(jié)合,完成文件的分塊和尋址,為MPI底層提供文件系統(tǒng)。MPIFS文件系統(tǒng)與MPI結(jié)合,使MPI不僅能支持傳統(tǒng)的數(shù)據(jù)向計(jì)算遷移計(jì)算,同時(shí)也能支持計(jì)算向數(shù)據(jù)遷移計(jì)算,完成大數(shù)據(jù)計(jì)算任務(wù)。
黑龍江工程學(xué)院學(xué)報(bào)2024年1期