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