王敬平 沈晨 周潔 黃子君
(中國電子科技集團公司第三十二研究所,上海 201800)
隨著遙感衛星技術和成像技術的不斷發展,“高分”系列衛星覆蓋了從全色、多光譜到高光譜,從光學到雷達,從太陽同步軌道到地球同步軌道等多種類型,構成了一個具有高空間分辨率、高光譜分辨率、高時相分辨率和高輻射分辨率能力的對地觀測系統。高分辨率遙感數據進行數據處理,已不是簡單的數據密集型或計算密集型模式,而是數據密集和計算密集的混合模式,高分影像地面數據處理系統已逐步由集中式的高性能計算模式向分布式的存儲及計算模式發展。本文從高分影像分布式處理的實際需求出發,分析了開源分布式存儲系統HDFS的存儲特性,圍繞影像分布式計算進行了存儲優化,改進后的HDFS分布式文件系統能夠較好的支撐影像分布式計算,提高了地面影像數據處理的效率。

圖2 HDFS的數據分塊圖解
1.1.1 HDFS分布式存儲
HDFS(Hadoop Distribute File System),是為以流的方式存取大文件而設計的,適用于GB、TB及PB級的數據存儲,具有一次寫多次讀的特性。HDFS采用主從(Master/Slave)的架構模型,如圖 1所示,一個HDFS集群是由一個Namenode(名稱節點)和多個Datanode(數據節點)組成的(不考慮Namenode的高可用配置)。名稱節點作為主服務器,主要負責客戶端對文件的訪問操作和文件系統命名空間的管理,數據節點主要負責數據的實際存儲。
1.1.2 HDFS數據分塊
HDFS將文件劃分成不同的塊(Block),數據塊大小默認為64MB,可以在Hadoop的配置文件hdfs-site.xml中對這個值(dfs.Block.size)進行自定義,單位是Byte。
HDFS在順序劃分文件的時候,當文件最后一個塊沒有達到一個標準塊的大小時,也會被視為其本身大小的一個塊,而不是占用一個標準塊的存儲空間,保證文件在HDFS上存儲時占用的實際存儲空間與文件大小一致。如圖2,以一個300MB大小的文件為例,在Block size被設置為64MB的HDFS上會被如下分割成5個文件塊:
MapReduce是一種分布式計算模型,主要是解決海量數據的計算問題,將復雜的并行計算過程高度地抽象為兩個函數:Map和Reduce。Hadoop中的MapReduce是一個使用簡單的軟件框架,基于MapReduce編寫出來的應用程序可以運行在大規模集群上,并以—種可靠容錯的方式并行處理的數據集可達到上T級別、P級別,實現了Hadoop在集群上的任務和數據的并行處理與計算。


圖4 高分辨率影像并行計算設計思路

圖5 基于HDFS的影像數據分塊(a)
如圖3所示,MapReduce處理大數據集的過程,把大數據集分解成若干小數據集,每一個(或幾個)數據集分別由集群中的一個節點進行處理,并生成中間結果,這些中間結果隨后又由大量的節點合并,形成最終結果。
高分辨率影像并行計算建立在海量分布式存儲之上,使用數據節點作為計算節點,盡最大努力保證在那些存儲了數據的節點上執行計算任務。這種方式可有效地減少數據在網絡中的傳輸,降低任務對網絡帶寬的需求,避免使網絡帶寬成為瓶頸,所以“本地計算”可以說是節約帶寬最有效的方式。
將要處理的影像文件語義分成多個輸入分片,在多臺數據節點上同時進行計算。作業管理節點為每個輸入分片構建一個Map任務,最后再由一個或多個Reduce任務將所有Map任務處理的結果進行匯總。
如圖4所示,三個數據分片分別存儲在三個數據節點上,作業被分成三個Map任務,一個Reduce任務。三個Map任務首先并行執行,產生的中間文件通過網絡傳輸給另一個數據節點,執行Reduce任務,最后把輸出結果寫入到海量分布式系統中。
在GeoTIFF影像的文件頭中,存儲了用于描述影像的所有元數據信息,包括像元數據的位數、數據偏移量、調色板數據、數據壓縮方式、圖像形態、圖像行列編排方式、圖像通道(波段)、分辨率、坐標、投影方式等。這些元數據信息在影像的識別、解析、處理中發揮著重要的作用,失去這些元數據信息將導致像元數據難以被識別及利用。
如圖5所示,采用HDFS的分塊策略對GeoTIFF影像進行數據分塊(假設影像數據300MB,數據分塊大小為64MB),文件被分成5個Block,并將會被存儲到不同的Datanode節點上。
從圖5中,可以發現只有其中第一個Block中包含有影像的元數據,且該元數據為完整影像的元數據信息,但其他的數據塊僅為二進制流數據,未包含任何元數據信息。基于HDFS的影像數據分塊,在分布式計算運行時,負責計算Block2到Block5的影像處理算法將只能拿到文件塊中存儲的字節流,不能獲取偏移量、數據類型、分辨率、坐標等信息,該影像處理算法也就無法識別和處理該數據塊的圖像像元。
如圖6所示,也可以調整HDFS中的dfs.Block.size的大小,使其大小超過影像的大小(如設置dfs.Block.size = 320MB),遙感影像文件會完整的存儲在一個文件塊中,相應的影像處理算法即可以完整的讀取影像的元數據信息及像元數據,并對影像進行操作。但高分辨率影像一般分景存儲,而每景數據一般都在幾百MB,甚至GB以上,若設置dfs.Block.size為相應大小,這樣也就無法對影像數據進行細粒度的分布式并行計算,也失去了使用HDFS存儲的意義。
因此,在高分辨率影像分布式并行計算時,我們應該著重分析和優化:對高分辨率影像進行語義分割,提高影像的處理效率,并對處理后的影像仍然存儲在分布式存儲系統中,以及提供有效的語義合并手段。

圖6 基于HDFS的影像數據分塊(b)

圖7 高分影像語義分塊三種方式
高分辨率影像的語義分塊的目標是解決高分辨率影像在分塊之后,依然能夠作為獨立高分影像被影像處理算法識別及處理,并且能夠適應基于Hadoop的分布式存儲與計算。
高分辨率影像存在三種圖像數據劃分方式,如圖7所示,其中(1)為矩形塊;(2)表示水平條帶;(3)為豎直條帶,在處理不同影像時,可以結合實際處理任務來選何種劃分方法:像素級的處理并行化分支較小,進行數據劃分時較為簡單,特征處理如線條所示,按照豎直條帶和水平條帶來劃分,在目標級、特征級處理期間,需要結合相應的問題、并行計算支撐環境來選擇具體的劃分方式。需要特別關注的是,為了適應一些類型的圖像處理算法(例如卷積運算),影像在切分時相鄰條帶之間也可以保留一定量的冗余,例如矩形塊方式切割,數據塊的有效區域是a*b,但切割保留的區域則要包含冗余區域,圖中分塊0-0的保留區域是(a+△a)*(b+△b),分塊1-1的保留區域是(△a+a+△a)*(△b+b+△b)。
如圖8所示,高分辨率影像語義分塊與合并的流程示意圖:
(1)語義分塊:在獲取原始影像數據的元數據信息和像元數據后,采用圖7中的一種分塊方式(例如矩形分塊),生成多個Block1、Block2、Block3等,然后依據原始影像數據的元數據信息和分塊位置信息,分別對各個Block進行影像數據信息重建,形成各個獨立分塊影像文件,可被影像處理算法識別及處理;
(2)語義合并:各個分塊影像數據經過影像處理之后(例如影像配準、幾何校正等),生成新的影像文件數據,在解析獲得各個新的影像文件的元數據信息和像元數據,依據各個分塊位置信息(含冗余區域信息),合并得到新影像數據文件,并更新影像數據的元數據信息。

圖8 高分辨率影像的語義分塊與合并
(1)語義分塊、語義合并函數。使用GDAL構建Image Semantic Block、Image Semantic Merge兩個函數,用于實現對高分影像數據的語義分塊和語義合并功能。
(2)HDFS Client。在LibHDFS接口中,重寫Write和Read接口函數,集成ImageSemanticBlock、ImageSemanticMerge函數,改造HDFS的分塊和合并的機制,并提供能夠獨立訪問HDFS數據塊影像的獨立接口IndependentBlockRead、IndependentBlockWrite。
(3)HDFS Namenode。在數據文件元數據信息中,需添加每個影像分塊位于整個影像中的位置信息,在INodeFile類中增加blockArea信息和getBlockArea函數。
(4)HDFS Datanode。在HDFS寫入數據塊時,會對所有分塊計算校驗和,并在讀取時驗證校驗和,需在ChecksumFileSystem類中,增加影像分塊元數據校驗和變量metaDataChecksum和setMetaDataChecksum函數。
本文介紹了高分辨率影像的分布式存儲及并行計算的原理及過程,分析了傳統HDFS存儲無法適用高分影像分布式并行計算的原因,研究了高分辨率影像的語義分塊與語義合并的方法與技術,并對HDFS進行了改造與優化,最終實現了面向分布式并行計算的高分辨率影像的分布式存儲,有效支撐并提高了高分影像的分布式處理效率。由于開源HDFS系統非常龐大,我們在對HDFS的改造過程中,存在不能完全理解HDFS的所有源代碼,所以圍繞HDFS的改造與優化的穩定性、可靠性以及代碼的影響域,還有待進一步測試與驗證。
[1]孟祥輝,李浩川,姚璐,王少坤.分布式并行計算技術在遙感數據處理中的應用[J].電子技術與軟件工程,2016,(24):174.
[2]馬偉鋒,李偉.遙感影像數據并行計算中數據分配策略研究[J].浙江工業大學學報,2016,(6):270-274.
[3] 程付超,苗放,楊文暉,陳墾.適用于海量遙感影像的分布式計算框架設計與實現[J].物探化探計算技術,2014,(5):358-361.
[4]劉建華,毛政元.高空間分辨率光學遙感影像分割方法研究綜述[J].遙感信息,2009,(6):95-101.
[5]PLAZAA, DU Q, CHANG Y L, et al. High performance computing for hyperspectral remote sensing[J].IEEE Journal of Selected Topics in Applied Earth Observa-tions and Remote Sensing,2011,4(3):528-544.