劉 歡,陳能成,陳澤強
(武漢大學 測繪遙感信息工程國家重點實驗室,武漢 430079)
海水表面溫度是一種重要的海洋環(huán)境參數(shù),被廣泛應用于海洋動力過程、海氣相互作用和全球氣候變化等研究領域中.但就傳統(tǒng)原位測量方式而言,其設備成本代價高、站點分布離散、監(jiān)測范圍有限,無法滿足較大區(qū)域范圍、較長時間序列和連續(xù)性觀測的需求.針對以上不足,McMillin[1]最早提出使用遙感影像劈窗算法反演地表溫度.隨著遙感技術和衛(wèi)星反演算法的成熟,覃志豪等[2]提出采用MODIS遙感影像反演海表溫度產(chǎn)品,并應用于相關大尺度、長周期的研究中.同時伴隨遙感數(shù)據(jù)的海量增長和應用算法復雜度的急劇增加,傳統(tǒng)計算方式難以滿足日常的影像計算需求.朱義明、付天新等[3,4]使用MapReduce編程模型對遙感影像實現(xiàn)了并行處理.Almeer、常生鵬等[5,6]使用Hadoop實現(xiàn)了圖像處理中的濾波、銳化、增強和分割等算法.劉震[7]提出了一種基于五元組的遙感圖像并行處理方法.以上遙感數(shù)據(jù)并行計算研究均采用離線存儲的方式,數(shù)據(jù)下載、人工預處理程度高;算法設計的參數(shù)變量較單一,對于中間輸入?yún)?shù)較多的劈窗算法并沒有提供相應的解決方案參考;沒有充分利用RDD窄依賴特性提高計算的效率.本文綜合相關研究和算法特性,提出了一種基于Apache Spark的MODIS海表溫度快速反演方法,融合在線獲取、實時解析、彈性分布式數(shù)據(jù)集處理和適于快速計算的反演算法提高海量遙感數(shù)據(jù)處理效率.
本文研究涉及的主要方法有MODIS影像在線獲取與動態(tài)解析、適于快速計算的改進劈窗算法和基于Apache Spark的遙感影像計算過程優(yōu)化.MODIS影像在線獲取與動態(tài)解析使用自動化的影像查詢機制提高影像定制的效率;適于快速計算的改進劈窗算法通過減少輸入?yún)?shù),降低模型復雜度的形式提高算法的時空效率;基于Apache Spark的遙感影像計算過程優(yōu)化通過RDD窄依賴關系減少計算過程中的網(wǎng)絡數(shù)據(jù)交換延遲.
針對人工影像數(shù)據(jù)獲取的低效性,本文采用自動化影像條件查詢與多線程下載程序?qū)崿F(xiàn)海量數(shù)據(jù)自定義批量下載,避免了中間過程的人工干預,提高了影像獲取的效率.美國宇航局以RESTful API方式提供了查詢MODIS影像元數(shù)據(jù)和服務器存儲路徑的網(wǎng)絡請求方法.如圖1,用戶可以通過不同的網(wǎng)頁請求參數(shù)獲取不同的影像元數(shù)據(jù)信息.如通過searchForFiles頁面?zhèn)鬟f產(chǎn)品名稱、數(shù)據(jù)集編號、時空范圍和影像狀態(tài)信息等參數(shù)查詢研究區(qū)影像ID列表;通過getFileProperties頁面?zhèn)鬟f影像ID列表查詢具體影像的狀態(tài)信息,并據(jù)此下載影像或提交訂單;通過getFileUrls頁面獲取影像的服務器路徑,并據(jù)此下載相應的影像數(shù)據(jù)文件.本文為了提高處理效率,避免磁盤IO,在數(shù)據(jù)處理前將影像文件以字節(jié)數(shù)組的形式緩存在內(nèi)存中.
針對影像數(shù)據(jù)提取與解析過程,本文采用一種適于并行化處理的第三方處理方案.MODIS L1B數(shù)據(jù)文件存儲格式是一種自描述多對象超文本文件格式——HDF4.HDF4通過數(shù)據(jù)描述符和數(shù)據(jù)元素來管理不同的數(shù)據(jù)對象.數(shù)據(jù)描述符包含了標識符、參照數(shù)、數(shù)據(jù)偏移長度和數(shù)據(jù)長度.通過相應的數(shù)據(jù)描述符可以將文件中不同對象的數(shù)據(jù)提取出來,達到解析的目的.Spark兼容所有Hadoop支持的文件格式,但是對于如HDF4這樣的遙感數(shù)據(jù)并不提供原生的支持,需要通過自定義的方式進行解析.目前常用的第三方解析方案有美國國家超級計算機應用中心基于C語言的解析方案和美國大氣研究中心基于Java的解析方案.本文考慮到Spark運行于Java虛擬機支持的開發(fā)環(huán)境和平臺可移植性的需求,采用基于Java的解決方案.通過自定義的解析程序,可以將Spark不識別的HDF4文件數(shù)據(jù),提取轉化為其支持并行化的操作數(shù)據(jù).
圖1 影像獲取流程
劈窗算法,是一種利用相鄰兩個熱紅外通道對大氣水汽吸收作用的差異特性,通過波段組合消除大氣影響,最終將海表溫度表達為波段亮度溫度函數(shù)的方法.本文利用影像元數(shù)據(jù)、影像值和大氣參數(shù)擬合公式,減少反演過程中參數(shù)輸入和擬合的效率損耗,避免計算節(jié)點間數(shù)據(jù)交換.其具體算法流程如圖2.
1.2.1 輻射定標
MODIS L1B數(shù)據(jù)文件中保存的波段像元值為16位量化級數(shù).根據(jù)MODIS用戶手冊[8]所述,反演計算中所需的輻射亮度值需要通過以下公式進行計算:
其中,Radiance為輻射校正后的波段輻射亮度,Scale和Offsets為MODIS元數(shù)據(jù)提供的定標參數(shù),DN為波段量化級數(shù).
圖2 劈窗算法處理流程
1.2.2 大氣水分含量
大氣透過率通常是根據(jù)與大氣水分含量的關系計算而得.Kaufman和Gao[9]提出利用MODIS相應光譜范圍的波段函數(shù)組合獲取大氣水分含量的方法,相較地面觀測數(shù)據(jù),其誤差在5%~10%之間.
其中,ω為大氣水分含量(g·cm–2),α=0.02,β=0.632,ρi為波段的地面反射率.
1.2.3 大氣透過率
大氣透過率與大氣水分含量的關系一般通過大氣傳輸模型模擬確定.毛克彪等[10]針對大氣傳輸模型參數(shù)難以實時獲取的問題,利用神經(jīng)網(wǎng)絡擬合MODTRAN模型,獲得了了以下統(tǒng)計回歸表達式,其波段反射率平均誤差不大于0.008.
其中,τi為i波段的大氣透過率,ω為上一步所求大氣水分含量.考慮到反演計算過程中外部模型參數(shù)計算與輸入會引起節(jié)點間數(shù)據(jù)交換的效率損耗,本文采用以上統(tǒng)計回歸表達式計算大氣透過率.
1.2.4 線性組合系數(shù)[11]
地表比輻射率主要取決于地表的物質(zhì)組成,就海表溫度反演而言,其地表類型單一,因此直接取相應的水體比輻射率.
1.2.5 亮度溫度
亮度溫度是與物體在相同頻率下具有相同輻射率的黑體的絕對溫度,是海表溫度反演的重要參數(shù)之一.利用普朗克黑體輻射方程可以直接求解相應波段的亮度溫度.
其中,Ti為 波段的亮度溫度,k31,1=729.541 636 W·m–2·sr–1·μm–1,k32,1=474.684 7799 W·m–2·sr–1·μm–1,k31,2=1304.413 871K,k32,2=1196.978 785 K
1.2.6 海表溫度反演
覃志豪等[2]綜合研究國內(nèi)外17種劈窗算法,通過比較其參數(shù)復雜性和算法精度,在保證較高反演精度的情況下提出了線性反演公式.其具有良好的反演精度,已被應用于農(nóng)業(yè)旱災監(jiān)測.本文基于簡化輸入?yún)?shù),減少像元間計算引起的節(jié)點數(shù)據(jù)交換的需要,采用以下線性反演公式進行海表溫度的快速反演.
其中,Ts是海表溫度(℃),T31和T32分別是MODIS第31 和 32 波段的亮度溫度,A0、A1和A2是劈窗算法參數(shù).
針對基于Spark的海表溫度反演,本文綜合考慮了算法時間復雜度和空間復雜度,采用如圖3所示計算流程.
圖3 基于Spark的計算流程
網(wǎng)絡下載的影像文件以獨立影像的形式保存在分布式文件系統(tǒng)中(本文采用的是HDFS).為減少影像處理時節(jié)點間的數(shù)據(jù)傳輸,數(shù)據(jù)塊的大小一般按照影像文件的大小分塊.如數(shù)據(jù)容量最大為169 MB,分塊大小應至少設置為169 MB才能保證不會因文件分塊導致跨節(jié)點訪問.Spark作業(yè)開始時,影像文件以絕對路徑集合的形式傳入,經(jīng)并行化操作構建包含有n個分區(qū)的鍵值對彈性分布式數(shù)據(jù)集(以下簡稱RDD).其中,鍵名為每個文件的絕對路徑字符串,鍵值為相應的影像文件.利用第三方解析方案提取出每個影像文件中的波段數(shù)據(jù).針對每個影像的波段數(shù)據(jù),按照算法設計,結合Spark提供的轉換算子和動作算子按照劈窗算法執(zhí)行相同的波段組合函數(shù),進行海表溫度的反演.為了避免數(shù)據(jù)節(jié)點間的數(shù)據(jù)塊傳輸和RDD間的組合計算,從創(chuàng)建鍵值對RDD-0到生成鍵值對RDD-2的過程中,通過對影像文件分塊優(yōu)化、算法過程優(yōu)化和計算過程優(yōu)化實現(xiàn)RDD間的窄依賴關系.最終的反演結果保存到分布式文件系統(tǒng)中.
本文實驗數(shù)據(jù)采用MODIS L1B Terra星載數(shù)據(jù)(https://ladsweb.modaps.eosdis.nasa.gov/search/),數(shù)據(jù)空間范圍涵蓋山東半島、渤海灣一帶,時間范圍為2015年1月1日至2015年12月25日,共計6634景,總計1000 GB.由于本文采用的劈窗算法需要可見光波段參與計算,因此實驗數(shù)據(jù)均為白晝期間獲取的影像.
整個集群構建在相對封閉的千兆局域網(wǎng)中.集群采用主從式架構,使用商用臺式機作為節(jié)點硬件基礎.
主節(jié)點負責整個集群的任務提交、分配、管理與匯總,不參與數(shù)據(jù)計算過程.從節(jié)點負責數(shù)據(jù)的分布式存儲與實際計算.集群及節(jié)點詳細硬件配置如圖4和表1.
為了保持節(jié)點行為的一致性,所有節(jié)點均采用相同的軟件配置.操作系統(tǒng)選用的是CentOS,在其上構建程序運行所需的Java和Scala運行環(huán)境.Hadoop框架提供計算平臺所需的分布式文件系統(tǒng)HDFS和統(tǒng)一的資源調(diào)度機制YARN.軟件環(huán)境配置如表2.
實驗結果按照是否使用Spark集群計算框架,分為單機結果和集群結果.單機結果在單一計算節(jié)點上本地運行獲取,集群結果在YARN Cluster模式下獲取.每種結果均采用不同的數(shù)據(jù)量作為變量進行測試:10 GB(66 景)、50 GB(329 景)、100 GB(658 景)、500 GB(3347景)和1000 GB(6634景).每項數(shù)據(jù)均在相同實驗條件下重復三次,取平均值.具體實驗結果如表3.
圖4 Spark集群硬件體系架構
表1 集群節(jié)點主要硬件配置
表2 集群節(jié)點主要軟件配置
在單機模式下,Scala程序能夠?qū)崿F(xiàn)約每秒0.04 GB(或每秒0.29個影像文件)的處理能力.在加入Spark并行處理框架后,Scala程序能夠?qū)崿F(xiàn)約每秒0.40 GB(或每秒2.67個影像文件)的處理能力.總體上,在集群模式下影像處理的效率約為單機模式的10倍.就不同的數(shù)據(jù)量而言,當數(shù)據(jù)量較小時,由于集群啟動、并行化和任務調(diào)度等的開銷,處理效率低于平均水平.當數(shù)據(jù)量在50~500 GB時,影像處理效率呈現(xiàn)略微上升的態(tài)勢.但當數(shù)據(jù)量達到1000 GB時,影像的處理效率出現(xiàn)小幅度回落.可能在集群硬件資源達到飽和時,在相同分區(qū)數(shù)量下,單一分區(qū)的處理粒度加大,處理任務間的間隙、資源調(diào)度與任務分發(fā)延遲加大,導致了效率的下降.
表3 對比實驗結果
本文提出了一種將Spark大數(shù)據(jù)并行計算技術應用于海表溫度反演的方法.通過將自動化影像獲取過程、簡化算法流程和RDD窄依賴并行計算結合,實現(xiàn)了一種海表溫度快速反演的機制.通過對比單機模式和集群模式的處理效率,驗證了基于Apache Spark的海表溫度反演方法的快速計算能力.通過將大數(shù)據(jù)并行計算技術應用于遙感圖像處理,可以有效提高數(shù)據(jù)產(chǎn)品的更新頻率,為大范圍、長周期和高分辨率的海洋、氣象觀測提供良好的支持.本文采用的改進簡化劈窗算法和RDD窄依賴特性也可以應用于其他遙感產(chǎn)品生產(chǎn)和海量數(shù)據(jù)并行計算過程.