廖芳芳,雷雨桐,蘇永恒,劉富乾,管占磊,吳聆益
(1.航天宏圖信息技術(shù)股份有限公司,北京 100195;2.上海宏圖空間網(wǎng)絡(luò)科技有限公司,上海 201702)
面對(duì)爆炸式增長的遙感影像以及不同行業(yè)應(yīng)用的復(fù)雜算法和業(yè)務(wù)流程,遙感數(shù)據(jù)的單機(jī)處理變得困難[1-2]。為解決這一問題,云計(jì)算技術(shù)被越來越多地應(yīng)用于遙感領(lǐng)域,旨在提升海量遙感數(shù)據(jù)的處理效率[3-10]。國外產(chǎn)品有谷歌地球引擎(Google Earth Engine,GEE)、ArcGIS online、ENVI Services Engine等[11-14],國內(nèi)產(chǎn)品有EarthDataMiner、PIE-Engine、OpenRS-Cloud 等[15]。
該文基于云原生技術(shù)框架,探索遙感算法模型快速集成以及全流程任務(wù)編排技術(shù),并通過資源的動(dòng)態(tài)調(diào)度實(shí)現(xiàn)遙感計(jì)算任務(wù)的高速并行處理,提供高效的海量遙感數(shù)據(jù)批處理和專題產(chǎn)品自動(dòng)化生產(chǎn)解決方案。
為滿足海量遙感影像在線處理過程中算法擴(kuò)展、流程編排、并行調(diào)度和任務(wù)監(jiān)控的需求,該文構(gòu)建了遙感數(shù)據(jù)處理并行調(diào)度管理平臺(tái),圖1 展示了平臺(tái)的基本架構(gòu),其核心內(nèi)容包括生產(chǎn)消息、消息調(diào)度引擎、并行計(jì)算集群三部分,分別對(duì)應(yīng)遙感數(shù)據(jù)處理流程編排過程中生產(chǎn)消息、收發(fā)消息和消費(fèi)消息三個(gè)過程。其中生產(chǎn)消息主要指引接外部專題數(shù)據(jù)、各種流程任務(wù)觸發(fā)指令輸入、用戶干預(yù)指令等信息快速推入消息調(diào)度集群;消息調(diào)度引擎是消息調(diào)度集群的核心,主要負(fù)責(zé)數(shù)據(jù)的接收、存儲(chǔ)和快速分發(fā);并行計(jì)算集群是消息的消費(fèi)者,負(fù)責(zé)從消息調(diào)度引擎訂閱消息并進(jìn)行消息的處理。
圖1 并行調(diào)度管理平臺(tái)技術(shù)架構(gòu)
并行調(diào)度管理技術(shù)流程如圖2 所示。并行調(diào)度管理技術(shù)采用云原生開發(fā)框架,以Kubernetes 作為底層運(yùn)行平臺(tái),容器作為算法模型封裝載體,構(gòu)建流程驅(qū)動(dòng)和資源調(diào)度雙層架構(gòu),采用標(biāo)準(zhǔn)OpenAPI/RESTful API 業(yè)務(wù)集成,實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)可使用資源的管理與調(diào)度,以及遙感數(shù)據(jù)處理流程任務(wù)的調(diào)度、分發(fā)、執(zhí)行與監(jiān)控功能。在并行調(diào)度管理平臺(tái)中,用戶自定義的遙感數(shù)據(jù)處理流程被轉(zhuǎn)換成JSON 格式的模型描述信息,模型描述信息傳遞給后臺(tái)形成流程任務(wù),工作流服務(wù)對(duì)全部的流程任務(wù)狀態(tài)進(jìn)行管理和監(jiān)控,并根據(jù)流程任務(wù)狀態(tài)將其分配給工作流引擎。工作流引擎通過Batch 算法將流程任務(wù)按批次分布到各節(jié)點(diǎn);基于DAG 流程調(diào)度算法,解析每個(gè)流程任務(wù)的模型描述信息,識(shí)別調(diào)用算法信息及算法執(zhí)行順序結(jié)構(gòu)信息;Pipeline 分發(fā)執(zhí)行節(jié)點(diǎn)上的算法任務(wù)。算法模型插件服務(wù)提供了算法模型標(biāo)準(zhǔn)化接口,實(shí)現(xiàn)行業(yè)專題算法包的快速集成和彈性擴(kuò)展。算法模型通過鏡像服務(wù)進(jìn)行部署,通過Kubernetes API Server 進(jìn)行以Pod 為基本單位的算法集群調(diào)度。
圖2 并行調(diào)度管理技術(shù)流程
1.1.1 消息調(diào)度引擎
消息調(diào)度引擎是遙感數(shù)據(jù)處理并行調(diào)度管理平臺(tái)的中樞神經(jīng)系統(tǒng),負(fù)責(zé)遙感數(shù)據(jù)處理任務(wù)流程的消息接收、存儲(chǔ)和分發(fā)。將消息按不同的專題進(jìn)行存儲(chǔ),并持久存儲(chǔ)到文件系統(tǒng)。當(dāng)外部系統(tǒng)需要進(jìn)行并行計(jì)算時(shí),外部系統(tǒng)作為消息的生產(chǎn)者,通過消息調(diào)度引擎,把遙感數(shù)據(jù)計(jì)算任務(wù)加入到消息隊(duì)列中。然后消息調(diào)度引擎通過對(duì)消息隊(duì)列的排隊(duì)、去重后,進(jìn)入消息緩存中。并行計(jì)算集群作為消息的消費(fèi)者,通過對(duì)消息的并行消費(fèi)和計(jì)算管理,執(zhí)行遙感數(shù)據(jù)處理任務(wù)流程,達(dá)到并行計(jì)算的目的。消息調(diào)度引擎主要管理的消息有用戶消息、訂閱關(guān)系、隊(duì)列調(diào)度、緩存管理、日志監(jiān)控消息等。
1.1.2 并行計(jì)算集群
遙感數(shù)據(jù)處理并行調(diào)度管理平臺(tái)的并行計(jì)算集群以多計(jì)算節(jié)點(diǎn)構(gòu)建計(jì)算資源池,并采取分組的方式訂閱消費(fèi)專題數(shù)據(jù)。每一個(gè)消費(fèi)者組可以認(rèn)為是一種遙感處理流程的多任務(wù)集群,能夠并行地消費(fèi)指定專題數(shù)據(jù)并完成計(jì)算工作。由于計(jì)算平臺(tái)主要接收和處理大規(guī)模的遙感數(shù)據(jù)并行計(jì)算任務(wù),當(dāng)接收到這些任務(wù)時(shí),集群通過并行調(diào)用任務(wù)算法,完成大規(guī)模遙感數(shù)據(jù)處理任務(wù)。并行計(jì)算管理主要提供任務(wù)管理、任務(wù)編排、任務(wù)部署、任務(wù)監(jiān)控、資源管理等服務(wù),實(shí)現(xiàn)對(duì)任務(wù)的監(jiān)控管理和對(duì)資源的合理利用。
遙感數(shù)據(jù)處理并行調(diào)度管理平臺(tái)通過構(gòu)建消息調(diào)度引擎和并行計(jì)算集群,具備高并發(fā)遙感數(shù)據(jù)處理任務(wù)快速實(shí)現(xiàn)功能、支持CPU/GPU/流計(jì)算等并行模式、支持多種任務(wù)觸發(fā)機(jī)制、支持資源的彈性伸縮、支持大規(guī)模批量數(shù)據(jù)的快速吞吐、具有超高的穩(wěn)定性,實(shí)現(xiàn)遙感數(shù)據(jù)處理任務(wù)自動(dòng)化編排、自動(dòng)化調(diào)動(dòng)、多模式調(diào)度、任務(wù)監(jiān)控和任務(wù)緩存功能。
工作流引擎負(fù)責(zé)流程任務(wù)解析和資源調(diào)度,對(duì)于工作流執(zhí)行至關(guān)重要[16]。該文采用的工作流引擎是一種基于云原生的算法流程編排調(diào)度引擎,可分為三層架構(gòu):
1)存儲(chǔ)層:狀態(tài)機(jī)服務(wù)使用分布式隊(duì)列來管理預(yù)定的遙感算法任務(wù),并且使用動(dòng)態(tài)隊(duì)列來管理分布式延遲隊(duì)列。
2)服務(wù)層:工作流服務(wù)提供遙感數(shù)據(jù)處理任務(wù)相關(guān)的注冊(cè)、管理、監(jiān)控等服務(wù);任務(wù)服務(wù)提供對(duì)遙感數(shù)據(jù)處理任務(wù)的注冊(cè)、管理等服務(wù);狀態(tài)機(jī)服務(wù)用來選擇遙感數(shù)據(jù)處理流程下一步應(yīng)該執(zhí)行的算法,更新工作流執(zhí)行狀態(tài);隊(duì)列服務(wù)提供動(dòng)態(tài)可擴(kuò)展的虛擬隊(duì)列服務(wù)。
3)API 層:工作流相關(guān)API 負(fù)責(zé)啟動(dòng)、控制流程;元數(shù)據(jù)相關(guān)API 負(fù)責(zé)定義任務(wù)和工作流藍(lán)圖;任務(wù)相關(guān)API 負(fù)責(zé)獲取流程中的任務(wù)詳情,輪詢、更新任務(wù)狀態(tài)。
基于云原生的算法流程編排調(diào)度引擎的核心是狀態(tài)機(jī)服務(wù),也稱為決策者服務(wù)。當(dāng)工作流事件發(fā)生時(shí)(例如遙感算法完成、失敗等),決策器將根據(jù)工作流定義和工作流的當(dāng)前狀態(tài)選擇下一算法,并發(fā)送到相應(yīng)的算法/任務(wù)隊(duì)列中或更新工作流的狀態(tài),來進(jìn)一步驅(qū)動(dòng)流程執(zhí)行?;谠圃倪b感大數(shù)據(jù)處理算法流程編排調(diào)度引擎體系架構(gòu)如圖3 所示。
圖3 基于云原生的遙感大數(shù)據(jù)處理算法流程編排調(diào)度引擎體系架構(gòu)
基于云原生的算法任務(wù)執(zhí)行模型是基于RPC 通信模型的,工作節(jié)點(diǎn)與引擎服務(wù)分布在不同的機(jī)器上。工作節(jié)點(diǎn)通過HTTP 協(xié)議與引擎服務(wù)器通信,并使用輪詢模型來獲取任務(wù)隊(duì)列中的待執(zhí)行任務(wù)。
工作節(jié)點(diǎn)實(shí)現(xiàn)了對(duì)任務(wù)輪詢的冪等性,并且工作節(jié)點(diǎn)和引擎服務(wù)都是無狀態(tài)的,因此非常易于擴(kuò)展,可以根據(jù)虛擬隊(duì)列中任務(wù)的排隊(duì)情況實(shí)現(xiàn)工作節(jié)點(diǎn)的自動(dòng)伸縮,可以輕松支持?jǐn)?shù)以萬計(jì)的流程并行執(zhí)行。算法任務(wù)執(zhí)行完成后同樣通過基于HTTP協(xié)議的Restful API 告知管理/執(zhí)行服務(wù),管理/執(zhí)行服務(wù)接到通知后通過算法流程編排調(diào)度引擎來調(diào)度流程下一步的執(zhí)行。算法任務(wù)執(zhí)行模型如圖4 所示。
圖4 基于云原生的算法任務(wù)執(zhí)行模型
工作節(jié)點(diǎn)和引擎服務(wù)完全通過無狀態(tài)的HTTP協(xié)議進(jìn)行通信,整個(gè)流程驅(qū)動(dòng)的過程完全解耦,解決了基于消息中間件單個(gè)消息處理時(shí)間過長的問題,易于擴(kuò)展,尤其適用于遙感大數(shù)據(jù)處理算法的流程編排和調(diào)度。
該文基于遙感數(shù)據(jù)處理并行調(diào)度管理技術(shù),構(gòu)建了基于云原生的遙感數(shù)據(jù)處理云服務(wù)平臺(tái),實(shí)現(xiàn)面向遙感大數(shù)據(jù)的在線可視化流程定制、自動(dòng)化生產(chǎn)服務(wù),同時(shí)提供了算法擴(kuò)展、流程編排、并行調(diào)度和任務(wù)監(jiān)控功能。
針對(duì)遙感影像類型頗多,處理流程差異較大的特點(diǎn),建立可視化流程設(shè)計(jì)管理系統(tǒng),方便用戶直觀地定制遙感數(shù)據(jù)處理流程,并對(duì)流程進(jìn)行管理、調(diào)度和監(jiān)控。平臺(tái)通過調(diào)度組件化的算法模塊,對(duì)遙感數(shù)據(jù)處理和專題產(chǎn)品生產(chǎn)進(jìn)行流程化編排,結(jié)合業(yè)務(wù)流程配置,建立或調(diào)整業(yè)務(wù)流程,快速實(shí)現(xiàn)遙感數(shù)據(jù)批量處理及生產(chǎn)。主要實(shí)現(xiàn)的功能有流程設(shè)計(jì)功能、流程調(diào)度功能、流程監(jiān)控功能、流程查詢功能。
平臺(tái)實(shí)現(xiàn)了靈活的可視化流程構(gòu)建方式,提供可視化流程編排工具,支持用戶自定義遙感數(shù)據(jù)處理生產(chǎn)線。流程編排過程操作便捷,算法用拖拽方式組合,參數(shù)通過流程線傳遞,所見即所用;支持串行、并行、分支及判斷多種復(fù)雜處理流程的構(gòu)建;支持自動(dòng)化執(zhí)行算法與人機(jī)交互(精細(xì)作業(yè))算法串聯(lián),實(shí)現(xiàn)WEB 與客戶端無縫銜接;提供用戶在流程編排過程中,根據(jù)業(yè)務(wù)需要定義生產(chǎn)參數(shù)(例如不同衛(wèi)星的分辨率),簡化任務(wù)創(chuàng)建參數(shù)設(shè)置過程。生產(chǎn)任務(wù)執(zhí)行時(shí),系統(tǒng)自動(dòng)化調(diào)度生產(chǎn)線進(jìn)行生產(chǎn),用戶不需要關(guān)心數(shù)據(jù)流向。
平臺(tái)實(shí)現(xiàn)遙感算法的集成、更新、維護(hù)、共享等管理服務(wù)功能。提供算法模型標(biāo)準(zhǔn)化接口,實(shí)現(xiàn)行業(yè)專題算法的快速集成。支持對(duì)Python、C++、IDL、Matlab 等多種語言編寫的算法插件進(jìn)行封裝,支持將多源異構(gòu)數(shù)據(jù)處理、專題產(chǎn)品制作等算法封裝成容器,在平臺(tái)中調(diào)度管理,方便用戶自主上傳注冊(cè)算法插件,很好地解決了多源遙感數(shù)據(jù)在線處理能力擴(kuò)展問題。
算法插件要求包括算法的可執(zhí)行程序、依賴庫以及JSON 格式的配置文件,以zip 包的形式上傳注冊(cè),平臺(tái)解析算法插件后算法即被加入算法庫中,可實(shí)現(xiàn)在流程中調(diào)用。算法插件的配置文件定義了算法的標(biāo)識(shí)、版本、環(huán)境、資源、參數(shù)等內(nèi)容。
集群計(jì)算運(yùn)行管理功能模塊主要負(fù)責(zé)依據(jù)遙感數(shù)據(jù)批量處理的業(yè)務(wù)量推算支撐硬件環(huán)境資源(包括計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源等)的需求,基于軟硬件環(huán)境構(gòu)建集群運(yùn)行環(huán)境,科學(xué)開展任務(wù)管理和作業(yè)調(diào)度,為遙感數(shù)據(jù)產(chǎn)品并行化生產(chǎn)提供技術(shù)支持。主要實(shí)現(xiàn)的功能有運(yùn)行支撐資源估算功能、任務(wù)管理功能、系統(tǒng)資源監(jiān)控功能。
運(yùn)行支撐資源估算能夠?qū)崿F(xiàn)計(jì)算資源、網(wǎng)絡(luò)資源、存儲(chǔ)資源和作業(yè)資源估算的功能,為遙感產(chǎn)品生產(chǎn)調(diào)查管理和資源優(yōu)化配置提供數(shù)據(jù)支撐。任務(wù)管理功能主要負(fù)責(zé)接收遙感產(chǎn)品生產(chǎn)任務(wù)要求,通過自動(dòng)解析、分析生成具體作業(yè)調(diào)度單,并下達(dá)作業(yè)并行調(diào)度,同時(shí)針對(duì)任務(wù)流程執(zhí)行的全過程進(jìn)行監(jiān)控,顯示算法執(zhí)行狀態(tài)。系統(tǒng)資源監(jiān)控功能主要實(shí)現(xiàn)對(duì)集群的靜態(tài)和動(dòng)態(tài)信息進(jìn)行實(shí)時(shí)監(jiān)控,主要包括內(nèi)存、CPU、存儲(chǔ)空間使用情況,數(shù)據(jù)上傳下載速率,以及節(jié)點(diǎn)負(fù)載狀態(tài)等內(nèi)容,為新任務(wù)的資源配置提供基本的參考條件。
該文構(gòu)建了遙感數(shù)據(jù)處理云服務(wù)平臺(tái)并進(jìn)行了平臺(tái)性能測試,測試環(huán)境如表1 所示。測試數(shù)據(jù)選用GF1-PMS 影像(全色+多光譜)、GF1-WFV 影像(多光譜)和GF2 影像(全色+多光譜),測試流程為數(shù)據(jù)解壓縮、影像匹配、正射校正、影像融合到元數(shù)據(jù)生產(chǎn)全流程,逐景批量全自動(dòng)生產(chǎn)。
表1 測試環(huán)境
分別通過單機(jī)節(jié)點(diǎn)和該文系統(tǒng)的多節(jié)點(diǎn)并行計(jì)算,執(zhí)行上述遙感影像全自動(dòng)批量生產(chǎn)流程,測試結(jié)果如圖5 所示。由圖5 可知,當(dāng)數(shù)據(jù)量較小時(shí),該文系統(tǒng)與單機(jī)節(jié)點(diǎn)計(jì)算效率差別不大,這是由于服務(wù)啟動(dòng)時(shí)間的存在降低了平均處理速率;當(dāng)數(shù)據(jù)量大于100 GB 時(shí),該文系統(tǒng)計(jì)算耗時(shí)明顯低于單機(jī)節(jié)點(diǎn)耗時(shí)。隨著數(shù)據(jù)量增加,單機(jī)節(jié)點(diǎn)計(jì)算耗時(shí)急劇增加,該文系統(tǒng)計(jì)算耗時(shí)的加速平緩且遠(yuǎn)低于單機(jī)節(jié)點(diǎn),證明了該文技術(shù)框架的可行性。
圖5 單機(jī)節(jié)點(diǎn)與該文系統(tǒng)多節(jié)點(diǎn)并行計(jì)算測試結(jié)果對(duì)比
針對(duì)遙感影像處理過程中數(shù)據(jù)量大、數(shù)據(jù)處理流程復(fù)雜、行業(yè)專題算法差異性大等問題,提出基于云基礎(chǔ)設(shè)施的數(shù)據(jù)處理并行調(diào)度管理技術(shù),實(shí)現(xiàn)了遙感數(shù)據(jù)處理全流程編排和算法擴(kuò)展?;谠圃乃惴鞒叹幣耪{(diào)度引擎被證明適用于遙感大數(shù)據(jù)處理算法的流程編排和調(diào)度,高效靈活的任務(wù)調(diào)度管理機(jī)制實(shí)現(xiàn)了對(duì)大規(guī)模服務(wù)器和計(jì)算資源的部署、調(diào)度及監(jiān)控管理,保障了遙感數(shù)據(jù)生產(chǎn)流程的快速并行計(jì)算能力,且具有低耦合、易于擴(kuò)展的優(yōu)點(diǎn)。以容器為算法模型封裝載體,有效解決了不同算法模型因運(yùn)行環(huán)境和編譯語言差異造成的集成部署問題。測試結(jié)果表明,該文提出的技術(shù)方案可行,能夠滿足海量遙感數(shù)據(jù)高效批處理的需求。