高 微,楊 婷*,楊 溯,吳浩偉
(1.自然資源部第三大地測量隊,四川 成都 610100)
近年來,地理空間數(shù)據(jù)的數(shù)據(jù)量呈現(xiàn)爆炸式增長[1],數(shù)據(jù)密集、計算密集、并發(fā)密集和時空密集已成為GIS軟件技術(shù)與應(yīng)用面臨的挑戰(zhàn)[2]。密集的數(shù)據(jù)尤其是遙感影像數(shù)據(jù)[3],需耗費(fèi)大量的人力物力和時間進(jìn)行處理;且在實際測繪生產(chǎn)中,自主研發(fā)的針對數(shù)據(jù)處理的GIS 應(yīng)用程序往往僅支持單機(jī)執(zhí)行,時間消耗長、處理效率低,局域網(wǎng)內(nèi)的計算資源也得不到充分利用。為高效解決測繪生產(chǎn)中個性化GIS 應(yīng)用程序地理數(shù)據(jù)處理效率低的問題,本文充分利用局域網(wǎng)內(nèi)的計算資源,通過融合Docker容器技術(shù)[4-5]與分布式任務(wù)調(diào)度技術(shù),搭建了基于Docker的輕量級地理數(shù)據(jù)分布式處理框架,以接口的方式為地理數(shù)據(jù)處理用戶提供分布式處理能力,輕量靈活、可跨平臺。通過實際測試發(fā)現(xiàn),該框架能有效提高作業(yè)機(jī)器資源利用率,提升地理數(shù)據(jù)處理效率。
分布式任務(wù)調(diào)度技術(shù)可實現(xiàn)在集群環(huán)境下多節(jié)點任務(wù)的靈活分配與處理,是數(shù)據(jù)分布式處理的核心,包括資源調(diào)度、任務(wù)分割、任務(wù)分配、狀態(tài)探測、負(fù)載均衡等內(nèi)容。本文搭建的是一個基于.NET Core的地理數(shù)據(jù)分布式處理框架,支持將作業(yè)分割后分發(fā)到多臺服務(wù)器并行處理,可成倍提升海量數(shù)據(jù)的處理速度。地理數(shù)據(jù)分布式處理框架作業(yè)處理程序包括分割任務(wù)、執(zhí)行任務(wù)、合并任務(wù)3 部分,包含節(jié)點和管理界面兩個核心程序,其中節(jié)點程序是控制臺程序;管理界面程序是網(wǎng)頁端程序,負(fù)責(zé)管理操作作業(yè),包括查看集群節(jié)點、上傳作業(yè)包、監(jiān)控作業(yè)運(yùn)行、下載作業(yè)結(jié)果等。
針對常規(guī)分布式地理數(shù)據(jù)處理框架與專業(yè)軟件集成度高、跨平臺處理能力弱、普適性弱等問題,本文在充分分析地理數(shù)據(jù)處理流程的基礎(chǔ)上,提出了分割、分發(fā)、處理、匯聚的任務(wù)處理基本流程,并研究了一種輕量級虛擬化技術(shù)——Docker 容器技術(shù)[6],可完成虛擬機(jī)能完成的所有功能[7]。由于在創(chuàng)建時Dock?er容器不會虛擬獨(dú)立的系統(tǒng)內(nèi)核,而是共用主機(jī)的系統(tǒng)內(nèi)核,因此為應(yīng)用節(jié)約了虛擬環(huán)境系統(tǒng)部署的資源,具有輕量、資源利用率高、啟動時間短、遷移速度快、維護(hù)成本低和擴(kuò)展性優(yōu)良等優(yōu)點[8-10]。同時,Docker容器在任何操作系統(tǒng)上都是一致的,將應(yīng)用程序運(yùn)行在Docker容器上即可實現(xiàn)跨平臺、跨服務(wù)器的操作[11]。基于Docker 容器的特性,本文將GIS 應(yīng)用程序運(yùn)行在各輕量且相互隔離的Docker容器上,以實現(xiàn)分布式計算與資源的高效利用。
本文構(gòu)建的地理數(shù)據(jù)分布式處理框架的基本原理為將地理數(shù)據(jù)處理作業(yè)在邏輯上劃分為若干個分片,并通過作業(yè)分片調(diào)度器將作業(yè)分片指派給特定的執(zhí)行節(jié)點;執(zhí)行節(jié)點通過任務(wù)調(diào)度狀態(tài)觸發(fā)執(zhí)行作業(yè),執(zhí)行時將分片序號和參數(shù)作為參數(shù)傳入(圖1)。作業(yè)的實施邏輯需分析分片序號和分片參數(shù),并以此為依據(jù)調(diào)用具體的實現(xiàn),如一個批量處理影像作業(yè),可劃分0號分片處理1~10號影像數(shù)據(jù),1號分片處理11~20號影像數(shù)據(jù)。
圖1 框架基本原理
地理數(shù)據(jù)分布式處理框架包括調(diào)度中心和執(zhí)行器兩大部分,調(diào)度中心是一個網(wǎng)頁端的管理系統(tǒng),是整個調(diào)度系統(tǒng)的大腦,主要負(fù)責(zé)管理調(diào)度信息、按照調(diào)度配置發(fā)出調(diào)度請求、將作業(yè)任務(wù)分配到各執(zhí)行器,支持可視化、簡單且動態(tài)的管理調(diào)度信息,包括任務(wù)管理、執(zhí)行器管理、日志管理等功能;執(zhí)行器則負(fù)責(zé)接收調(diào)度請求并執(zhí)行任務(wù)。本文構(gòu)建的分布式任務(wù)調(diào)度總體架構(gòu)見圖2。
圖2 分布式任務(wù)調(diào)度總體架構(gòu)
基于Docker的地理數(shù)據(jù)分布式處理平臺調(diào)度中心與任務(wù)解耦,自身不執(zhí)行任務(wù),而是將任務(wù)以作業(yè)包的形式分發(fā)至各執(zhí)行器,性能不再受限于任務(wù)模塊,可提高系統(tǒng)的可用性和穩(wěn)定性。平臺調(diào)度中心與各執(zhí)行器之間的對應(yīng)關(guān)系見圖3。
圖3 調(diào)度中心與各執(zhí)行器的關(guān)系圖
地理數(shù)據(jù)分布式處理框架為GIS 應(yīng)用程序提供了標(biāo)準(zhǔn)的數(shù)據(jù)接口與處理接口,用戶根據(jù)自身業(yè)務(wù)需求,利用接口實現(xiàn)地理數(shù)據(jù)處理應(yīng)用,并結(jié)合管理應(yīng)用程序?qū)崿F(xiàn)地理數(shù)據(jù)分布式處理??傮w技術(shù)流程為:式處理框架的接口規(guī)范編寫,主要包括分割任務(wù)、執(zhí)行任務(wù)、合并任務(wù)3 部分,分別按照框架規(guī)定的方法名稱和輸入輸出類型,實現(xiàn)應(yīng)用程序內(nèi)部邏輯;②部署環(huán)境,在Docker 宿主機(jī)器上部署GIS 應(yīng)用程序所需的運(yùn)行環(huán)境,部署成功后啟動執(zhí)行器監(jiān)測任務(wù);③分發(fā)任務(wù),將GIS 應(yīng)用程序編譯后進(jìn)行打包,以作業(yè)包的形式分發(fā)至Docker集群進(jìn)行處理;④結(jié)果下載,將集群各節(jié)點處理情況匯聚成用戶的最終結(jié)果,用戶按需進(jìn)行資源下載。
①規(guī)范程序,GIS 應(yīng)用程序需嚴(yán)格按照地理數(shù)據(jù)分布
以柵格數(shù)據(jù)裁切為例,本文對比測試了地理數(shù)據(jù)分布式處理框架作業(yè)模式和傳統(tǒng)單機(jī)作業(yè)模式的效率。案例采用6 組柵格影像,數(shù)據(jù)量約為50 GB,裁切為6 組規(guī)整的圖斑,分3 組測試,每組測試6 次。測試期間測試電腦除進(jìn)行柵格數(shù)據(jù)裁切外不做任何其他操作,測試組環(huán)境、執(zhí)行時間等信息見表1 所示,可以看出,相較于單機(jī)作業(yè),該框架能減少數(shù)據(jù)處理時間,提升地理信息數(shù)據(jù)處理效率。
表1 測試環(huán)境、執(zhí)行時間信息統(tǒng)計
基于Docker 的輕量級地理數(shù)據(jù)分布式處理框架,以接口的方式為地理數(shù)據(jù)處理用戶提供分布式處理能力,用戶不再考慮分布式地理程序的設(shè)計與實現(xiàn),只需按需定制數(shù)據(jù)處理算法,即可快速實現(xiàn)一個地理數(shù)據(jù)分布式處理應(yīng)用,從而充分利用閑置的計算機(jī)資源,并發(fā)式進(jìn)行地理數(shù)據(jù)自動化處理,有效提高數(shù)據(jù)處理效率。在實際測繪生產(chǎn)中,該框架為提升個性化GIS 應(yīng)用程序處理大數(shù)據(jù)量地理數(shù)據(jù)的效率提供了可行的思路和方法。