商娟葉
(西安外事學院 現代教育技術中心,陜西 西安 710077)
隨著Internet技術的飛速發展,網絡信息資源呈現出爆炸性的增長。傳統的并行技術已無法滿足日益增長的信息化數據處理需求,隨之產生一種新型的并行計算技術——云計算(Cloud Computing)。在云計算的基礎設施層,將MPI并行算法與云計算的結合起來[1],充分利用云平臺的可共享性、高擴展性、高容錯性的特點[2],來有效地解決海量的數據處理中遇到的計算問題。
云計算是通過Internet將超大規模的計算和存儲資源整合起來,形成一個虛擬的、動態的、可伸縮的計算資源池,并以服務的形式將相應的應用程序按需提供給用戶。用戶可以通過網絡方便、快捷地獲取強大的計算能力、存儲能力及基礎設施[1]。
使用云計算降低了終端設備要求,同時還提高了數據處理能力。總的來說,云計算有以下幾個方面的優勢[2]:
1)使用方便、快捷。用戶在終端只需要一個簡單的輸入或輸出設備,就可以通過互聯網隨時隨地享受各種能力超強的“云”服務。
2)數據存儲安全、可靠。云計算提供了安全、可靠、可擴展的數據存儲中心,使用了數據多副本容錯、計算節點同構等措施保障云服務的高可靠性、安全性。
3)強大的運營能力。很多公司的“云”擁有幾十萬臺服務器,甚至上百萬服務器,比如 Google、亞馬遜、IBM、微軟和Yahoo等。普通用戶可以利用云計算來完成各種業務。
4)按需服務。云計算把計算、服務和應用作為一種公共設施提供給用戶,用戶使用計算機資源就像按需使用水、電、煤氣一樣方便。
5)極其廉價。“云”是一個動態的、虛擬的、龐大的資源池。由于云資源可自動化管理及利用率大幅提升,使成本大幅降低。用戶可按需購買,計費方式就和自來水、電和煤氣類似。
MPI(Message Passing Interface)是通過消息傳遞的方式在并行運行的程序之間進行相互通信一種接口模式。在消息傳遞模型MPI中,將程序分成若干個進程,不同的或者相同的這些進程單獨運行在每個節點[3]。節點與節點之間可通過消息傳遞方式進行相互通信,從而利用并行處理方式來縮短程序處理的時間。MPI是消息傳遞并行程序設計的標準,具有運算效率高、移植性能好,擴展性能強等多種優點[4]。
MPI庫中共有上百個函數,Fortran、C及C++均可直接調用這些函數。MPI中只要掌握6個常用函數,就能完成幾乎所有的通信功能。
在所有MPI程序中首先進行程序參數說明,并由MPI_Init()程序完成所有的初始化工作。進入系統后,MPI通過函數MPI_Comm_rank來獲取當前進程的編號,MPI_Size獲取當前進程的大小,不同的進程通過進程編號與其它進程進行區分。各進程根據需要調用相應的函數、應用程序,執行各自的任務,通過MPI_Send和MPI_Recv來實現進程間的并行與通信。最后用MPI_Finalize()來結束進程[5]。消息傳遞過程的程序設計流程圖1所示。
圖1 消息傳遞過程的程序設計流程圖Fig.1 The programming flow chart in the message transfer process
集群系統是利用高速網絡將一組高性能的計算節點上的計算機,統一調度,協調處理,來實現高效、并行處理的系統[6]。這些計算節點可以是普通計算機,主要由建立在操作系統之上的并行編程環境MPI完成系統的資源管理及各節點之間相互通信。可利用廉價的計算機集群系統實現高速、并行計算,優點在于集群系統易于實現、可靠性高、擴展性好,且節約了系統資源。
Google提出一種云計算的分布式運算MapReduce模式。MapReduce模式是把要執行的任務自動分割后,通過Map()將數據映射成不同的區塊,分配給計算機集群處理,實現分布式并行運算,再通過Reduce()將結果匯整,最后輸出用戶需要的結果[7]。MapReduce的處理流程如圖2所示。
MapReduce模式的軟件實現過程是先通過Map映射函數,把數據映射成鍵值對(key/value),使用Combiner函數進行合并,形成一系列中間結果的鍵值對(key/value),然后經過Partitioner函數分區和Sort函數排序,最后將鍵值對(key/value)傳給Reduce函數,把具有相同中間形式key的value合并在一起,得出匯整后的結果。其過程舉例如圖3所示。MapReduce模式常用于解決大規模數據處理的問題,其程序能在計算機集群上實現并行化,故MapReduce模式應用廣泛[7]。
圖2 MapReduce的處理流程圖Fig.2 The process flow chart of MapReduce
圖3 MapReduce軟件實現示意圖Fig.3 The schematic diagram of MapReduce software implementation
Hadoop是一個實現了MapReduce模式的并行編程框架。程序員可借助Hadoop框架編寫程序,用于實現MapReduce算法。將應用程序分割成若干很小的工作單元,每個單元可在任何集群節點上執行或重復執行,以實現對海量數據的處理。Hadoop框架提供了一個分布式文件系統(HDFS)和分布式數據庫(HBase),用來存儲各個計算節點上的數據。Hadoop框架具有數據讀寫吞吐率高、容錯性高,還能自動處理失敗節點的特點。Hadoop框架如圖4所示。
圖4 Hadoop框架Fig.4 The Hadoop framework
在云計算的MPI執行過程中,用戶將要處理的問題提交給云平臺的Hadoop框架,MapReduce模式通常把輸入的數據集切分為若干獨立的數據塊,Map映射把指令分發到多個Slave上去,以完全并行的方式處理程序。有一臺Master,通過JobTracker與計算機集群中的Slave機器定時通信,主要啟動、跟蹤及調度各個Slave的任務執行。還有多臺Slave,根據實際應用需求,結合本地數據,通過TaskTracker來執行Map任務與Reduce任務。TaskTracker監控當前機器的任務運行情況,并將監控信息發送給JobTracker。當出現故障時,JobTracker會根據監控信息,重新執行Map,Reduce,若未完成,將任務重新分配在某個Slave上執行。Reduce規約把Slave計算出來的結果進行合并、匯整,最后將結果返回給用戶[8]。其執行過程如圖5所示。
圖5 MPI云計算執行過程Fig.5 MPI implementation process on cloud computing
并行計算是利用多個處理機協同解決同一個算法問題,也就是將被求解的計算問題分解成若干個模塊,每一個模塊均由一個獨立的處理機同時來進行處理。在消息傳遞處理中,將MPI并行程序、集群系統、Hadoop框架及云計算核心技術整合在一起,充分利用MapReduce模式來實現算法的并行計算和存儲,達到海量數據高吞吐率的處理能力。
在Hadoop框架性能基準測試實驗中,利用nnbench對3組數據使用6個Map函數進行測試。實驗中主要在數據優化前后,針對3組數據進行讀寫操作,分析CPU負載、執行時間及內存使用情況[9]。3組測試數據如表1所示。
表1 數據優化前Tab.1 The data before optimization
3組數據分別代表3種情況。在第一組中,處理的文件數量相對較少,但每個文件較大。在第二組,處理的文件數量比較大,但文件的大小小于第一組。在第三組中,處理的文件數量特別大,但每個文件是非常小的。數據優化后處理情況如表2所示。
表2 數據優化后Tab.2 The data after optimization
從上面的結果可以看出,數據優化后,第一組性能測試結果明顯較好。減少了節點名占用的內存容量,雖對CPU的性能有一定影響,但它仍在可接受的范圍內。MPI消息傳遞方式在并行集群系統,分布式云計算框架中,提高了節點處理器的使用率,減少了并行處理的時間,一定程度上提高了計算的性能,可實現高吞吐率,大規模的數據操作能力。
文中提出云計算在MPI領域的應用方法,包括MapReduce模式、Hadoop架構及MPI云計算模型,為實現集群系統及海量數據的并行運算處理提供新思路。云計算在數據挖掘、大規模數據處理等領域有著廣泛的應用價值和研究前景。要更好地發揮云計算在科研、辦公和生活等方面的應用,我們還需要做深入的云平臺算法的開發與研究。
[1]陸嘉恒,文繼榮,毛新生,等.分布式系統及云計算概論[M].北京:清華大學出版社,2011.
[2]陳全,鄧倩妮.云計算及其關鍵技術 [J].計算機應用,2009,9(29):2562-2567.CHEN Quan,DENG Qian-ni.Cloud computing and its key techniques[J].Journalof Computer Applications,2009,9(29):2562-2567.
[3]鄧賓.基于MPI高性能計算的方法研究 [J].自動化與儀器儀表,2014,173(3):29-30.DENG Bin.Study on the computation method of high performance based on MPI[J].Automation and Instrumentation,2014,173(3):29-30.
[4]何艷輝,朱珍民.基于消息傳遞并行計算環境[J].湘潭大學社會科學學報,2003,27(5):233-235.HE Yan-hui,ZHU Zhen-min.Parallel computing environment based on message passing[J].Social Sciences Journal of Xiangtan University,2003,27(5):233-235.
[5]丁文劍.云計算中消息傳遞相關問題探討[J].無線互聯科技,2012(1):67-68.DING Wen-jian.Discussion on the related problems of the message passing in cloud computing[J].Wireless Internet Technology,2012(1):67-68.
[6]盧云娥,黃宗宇,李超陽,等.基于微機集群系統的 MPI并行計算[J].電子設計工程,2011,19(5):78-81.LU Yun-e,HUANG Zong-yu,LI Chao-yang,et al.The MPI parallel computing based on the microcomputer cluster[J].Electronic Design Engineering,2011,19(5):78-81.
[7]郭本俊,王鵬,陳高云,等.基于MPI的云計算模型[J].計算機工程,2009,35(24):84-86.GUO Ben-jun,WANG Peng,CHEN Gao-yun,et al.Cloud computing model based on MPI[J].Computer Engineering,2009,35(24):84-86.
[8]都志輝.高性能計算之并行編程技術——MPI并行程序設計[M].北京:清華大學出版社,2001.
[9]趙偉彪,吳俊峰,袁帥.MPI并行作業在云計算平臺上的測試研究[J].電腦知識與技術,2014,15(10):3665-3667.ZHAO Wei-biao,WU Jun-feng,YUAN Shuai.Research on the testing of MPI parallel computing tasks based on cloud computing platform[J].Computer Knowledge and Technology,2014,15(10):3665-3667.