張 智,江 果,蔣鳴遠
(中國電子科技集團公司第二十九研究所,成都 610036)
目前,數(shù)據(jù)挖掘、機器學習、人工智能等大數(shù)據(jù)技術(shù)為各行各業(yè)帶來了解決問題的新思路[1],軍事應用領(lǐng)域也不例外,能否通過海量數(shù)據(jù)的訓練使軍用信息系統(tǒng)更智能化成為當前熱門的議題。隨著信息化、網(wǎng)絡化程度的提高,全國范圍內(nèi)的部隊在每天的訓練過程中會積累下非常可觀的數(shù)據(jù)。當需要分析多個部隊收集到的作戰(zhàn)數(shù)據(jù)時,這些數(shù)據(jù)分散在各個部隊內(nèi)部,而這些部隊之間由于地域的隔離、專用帶寬有限等因素,往往會消耗大量的時間來傳輸原始數(shù)據(jù)[2]。
Google公司在大數(shù)據(jù)的三大論文[3]中提出了利用多臺計算機同時工作以實現(xiàn)對海量數(shù)據(jù)高效處理的思路,基于這個思路,工程師們創(chuàng)造了以Hadoop、Spark等為代表的分布式計算框架,這些框架將用戶提交的計算請求拆分成若干個子任務,分別由不同的計算資源并發(fā)地執(zhí)行子任務,最終按照一定的規(guī)則將結(jié)果匯總后反饋給用戶。網(wǎng)格計算是分布式計算在發(fā)展過程中涌現(xiàn)出的一個細分類,它將松散連接的計算機通過網(wǎng)絡聚合起來構(gòu)成的一個虛擬超級計算系統(tǒng)以執(zhí)行大規(guī)模計算任務,支持跨管理域的能力使它與傳統(tǒng)的計算集群或傳統(tǒng)的分布式計算相區(qū)別。但是,現(xiàn)階段主流的分布式計算框架和網(wǎng)格計算框架旨在將大量計算機閑置計算資源利用起來以提高整體的計算能力,沒有考慮到軍用廣域場景下由數(shù)據(jù)隔離分散造成的數(shù)據(jù)不可見、不可取才是真正的瓶頸,難以直接應用到跨域的大規(guī)模作戰(zhàn)數(shù)據(jù)分析場景中。為了實現(xiàn)高效的大規(guī)模跨域作戰(zhàn)數(shù)據(jù)分析,亟需一種能夠適用于軍網(wǎng)專用網(wǎng)絡協(xié)議環(huán)境下的大數(shù)據(jù)處理框架來統(tǒng)管廣域范圍內(nèi)的海量作戰(zhàn)數(shù)據(jù),以解決對于任何單一數(shù)據(jù)源或單一計算節(jié)點來說仍然大得難以解決的問題。
根據(jù)上述應用場景分析,本文首先對業(yè)界主流的分布式計算框架進行比較分析,提出一種基于DAG模型實現(xiàn)廣域分布式數(shù)據(jù)處理的核心思路;其次,結(jié)合軍用網(wǎng)格環(huán)境下系統(tǒng)復雜度高、處理請求多的特點,分別從邏輯層面和物理層面設計出框架內(nèi)核的架構(gòu);然后,考慮到不同用戶提交的數(shù)據(jù)處理請求具有不同的優(yōu)先級,設計了以計算、通信資源為爭奪目標的優(yōu)先級排隊策略;最后,按照前文設想實現(xiàn)了廣域分布式數(shù)據(jù)處理框架原型軟件,并模擬軍事應用中的跨域數(shù)據(jù)場景設計、實施仿真實驗,通過分析實驗結(jié)果證實本框架相對于傳統(tǒng)計算方式在計算效率上有顯著提高。
現(xiàn)有的各類分布式計算框架主要應用于局域網(wǎng)環(huán)境下的計算,具有帶寬要求高、防火墻設置復雜、計算節(jié)點數(shù)據(jù)交互頻繁等特點。Hadoop、Spark等分布式計算框架于2008年以后陸續(xù)流行于國內(nèi),眾多互聯(lián)網(wǎng)企業(yè)、高校以及科研機構(gòu)都開始研究和使用這類分布式計算框架。在初期,技術(shù)實力較強的公司在上述幾類分布式計算框架基礎(chǔ)上根據(jù)自身業(yè)務需求進行改造,例如百度利用Hadoop進行網(wǎng)頁分析、騰訊基于Spark搭建商品推薦系統(tǒng)、阿里巴巴通過Storm建立海量日志分析系統(tǒng)。隨著分布式計算經(jīng)驗的積累,國內(nèi)也涌現(xiàn)出一些新的分布式計算框架,F(xiàn)ourinone、Paracel、DC4C以及Pydra就屬于這一類型。
業(yè)界主流的分布式調(diào)度模型主要有基于MapReduce模型[4]和基于有向無環(huán)圖模型(DAG)兩種方案。從成熟度、復雜度、數(shù)據(jù)處理、通信方式、主要應用場景以及存儲依賴性等方面比較MapReduce模型和有向無環(huán)圖模型兩種分布式協(xié)同計算模型的優(yōu)缺點,如表1所示。
表1 MapReduce模型和有向無環(huán)圖模型比較
一方面,軍用領(lǐng)域的分布式計算具有數(shù)據(jù)源動態(tài)變化、業(yè)務流程離散的特點,與有向無環(huán)圖模型相契合;另一方面,由于跨廣域網(wǎng)之間通信帶寬的限制,商用分布式文件系統(tǒng)難以在部隊之間直接應用,計算節(jié)點之間直接進行數(shù)據(jù)傳輸更能夠有效利用帶寬資源。
綜合比較以上兩種分布式計算模型后,本文采用有向無環(huán)圖模型實現(xiàn)分布式計算框架。
DAG模型即有向無環(huán)圖模型(Directed acyclic graph)[5],若我們將一個分布式數(shù)據(jù)處理任務按照特定的順序約束拆分成為先后實施的子任務,而每個子任務由不同的計算節(jié)點相對獨立地執(zhí)行,那么一個分布式數(shù)據(jù)處理任務可以用一個節(jié)點和邊均帶權(quán)值的有向無環(huán)圖來表示。它是一個四元組G=(V,E,W,C)其中,V=(V1,V2,…,V|V|)表示子任務的集合,每個子任務包含任務ID、計算節(jié)點、計算指令、計算參數(shù)等信息,表達式|V|則表示子任務的個數(shù);E=(eij|vi,vj∈V)?V×V,表示有向邊的集合,若子任務vi和子任務vj之間存在有向邊eij,那么表明子任務vi是子任務vj的直接前驅(qū)節(jié)點,子任務vj的執(zhí)行依賴于子任務vi產(chǎn)生的中間數(shù)據(jù),|E|表示有向邊的個數(shù);節(jié)點權(quán)值W表示各個子任務本身的執(zhí)行時間,而有向邊權(quán)值C表示兩個子任務之間的通信數(shù)據(jù)量。
因此,一個DAG任務的總處理時間可表示為
(1)
即所有子任務的執(zhí)行之間與所有通信時間的總和,B表示通信帶寬速率。
本框架從廣域網(wǎng)整體出發(fā)將接入系統(tǒng)的所有部隊及其相關(guān)的計算、數(shù)據(jù)、網(wǎng)絡資源看作是一個網(wǎng)格環(huán)境,以每一個部隊作為計算節(jié)點單元,并選取其中一個部隊(通常是上級部隊)作為分布式計算調(diào)度中心,如圖1所示。其中,分布式計算調(diào)度中心負責將用戶提交的分布式計算請求解析成任務,并分發(fā)給分布式計算節(jié)點按照有向無環(huán)圖完成執(zhí)行,最終將收集到的計算結(jié)論推送給用戶;而計算節(jié)點單元負責接收并執(zhí)行分布式計算調(diào)度中心下發(fā)的計算任務。
圖1 基于DAG的邏輯架構(gòu)
由于參與計算的目標數(shù)據(jù)通常集中在確定的計算節(jié)點(部隊)內(nèi),用戶需要根據(jù)數(shù)據(jù)分布情況從系統(tǒng)中選擇若干部隊(計算節(jié)點),按照有向無環(huán)圖(DAG)模型組織成為計算請求,由分布式計算調(diào)度中心驅(qū)動相關(guān)的部隊節(jié)點按照指定的DAG順序完成計算任務。
跨地域的分布式系統(tǒng)之間通常是異構(gòu)的,這意味著系統(tǒng)之間的接口標準、數(shù)據(jù)格式、通信協(xié)議都可能有差異,并且系統(tǒng)之間的狀態(tài)往往不是同步的。將跨地域的系統(tǒng)集成以后,系統(tǒng)的整體規(guī)模也有極大的增長。假如一臺電腦無故障連續(xù)運行一個月的概率是99.99%,那么1000臺電腦同時無故障連續(xù)運行一個月的概率只有90.48%。由于系統(tǒng)復雜度高、規(guī)模大,難以保障系統(tǒng)內(nèi)所有軟件、硬件長時間無故障運行。同時,隨著系統(tǒng)用戶數(shù)量的增長,必然存在多用戶同時提交分布式數(shù)據(jù)處理請求的情況,良好的架構(gòu)設計應該支持多任務并發(fā)的情況。
微服務體系架構(gòu)在復雜度控制、服務并發(fā)性、系統(tǒng)容錯性以及擴展能力方面都具有一定的優(yōu)勢[6-7]。每一個微服務只具有單一功能,它將一個龐大的整體應用分解成一組服務,將業(yè)務粒度控制在單個服務范圍內(nèi)。當某一組業(yè)務功能發(fā)生故障時,故障會被隔離在單個服務中,其他服務可通過備份、退化等機制實現(xiàn)應用層面的容錯。微服務體系架構(gòu)從線程、進程等多種粒度提供不同的多實例實現(xiàn)模式,能夠覆蓋本框架的并發(fā)設計需求。
如圖2所示,本文采用微服務體系結(jié)構(gòu)來實現(xiàn)前文所述的DAG計算調(diào)度模型。分布式計算調(diào)度中心部署在調(diào)度部隊,而分布式計算節(jié)點部署在任務執(zhí)行部隊。分布式計算調(diào)度中心主要由請求接收服務、節(jié)點注冊服務、通信管理服務、任務執(zhí)行監(jiān)控服務、通信錄服務以及結(jié)論推送服務等構(gòu)成;分布式計算節(jié)點主要由任務接收服務、任務執(zhí)行服務以及任務完成服務構(gòu)成。在運行狀態(tài)下,每個服務至少包含一個熱備份實例,當主服務故障時,服務路由機制自動將服務請求轉(zhuǎn)發(fā)至熱備份服務實例,同時在后臺重啟故障的服務,保障框架內(nèi)核服務的高可靠性。
圖2 服務劃分示意圖
Honig和Schiffmann提出了一種關(guān)于多DAG共享分布式資源的調(diào)度策略[8]。Zhao和Sakellariou在此基礎(chǔ)上,首次提出了多DAG調(diào)度時存在的多個DAG之間的公平性問題,進而提出了關(guān)于多DAG調(diào)度公平性的定義方法和 Fairness(公平)算法[9]。Yu和Shi為了解決調(diào)度不同用戶在不同時間提交的多個DAG時可能出現(xiàn)的不公平性調(diào)度問題,提出了動態(tài)的調(diào)度模型和策略[10]。田國忠等人在提高多個DAG共享異構(gòu)資源應用的吞吐率和降低運行費方面實現(xiàn)了進一步的研究[11-13]。這些調(diào)度策略都是基于各個計算節(jié)點完全對等的前提,也就是說同一個任務在計算節(jié)點A上執(zhí)行和在計算節(jié)點B上執(zhí)行的結(jié)果完全一樣。然而在軍用網(wǎng)格場景下,各個計算節(jié)點之間因為數(shù)據(jù)資源的差異難以形成對等的關(guān)系,由于某項任務的相關(guān)數(shù)據(jù)可能只在某一確定的計算節(jié)點上存在,那么該任務就只能在對應的計算節(jié)點上執(zhí)行。也就是說,每個分布式數(shù)據(jù)處理過程在用戶提交時就已經(jīng)確定了各個任務執(zhí)行的路徑,剩下的調(diào)度問題就是當不同分布式數(shù)據(jù)處理請求的任務到達同一個計算節(jié)點時面臨的優(yōu)先獲取計算、網(wǎng)絡資源的問題。因此,本文將作為NP完全問題的DAG任務調(diào)度問題按照貪心策略退化成為每個計算節(jié)點內(nèi)任務之間的優(yōu)先級調(diào)度問題。
由于計算機性能、運營成本等因素限制,相同服務最多同時啟動一定限制數(shù)量的線程,如果待執(zhí)行的分布式數(shù)據(jù)處理請求數(shù)目超過了這個限制,多個分布式數(shù)據(jù)處理請求就需要進行計算資源競爭;此外,由于網(wǎng)絡帶寬有限,當分布式計算調(diào)度中心同時有多個任務需要下發(fā)給不同的網(wǎng)絡節(jié)點或者分布式計算節(jié)點同時要向多個后繼節(jié)點發(fā)送中間數(shù)據(jù),多個任務之間就會進行網(wǎng)絡資源競爭。本質(zhì)上,這類似于一個共享有限資源的多處理器調(diào)度算法。
本框架為每個計算任務設置從高到底搶占式優(yōu)先、非搶占式優(yōu)先以及普通三種優(yōu)先級,并對每種優(yōu)先級設置一個排隊隊列(即搶占式優(yōu)先隊列、非搶占式優(yōu)先隊列以及普通隊列)。當接收到新任務時,根據(jù)不同的優(yōu)先級進入相應隊列的隊尾,如果搶占式優(yōu)先級隊列中沒有待執(zhí)行的任務則優(yōu)先執(zhí)行非搶占式優(yōu)先隊列中的任務;反之,則從當前最低優(yōu)先級中尋找開始執(zhí)行時間最晚的任務,將該任務占用的資源移交給搶占式任務,同時提高被搶占資源任務的優(yōu)先級。詳細調(diào)度算法如圖3所示。
圖3 優(yōu)先級調(diào)度算法示意圖
分布式計算框架技術(shù)主要有三種本地化應用趨勢:第一、直接采用Hadoop、Spark等成熟的分布式計算框架,通過長期的積累,針對各種場景形成特有的算法庫;第二、針對成熟的分布式計算框架進行深入分析,將其改造后適配到本地環(huán)境;第三、參考現(xiàn)有框架進行輕量化實現(xiàn),最大限度的掌控分布式計算框架的內(nèi)核。本文采用第三種方式,基于Python語言和ICE服務中間件實現(xiàn)了面向軍用網(wǎng)格的廣域分布式數(shù)據(jù)處理框架,并根據(jù)典型軍事應用場景設計以下仿真實驗:
上級部隊發(fā)現(xiàn)部隊A、部隊B、部隊C都偵收到了某一目標的信息,需要將這些信息進行統(tǒng)一的篩選、分析以及統(tǒng)計處理。傳統(tǒng)方式下,需要將所有原始數(shù)據(jù)傳輸?shù)缴霞壊筷牶蠼y(tǒng)一進行數(shù)據(jù)分析處理;基于本文框架方式下,上級部隊將編排好的分布式數(shù)據(jù)處理請求發(fā)送到各個部隊的計算節(jié)點進行分布式處理,然后將中間數(shù)據(jù)反饋到上級部隊進行最終匯總。其中,為模擬有限專用網(wǎng)絡環(huán)境,將部隊節(jié)點之間的傳輸帶寬限制為2Mbps。
以3個部隊節(jié)點為例,通過設置不同大小的目標數(shù)據(jù)并按照公式(1)比對傳統(tǒng)計算方式與分布式數(shù)據(jù)處理方式的總花費時間如圖4、圖5所示??梢钥闯觯诜抡鎴鼍跋庐敶幚淼哪繕藬?shù)據(jù)大小超過200 MB以后,分布式數(shù)據(jù)處理總計算效率相對于傳統(tǒng)計算方式平均提高了6倍。
圖4 總計算時間對比
圖5 總效率提升曲線
由于在仿真實驗場景中模擬了廣域網(wǎng)有限帶寬的狀態(tài),通過將監(jiān)視得到的網(wǎng)絡占用時間與總計算時間相比較,得出兩種方式下的通信占用時間情況如圖6所示。
圖6 通信占用時間比例
針對軍用網(wǎng)格廣域環(huán)境下的分布式數(shù)據(jù)處理問題,本文提出了通過傳輸計算請求來代替?zhèn)鬏敽A吭紨?shù)據(jù)的核心思路,從而提高分布式計算的效率,并基于DAG模型從邏輯和物理層面設計出分布式數(shù)據(jù)處理框架內(nèi)核的架構(gòu)。同時,采用微服務架構(gòu)解決了軍用網(wǎng)格環(huán)境下系統(tǒng)復雜度高、處理請求多的具體問題;提供了搶占式優(yōu)先、非搶占式優(yōu)先及普通優(yōu)先級等三種任務優(yōu)先等級,以滿足不同數(shù)據(jù)處理請求的不同優(yōu)先級需求。最后,通過仿真實驗對比,當待處理的目標數(shù)據(jù)大小超過200 MB以后,分布式數(shù)據(jù)處理總計算效率相對于傳統(tǒng)計算方式有較為顯著的提高。