王加亮,秦 勃,劉健健,劉 妮
(中國海洋大學信息科學與工程學院 青島 266100)
海洋環境信息主要包括海面高度、潮流、海流、海浪、溫度、鹽度、密度、氣溫、氣壓、濕度等。由于海洋環境的復雜性,各種指標非常多,空間和時間跨度非常大,其監測信息具有海量性的特點;并且海洋環境信息的觀測手段多種多樣,如浮標、臺站、CODAS、CTD、ADCP、觀測船、遙感、衛星等,導致數據的格式和精度多種多樣,甚至以不同的數據形式存在,如圖像、聲音、文本等。由于這些信息基本以數字的形式呈現,很難作為海洋研究、開發利用和管理有效的分析手段,因此采用可視化處理技術對海洋環境信息進行分析、處理具有非常重要的意義。
鑒于海洋環境信息的海量性、多源性和數據形式多樣性,海洋環境信息可視化分析處理需要采用大規模的并行計算模式以提高可視化分析、處理的效率,支持海洋環境信息的交互可視化需求。鑒于Hadoop云計算平臺在海量數據檢索、抽取等處理方面具有諸多優勢,本文在已實現的海洋環境信息并行可視化分析處理的基礎上,將GPU(gaphic processing unit,圖形處理器)[1]、MPI(message passing interface)并行計算引入MapReduce處理機制,實現海洋環境空間數據場大規模數據集的檢索、抽取、插值計算、特征可視化分析的并行處理,構建一個基于云環境的海洋環境信息遠程交互可視化平臺體系架構解決方案,達到海洋環境信息的溫鹽密度場、流場等的遠程交互可視化的目的。
近年來,各大IT公司紛紛推出了自己的云計算基礎設施和云計算服務,如谷歌的Google Apps、微軟的Windows Azure、IBM的Blue Cloud等,這大大促進了云計算技術的發展,使云計算技術在海量數據處理方面獲得了廣泛的應用。同時,為了解決流式處理的問題,各大IT公司也不斷地對既有平臺進行改造或者直接推出新的實時云計算平臺解決方案,如Facebook的Facebook Messages就是在Hadoop基礎上改造成的更有效的實時系統,而Yahoo則是推出新的S4開源流計算平臺。我國云計算服務尚處于起步階段,但是發展迅速,淘寶、360安全衛士等都在大規模使用和發展Hadoop云計算平臺。但是目前將云計算理論應用于海洋環境信息遠程交互可視化的工作還很少。
一般情況下,云計算體系架構[2]采用3層棧結構,分別為應用服務層(SaaS)、平臺服務層(PaaS)、基礎設施服務層(IaaS),由不同的層次提供不同級別的服務。海洋環境信息交互可視化云計算體系架構(見圖1)也分為3層:應用層(包括用戶接口層、應用模型層)、平臺層(包括云服務層、云平臺)、資源層(包括虛擬資源層、物理層)。
(1)應用層
用戶接口層主要接收用戶的交互信息,形成任務描述文件,為用戶顯示可視化任務執行結果等。應用模型層主要是各種定制的可視化模型,其響應用戶接口層的各種任務請求,利用云平臺層提供的各種云服務完成具體的可視化任務,并為海洋環境信息采集用戶提供數據上傳服務。
(2)平臺層
云服務層主要完成對各種可視化定制模塊處理任務的響應,對應海洋環境信息可視化的數據預處理、數據的映射、可視化圖像的繪制3個步驟,提供各個可視化服務分割模塊的具體處理服務。云平臺層主要提供具體的存儲服務和計算服務,并對Hadoop的計算服務進行了一定的改進,引入了GPU并行計算、MPI并行計算、CPU并行計算等多種類型、多種層次、多種粒度的并行模式,使其更適合海洋環境信息數據交互可視化任務的需求,在第4節將做更具體的陳述。
(3)資源層
資源層主要為平臺層提供計算存儲服務。其中,物理層主要由磁盤陣列組成的數據中心以及配有大容量硬盤的CPU計算服務器和GPU計算服務器組成;虛擬層通過虛擬化技術,將來自不同節點、不同結構的物理資源進行整合,形成大型資源池供平臺層使用。
并行計算模式依照數據和程序的結合過程分為3種方式:一是將數據移到程序所在的位置,如傳統的MPI;二是將程序移動到數據所在的位置,如Hadoop云計算平臺的MapReduce;三是將程序和數據共同移到第三方位置,如GPU并行計算。

MPI是高性能計算(high performance computing,HPC)和網格計算(gid cmputing)采用的主要方式。其將作業分散到集群的各臺機器上,這些機器訪問由存儲區域網絡(SAN)組織的共享文件系統,適用于計算密集型的作業。如果節點需要訪問更大量的數據(幾百個GB的數據),那么很多計算節點會由于網絡帶寬的瓶頸問題而空閑下來等待數據。
GPU將大量的晶體管用作ALU計算單元,具有強勁的計算能力、高性能/價格比和高性能/能耗比,再加上其3倍于摩爾定律的發展速度,在當今追求綠色高性能計算的時代,GPU的計算優勢受到越來越多的關注。除專業圖形應用外,GPU已大量地用于通用計算問題,并形成了GPU通用計算研究領域,即GPGPU(general-purpose computing on graphics processing units),又稱 GP2U。GPU 相對獨立的并行計算架構,非常適合處理海洋環境信息可視化這種兼具數據密集和計算密集特點的任務處理。
Hadoop是一個能夠對大量數據進行分布式處理的軟件框架,它是Google的MapReduce編程模型和框架的開源實現,其可以在大量廉價的硬件設備組成的集群上運行應用程序。它為應用程序提供了一組穩定可靠的接口,是一個具有高可靠性和擴展性的分布式系統,在海量數據處理方面性能很強,并在地震模擬、互聯網信息挖掘等方面得到了廣泛的應用。
綜觀上述并行計算模式及海洋環境信息海量數據的特點,可以看出交互可視化處理無論是GPU還是MPI,并行計算的通信時間消耗都會急劇地增加,而且單GPU的運算能力也是有限的;而Hadoop默認模式被設計成適合海量數據處理,側重于最大化吞吐量和效率,最初被設計成適合處理離線且I/O方式是從磁盤上順序讀寫大量數據的批處理式工作,對于隨機讀寫和實時在線需求的支持多是采用將MapReduce的批處理結果上傳到MYSQL等方式來實現近乎實時的低時延響應。
為了建立一種更高效的處理海量環境信息的交互可視化體系架構模式,4.2節將結合MapReduce移動運算到數據所在節點,減少海量數據通信和GPU運算較高加速比的優點,提出一種基于MapReduce的多層次并行處理機制,對MapReduce的處理機制進行優化。
基于MapReduce的多層次并行處理機制如圖2所示,該機制[3,4]中融合了GPU和多核CPU多種計算資源,首先通過MapReduce機制對任務進行分發,實現第一層次多節點的并行,然后在每個節點上根據節點的配置情況采用GPU等并行方式實現第二層次的并行,這種多層次并行處理機制可以有效發揮目前廣泛存在的混合異構集群的計算能力。

(1)MapReduce的多層次并行體系
針對海洋環境信息可視化數據密集的特點,由于Hadoop默認機制是數據本地化(data-local)的,也就是任務運行在輸入分片所在的節點上,或者機架本地化(rack-local):即任務和輸入分片在同一個機架上,但不在同一個節點上。對于數據密集型的運算,這可以大大減少節點間的通信負載,因此應用Hadoop能較好地解決海洋環境信息數據海量的問題。
同時,針對海洋環境信息可視化計算密集的特點,鑒于GPU非常適合高計算強度的應用,因此將GPU應用到MapReduce過程中[5],即在Hadoop的并行基礎上增加一個并行層次,實現多層次并行。另外,實驗結果也顯示:高計算強度是發揮GPU高浮點計算性能的前提條件,否則由于CPU與GPU之間的數據傳輸及同步開銷過大,不能發揮GPU的優勢。具體實現時,應優化算法減少數據傳輸的次數以及數據量和同步的開銷。但是也應該看到,如果數據粒度過小,那么計算強度也會成比例地下降,因此應該通過實驗,尋找一個最優的數據粒度。將GPU應用到MapReduce過程中,采用大粒度的CPU并行預處理數據,大規模計算采用GPU進行第二層次的并行,可以提高Hadoop集群的運算效率和吞吐率。
MPI也比較適合計算密集型的作業,通過對MPI進行改進減少通信開銷,MPI能夠應用于數據密集型計算領域,并能顯著加速Hadoop和MapReduce應用程序[7]。
(2)基于管道的數據傳送
Hadoop系統[7]默認將每個Map和Reduce階段的全部輸出在下階段被消耗前就被實體化到本地穩定存儲器或者產生輸出,雖然批量實體化可以簡化Hadoop的容錯機制,其對于大型部署十分關鍵,但是這會導致運算節點的怠工,因此可以在MapReduce之間增加一個管道,變Hadoop默認的“推”(即在Map階段運算完畢產生中間結果之后才開始Reduce階段)為“推”和“拉”(即在Map階段沒有完全計算完畢產生部分中間結果的時候就開始Reduce階段的運算)并舉,這種方式可以增加并行機會,提高利用率,從而縮短工作完成時間,最終減少響應時間。
海洋環境信息可視化云計算實驗平臺網絡及物理結構如圖3所示。實驗平臺的硬件配置主要是Hadoop集群中的12臺機器,每臺機器配有Intel Core i5-23020 CPU,4 GB內存,其中8臺機器配有支持CUDA運算的Nvidia GTX 460顯卡,另外4臺機器的顯卡不支持CUDA運算,其中一臺機器作為Hadoop的主節點,其他為從節點,并通過吉比特網絡連接曙光TC 4000A集群。在Hadoop集群之外配有門戶服務器、應用服務器和管理服務器。
軟件配置方面主要是為每臺機器安裝配置了Hadoop 0.20.2、MPICH2、Nvidia 的 CUDA Toolkit 4.1。另外為每臺機器配置了JCuda 0.4.1。
海洋環境信息可視化處理流程如圖4所示。用戶通過瀏覽器訪問云計算門戶Web服務器,然后再由Web服務器調用Hadoop集群進行大規模并行計算,Hadoop集群的執行結果經Web服務器最終在客戶端的瀏覽器中以網頁的形式呈現。
(1)可視化計算過程調用及結果顯示的實現
Web服務器對MapReduce計算的調用可以用后端執行Shell Script的方式實現。在可視化結果的展示方面,使用基于HTML5的WebGL技術,WebGL是一種3D繪圖標準,這種繪圖標準允許把JavaScript和OpenGL ES 2.0結合在一起,通過增加OpenGL ES 2.0的一個JavaScript綁定,WebGL可以為HTML5 Canvas提供硬件3D加速渲染,其硬件加速功能可以將可視化數據更快地呈現給用戶,并更快地響應用戶的交互請求。另外,雖然從云計算理論上來講,希望能夠構造一種弱客戶端的應用,即盡量將存儲和計算資源都集中于龐大的“云”中心,但是推送運算到數據并不能完全適合所有的情況,客戶端的運算并不能完全由云計算所替代,海量數據分析的應用程序能夠從“服務器+客戶端”的體系結構中受益[8]。因此為了加強用戶的交互性,在用戶軟硬件環境支持的情況下將一部分“小數據”的任務在本地客戶端利用WebGL的硬件加速功能來完成,實驗證明本地化處理是一種簡單的、有利于減少時延和公共資源數據加載的有效方法。
(2)多層次并行處理機制實現
實驗中使用的開發語言為Java編程語言。由于Nvidia的CUDA編程框架目前只支持C和C++語言,為了實現Java對 GPU的調用引入JCuda,JCuda是對 CUDA runtime和driver API的一種Java封裝,其實現了Java對GPU的調用。具體的調用方式一種是使用jcudaUtils-0.0.4.jar中的相關接口,將CUDA代碼封裝為字符串,這種方式的優點是實現對CUDA代碼的自動編譯和向TaskTracker的自動分發,缺點是在每次執行過程中都會對CUDA代碼進行編譯,增加了額外開銷;另一種方式是使用JNI(Java native interface)調用編譯好的CUDA代碼,這種方式的優點是CUDA代碼只需要編譯一次,但是需要手動將編譯好的CUDA二進制代碼放到每臺TaskTracker上,而且使用JNI也可能會喪失代碼的平臺移植性。

另外,GPU的初始化是需要時間的,因此為了有效發揮GPU的優勢,在Map中加入GPU運算時粒度不應該太小,但是由于Hadoop本身是通過啟動TaskTracker的一個Java線程來執行任務的,如果大粒度的任務數據量過大的話,會出現JVM內存溢出的錯誤,為此需要加大Java JVM的Heap space的大小。
本文針對海洋環境信息長時間序列海量數據的特點,提出了一種基于Hadoop云計算平臺的海洋環境信息遠程交互可視化的體系架構,并針對MapReduce進行了優化,采用多級多粒度的并行運算體系架構,提高了海洋環境信息可視化的響應效率。但是由于Hadoop本身的設計目標是應用于大規模海量數據的批處理式工作,因此對Hadoop相關配置及多級并行運算算法進行優化,提高其運算處理效率及響應速度將是未來工作的重點。
1 Buck I.GPU computing:programming a massively parallel processor.International Symposium on Code Generation and Optimization(CGO’07),California,2007:17~23
2 曾誠,李兵,何克清.云計算的棧模型研究.微電子學與計算機,2009,26(8):22~27
3 Polo J,Carrera D,Becerra Y,et al.Performance of accelerated MapReduce workloads in heterogengous clusters.Proceedings of 39th International Conference on Parallel Processing,San Diego,2010:653~662
4 盧風順,宋君強,銀福康等.CPU/GPU協同并行計算研究綜述.計算機科學,2011,38(3):5~9
5 Huy T Vo,Broson J,Summa B,et al.2011 IEEE Symposium,RI,2011:81~89
6 Condie T,Conway N,Alvaro P,et al.MapReduce OnLine,UCB/EECS-2009-136.Berkeley:Electrical Engineering and Computer Sciences University of California,2009
7 Lu Xiaoyi,Wang Bing,Zha Li,et al.Can MPI benefit Hadoop and MapReduce applications.Proceedings of 2011 International Conference on Parallel Processing Workshops,Taipei,China,2011:371~379
8 Crochow K,Howe B,Stoermer M,et al.Client+Cloud:evaluating seamless architectures for visual data analytics in the ocean sciences.Proceedingsof22nd InternationalConference on Scientific and Statistical Database Management,Berlin,2010:114~131