王加亮,秦 勃,劉健健,劉 妮
(中國海洋大學(xué)信息科學(xué)與工程學(xué)院 青島 266100)
海洋環(huán)境信息主要包括海面高度、潮流、海流、海浪、溫度、鹽度、密度、氣溫、氣壓、濕度等。由于海洋環(huán)境的復(fù)雜性,各種指標(biāo)非常多,空間和時間跨度非常大,其監(jiān)測信息具有海量性的特點;并且海洋環(huán)境信息的觀測手段多種多樣,如浮標(biāo)、臺站、CODAS、CTD、ADCP、觀測船、遙感、衛(wèi)星等,導(dǎo)致數(shù)據(jù)的格式和精度多種多樣,甚至以不同的數(shù)據(jù)形式存在,如圖像、聲音、文本等。由于這些信息基本以數(shù)字的形式呈現(xiàn),很難作為海洋研究、開發(fā)利用和管理有效的分析手段,因此采用可視化處理技術(shù)對海洋環(huán)境信息進行分析、處理具有非常重要的意義。
鑒于海洋環(huán)境信息的海量性、多源性和數(shù)據(jù)形式多樣性,海洋環(huán)境信息可視化分析處理需要采用大規(guī)模的并行計算模式以提高可視化分析、處理的效率,支持海洋環(huán)境信息的交互可視化需求。鑒于Hadoop云計算平臺在海量數(shù)據(jù)檢索、抽取等處理方面具有諸多優(yōu)勢,本文在已實現(xiàn)的海洋環(huán)境信息并行可視化分析處理的基礎(chǔ)上,將GPU(gaphic processing unit,圖形處理器)[1]、MPI(message passing interface)并行計算引入MapReduce處理機制,實現(xiàn)海洋環(huán)境空間數(shù)據(jù)場大規(guī)模數(shù)據(jù)集的檢索、抽取、插值計算、特征可視化分析的并行處理,構(gòu)建一個基于云環(huán)境的海洋環(huán)境信息遠程交互可視化平臺體系架構(gòu)解決方案,達到海洋環(huán)境信息的溫鹽密度場、流場等的遠程交互可視化的目的。
近年來,各大IT公司紛紛推出了自己的云計算基礎(chǔ)設(shè)施和云計算服務(wù),如谷歌的Google Apps、微軟的Windows Azure、IBM的Blue Cloud等,這大大促進了云計算技術(shù)的發(fā)展,使云計算技術(shù)在海量數(shù)據(jù)處理方面獲得了廣泛的應(yīng)用。同時,為了解決流式處理的問題,各大IT公司也不斷地對既有平臺進行改造或者直接推出新的實時云計算平臺解決方案,如Facebook的Facebook Messages就是在Hadoop基礎(chǔ)上改造成的更有效的實時系統(tǒng),而Yahoo則是推出新的S4開源流計算平臺。我國云計算服務(wù)尚處于起步階段,但是發(fā)展迅速,淘寶、360安全衛(wèi)士等都在大規(guī)模使用和發(fā)展Hadoop云計算平臺。但是目前將云計算理論應(yīng)用于海洋環(huán)境信息遠程交互可視化的工作還很少。
一般情況下,云計算體系架構(gòu)[2]采用3層棧結(jié)構(gòu),分別為應(yīng)用服務(wù)層(SaaS)、平臺服務(wù)層(PaaS)、基礎(chǔ)設(shè)施服務(wù)層(IaaS),由不同的層次提供不同級別的服務(wù)。海洋環(huán)境信息交互可視化云計算體系架構(gòu)(見圖1)也分為3層:應(yīng)用層(包括用戶接口層、應(yīng)用模型層)、平臺層(包括云服務(wù)層、云平臺)、資源層(包括虛擬資源層、物理層)。
(1)應(yīng)用層
用戶接口層主要接收用戶的交互信息,形成任務(wù)描述文件,為用戶顯示可視化任務(wù)執(zhí)行結(jié)果等。應(yīng)用模型層主要是各種定制的可視化模型,其響應(yīng)用戶接口層的各種任務(wù)請求,利用云平臺層提供的各種云服務(wù)完成具體的可視化任務(wù),并為海洋環(huán)境信息采集用戶提供數(shù)據(jù)上傳服務(wù)。
(2)平臺層
云服務(wù)層主要完成對各種可視化定制模塊處理任務(wù)的響應(yīng),對應(yīng)海洋環(huán)境信息可視化的數(shù)據(jù)預(yù)處理、數(shù)據(jù)的映射、可視化圖像的繪制3個步驟,提供各個可視化服務(wù)分割模塊的具體處理服務(wù)。云平臺層主要提供具體的存儲服務(wù)和計算服務(wù),并對Hadoop的計算服務(wù)進行了一定的改進,引入了GPU并行計算、MPI并行計算、CPU并行計算等多種類型、多種層次、多種粒度的并行模式,使其更適合海洋環(huán)境信息數(shù)據(jù)交互可視化任務(wù)的需求,在第4節(jié)將做更具體的陳述。
(3)資源層
資源層主要為平臺層提供計算存儲服務(wù)。其中,物理層主要由磁盤陣列組成的數(shù)據(jù)中心以及配有大容量硬盤的CPU計算服務(wù)器和GPU計算服務(wù)器組成;虛擬層通過虛擬化技術(shù),將來自不同節(jié)點、不同結(jié)構(gòu)的物理資源進行整合,形成大型資源池供平臺層使用。
并行計算模式依照數(shù)據(jù)和程序的結(jié)合過程分為3種方式:一是將數(shù)據(jù)移到程序所在的位置,如傳統(tǒng)的MPI;二是將程序移動到數(shù)據(jù)所在的位置,如Hadoop云計算平臺的MapReduce;三是將程序和數(shù)據(jù)共同移到第三方位置,如GPU并行計算。
MPI是高性能計算(high performance computing,HPC)和網(wǎng)格計算(gid cmputing)采用的主要方式。其將作業(yè)分散到集群的各臺機器上,這些機器訪問由存儲區(qū)域網(wǎng)絡(luò)(SAN)組織的共享文件系統(tǒng),適用于計算密集型的作業(yè)。如果節(jié)點需要訪問更大量的數(shù)據(jù)(幾百個GB的數(shù)據(jù)),那么很多計算節(jié)點會由于網(wǎng)絡(luò)帶寬的瓶頸問題而空閑下來等待數(shù)據(jù)。
GPU將大量的晶體管用作ALU計算單元,具有強勁的計算能力、高性能/價格比和高性能/能耗比,再加上其3倍于摩爾定律的發(fā)展速度,在當(dāng)今追求綠色高性能計算的時代,GPU的計算優(yōu)勢受到越來越多的關(guān)注。除專業(yè)圖形應(yīng)用外,GPU已大量地用于通用計算問題,并形成了GPU通用計算研究領(lǐng)域,即GPGPU(general-purpose computing on graphics processing units),又稱 GP2U。GPU 相對獨立的并行計算架構(gòu),非常適合處理海洋環(huán)境信息可視化這種兼具數(shù)據(jù)密集和計算密集特點的任務(wù)處理。
Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架,它是Google的MapReduce編程模型和框架的開源實現(xiàn),其可以在大量廉價的硬件設(shè)備組成的集群上運行應(yīng)用程序。它為應(yīng)用程序提供了一組穩(wěn)定可靠的接口,是一個具有高可靠性和擴展性的分布式系統(tǒng),在海量數(shù)據(jù)處理方面性能很強,并在地震模擬、互聯(lián)網(wǎng)信息挖掘等方面得到了廣泛的應(yīng)用。
綜觀上述并行計算模式及海洋環(huán)境信息海量數(shù)據(jù)的特點,可以看出交互可視化處理無論是GPU還是MPI,并行計算的通信時間消耗都會急劇地增加,而且單GPU的運算能力也是有限的;而Hadoop默認模式被設(shè)計成適合海量數(shù)據(jù)處理,側(cè)重于最大化吞吐量和效率,最初被設(shè)計成適合處理離線且I/O方式是從磁盤上順序讀寫大量數(shù)據(jù)的批處理式工作,對于隨機讀寫和實時在線需求的支持多是采用將MapReduce的批處理結(jié)果上傳到MYSQL等方式來實現(xiàn)近乎實時的低時延響應(yīng)。
為了建立一種更高效的處理海量環(huán)境信息的交互可視化體系架構(gòu)模式,4.2節(jié)將結(jié)合MapReduce移動運算到數(shù)據(jù)所在節(jié)點,減少海量數(shù)據(jù)通信和GPU運算較高加速比的優(yōu)點,提出一種基于MapReduce的多層次并行處理機制,對MapReduce的處理機制進行優(yōu)化。
基于MapReduce的多層次并行處理機制如圖2所示,該機制[3,4]中融合了GPU和多核CPU多種計算資源,首先通過MapReduce機制對任務(wù)進行分發(fā),實現(xiàn)第一層次多節(jié)點的并行,然后在每個節(jié)點上根據(jù)節(jié)點的配置情況采用GPU等并行方式實現(xiàn)第二層次的并行,這種多層次并行處理機制可以有效發(fā)揮目前廣泛存在的混合異構(gòu)集群的計算能力。
(1)MapReduce的多層次并行體系
針對海洋環(huán)境信息可視化數(shù)據(jù)密集的特點,由于Hadoop默認機制是數(shù)據(jù)本地化(data-local)的,也就是任務(wù)運行在輸入分片所在的節(jié)點上,或者機架本地化(rack-local):即任務(wù)和輸入分片在同一個機架上,但不在同一個節(jié)點上。對于數(shù)據(jù)密集型的運算,這可以大大減少節(jié)點間的通信負載,因此應(yīng)用Hadoop能較好地解決海洋環(huán)境信息數(shù)據(jù)海量的問題。
同時,針對海洋環(huán)境信息可視化計算密集的特點,鑒于GPU非常適合高計算強度的應(yīng)用,因此將GPU應(yīng)用到MapReduce過程中[5],即在Hadoop的并行基礎(chǔ)上增加一個并行層次,實現(xiàn)多層次并行。另外,實驗結(jié)果也顯示:高計算強度是發(fā)揮GPU高浮點計算性能的前提條件,否則由于CPU與GPU之間的數(shù)據(jù)傳輸及同步開銷過大,不能發(fā)揮GPU的優(yōu)勢。具體實現(xiàn)時,應(yīng)優(yōu)化算法減少數(shù)據(jù)傳輸?shù)拇螖?shù)以及數(shù)據(jù)量和同步的開銷。但是也應(yīng)該看到,如果數(shù)據(jù)粒度過小,那么計算強度也會成比例地下降,因此應(yīng)該通過實驗,尋找一個最優(yōu)的數(shù)據(jù)粒度。將GPU應(yīng)用到MapReduce過程中,采用大粒度的CPU并行預(yù)處理數(shù)據(jù),大規(guī)模計算采用GPU進行第二層次的并行,可以提高Hadoop集群的運算效率和吞吐率。
MPI也比較適合計算密集型的作業(yè),通過對MPI進行改進減少通信開銷,MPI能夠應(yīng)用于數(shù)據(jù)密集型計算領(lǐng)域,并能顯著加速Hadoop和MapReduce應(yīng)用程序[7]。
(2)基于管道的數(shù)據(jù)傳送
Hadoop系統(tǒng)[7]默認將每個Map和Reduce階段的全部輸出在下階段被消耗前就被實體化到本地穩(wěn)定存儲器或者產(chǎn)生輸出,雖然批量實體化可以簡化Hadoop的容錯機制,其對于大型部署十分關(guān)鍵,但是這會導(dǎo)致運算節(jié)點的怠工,因此可以在MapReduce之間增加一個管道,變Hadoop默認的“推”(即在Map階段運算完畢產(chǎn)生中間結(jié)果之后才開始Reduce階段)為“推”和“拉”(即在Map階段沒有完全計算完畢產(chǎn)生部分中間結(jié)果的時候就開始Reduce階段的運算)并舉,這種方式可以增加并行機會,提高利用率,從而縮短工作完成時間,最終減少響應(yīng)時間。
海洋環(huán)境信息可視化云計算實驗平臺網(wǎng)絡(luò)及物理結(jié)構(gòu)如圖3所示。實驗平臺的硬件配置主要是Hadoop集群中的12臺機器,每臺機器配有Intel Core i5-23020 CPU,4 GB內(nèi)存,其中8臺機器配有支持CUDA運算的Nvidia GTX 460顯卡,另外4臺機器的顯卡不支持CUDA運算,其中一臺機器作為Hadoop的主節(jié)點,其他為從節(jié)點,并通過吉比特網(wǎng)絡(luò)連接曙光TC 4000A集群。在Hadoop集群之外配有門戶服務(wù)器、應(yīng)用服務(wù)器和管理服務(wù)器。
軟件配置方面主要是為每臺機器安裝配置了Hadoop 0.20.2、MPICH2、Nvidia 的 CUDA Toolkit 4.1。另外為每臺機器配置了JCuda 0.4.1。
海洋環(huán)境信息可視化處理流程如圖4所示。用戶通過瀏覽器訪問云計算門戶Web服務(wù)器,然后再由Web服務(wù)器調(diào)用Hadoop集群進行大規(guī)模并行計算,Hadoop集群的執(zhí)行結(jié)果經(jīng)Web服務(wù)器最終在客戶端的瀏覽器中以網(wǎng)頁的形式呈現(xiàn)。
(1)可視化計算過程調(diào)用及結(jié)果顯示的實現(xiàn)
Web服務(wù)器對MapReduce計算的調(diào)用可以用后端執(zhí)行Shell Script的方式實現(xiàn)。在可視化結(jié)果的展示方面,使用基于HTML5的WebGL技術(shù),WebGL是一種3D繪圖標(biāo)準(zhǔn),這種繪圖標(biāo)準(zhǔn)允許把JavaScript和OpenGL ES 2.0結(jié)合在一起,通過增加OpenGL ES 2.0的一個JavaScript綁定,WebGL可以為HTML5 Canvas提供硬件3D加速渲染,其硬件加速功能可以將可視化數(shù)據(jù)更快地呈現(xiàn)給用戶,并更快地響應(yīng)用戶的交互請求。另外,雖然從云計算理論上來講,希望能夠構(gòu)造一種弱客戶端的應(yīng)用,即盡量將存儲和計算資源都集中于龐大的“云”中心,但是推送運算到數(shù)據(jù)并不能完全適合所有的情況,客戶端的運算并不能完全由云計算所替代,海量數(shù)據(jù)分析的應(yīng)用程序能夠從“服務(wù)器+客戶端”的體系結(jié)構(gòu)中受益[8]。因此為了加強用戶的交互性,在用戶軟硬件環(huán)境支持的情況下將一部分“小數(shù)據(jù)”的任務(wù)在本地客戶端利用WebGL的硬件加速功能來完成,實驗證明本地化處理是一種簡單的、有利于減少時延和公共資源數(shù)據(jù)加載的有效方法。
(2)多層次并行處理機制實現(xiàn)
實驗中使用的開發(fā)語言為Java編程語言。由于Nvidia的CUDA編程框架目前只支持C和C++語言,為了實現(xiàn)Java對 GPU的調(diào)用引入JCuda,JCuda是對 CUDA runtime和driver API的一種Java封裝,其實現(xiàn)了Java對GPU的調(diào)用。具體的調(diào)用方式一種是使用jcudaUtils-0.0.4.jar中的相關(guān)接口,將CUDA代碼封裝為字符串,這種方式的優(yōu)點是實現(xiàn)對CUDA代碼的自動編譯和向TaskTracker的自動分發(fā),缺點是在每次執(zhí)行過程中都會對CUDA代碼進行編譯,增加了額外開銷;另一種方式是使用JNI(Java native interface)調(diào)用編譯好的CUDA代碼,這種方式的優(yōu)點是CUDA代碼只需要編譯一次,但是需要手動將編譯好的CUDA二進制代碼放到每臺TaskTracker上,而且使用JNI也可能會喪失代碼的平臺移植性。
另外,GPU的初始化是需要時間的,因此為了有效發(fā)揮GPU的優(yōu)勢,在Map中加入GPU運算時粒度不應(yīng)該太小,但是由于Hadoop本身是通過啟動TaskTracker的一個Java線程來執(zhí)行任務(wù)的,如果大粒度的任務(wù)數(shù)據(jù)量過大的話,會出現(xiàn)JVM內(nèi)存溢出的錯誤,為此需要加大Java JVM的Heap space的大小。
本文針對海洋環(huán)境信息長時間序列海量數(shù)據(jù)的特點,提出了一種基于Hadoop云計算平臺的海洋環(huán)境信息遠程交互可視化的體系架構(gòu),并針對MapReduce進行了優(yōu)化,采用多級多粒度的并行運算體系架構(gòu),提高了海洋環(huán)境信息可視化的響應(yīng)效率。但是由于Hadoop本身的設(shè)計目標(biāo)是應(yīng)用于大規(guī)模海量數(shù)據(jù)的批處理式工作,因此對Hadoop相關(guān)配置及多級并行運算算法進行優(yōu)化,提高其運算處理效率及響應(yīng)速度將是未來工作的重點。
1 Buck I.GPU computing:programming a massively parallel processor.International Symposium on Code Generation and Optimization(CGO’07),California,2007:17~23
2 曾誠,李兵,何克清.云計算的棧模型研究.微電子學(xué)與計算機,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 盧風(fēng)順,宋君強,銀??档?CPU/GPU協(xié)同并行計算研究綜述.計算機科學(xué),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