葉 楓,張 鵬,夏潤(rùn)亮,顧和生,陳 勇
(1.河海大學(xué)計(jì)算機(jī)與信息學(xué)院, 江蘇 南京 211100; 2.南京龍淵微電子科技有限公司,江蘇 南京 211106;3.江蘇省水利廳,江蘇 南京 210029; 4.黃河水利科學(xué)研究院,河南 鄭州 450003;5.南京市江北新區(qū)環(huán)境保護(hù)與水務(wù)局,江蘇 南京 210032)
IBM于2008年率先提出了“智慧地球”,期望通過(guò)普適的數(shù)字化、網(wǎng)絡(luò)化和智能化,提高效率、靈活性,做出更加明智的決策。“智慧”體現(xiàn)在3個(gè)方面:“更透徹的感知,更廣泛的互聯(lián)互通,更深入的智能化”[1]。所謂“更透徹的感知”是指利用任何可以隨時(shí)隨地感知、測(cè)量、捕獲和傳遞信息的設(shè)備、系統(tǒng)或流程;“更廣泛的互聯(lián)互通”是指通過(guò)各種形式的高速寬帶通信網(wǎng)絡(luò),將個(gè)人電子設(shè)備、組織機(jī)構(gòu)等信息系統(tǒng)中收集和儲(chǔ)存的分散信息及數(shù)據(jù)連接起來(lái),進(jìn)行交互及多方共享,從而更好地對(duì)環(huán)境和業(yè)務(wù)狀況進(jìn)行實(shí)時(shí)監(jiān)控,從全局的角度分析并實(shí)時(shí)解決問(wèn)題,使得工作和任務(wù)得以通過(guò)遠(yuǎn)程的、多方協(xié)作方式完成;“更深入的智能化”指使用先進(jìn)技術(shù)(如數(shù)據(jù)挖掘工具、科學(xué)模型)來(lái)完成復(fù)雜的數(shù)據(jù)分析、匯總和計(jì)算,整合和分析跨地域、跨行業(yè)和職能部門(mén)的海量數(shù)據(jù)和信息,并應(yīng)用到特定行業(yè)、場(chǎng)景以及解決方案中,以更好地支持決策和行動(dòng),如,“智慧醫(yī)療”“智慧城市”和“智慧交通”等。由于水利業(yè)務(wù)的復(fù)雜性、動(dòng)態(tài)性,涉及因素(天氣、地形、人類(lèi)活動(dòng)等)的多樣性及關(guān)聯(lián)性,導(dǎo)致水利業(yè)務(wù)數(shù)據(jù)也呈現(xiàn)多樣性、動(dòng)態(tài)性、大數(shù)據(jù)規(guī)?;忍攸c(diǎn),這為水利領(lǐng)域智慧化的研究帶來(lái)諸多挑戰(zhàn),當(dāng)前仍需要堅(jiān)實(shí)的理論、恰當(dāng)?shù)哪P?、有效的范例、深入的試?yàn)和具體的實(shí)現(xiàn)。從信息科學(xué)和技術(shù)的角度看,主要有2個(gè)關(guān)鍵問(wèn)題:①實(shí)現(xiàn)“智慧”,從根本上解決數(shù)據(jù)密集型科學(xué)發(fā)現(xiàn)的問(wèn)題[2-4],這既有科研傳感器數(shù)據(jù)集的海量性、多樣性、豐富性、不確定性、實(shí)時(shí)性帶來(lái)的挑戰(zhàn),也有對(duì)水利領(lǐng)域數(shù)據(jù)內(nèi)在的時(shí)空特性和特定屬性理解和處理的困難;②實(shí)現(xiàn)“智慧化”的河流、流域,驗(yàn)證所提出的“智慧河流”等的可行性、有效性,需要選型并構(gòu)建面向水利領(lǐng)域大數(shù)據(jù)的獲取、處理、分析的綜合平臺(tái),以有效應(yīng)對(duì)大數(shù)據(jù)多樣化的處理場(chǎng)景。本文提出了基于新一代大數(shù)據(jù)處理引擎Flink的“智慧滁河”系統(tǒng),旨在為水利信息化邁向“智慧”提供可行的解決方案。
“智慧河流”“智慧流域”和“智慧水利”等,實(shí)質(zhì)是“智慧地球”理念在水利領(lǐng)域的延伸。當(dāng)前,對(duì)于水利領(lǐng)域智慧化的研究,代表性的工作有蔣云鐘等[5-6]提出的“智慧流域”和王忠靜等[7]提出的水聯(lián)網(wǎng)和智慧水利的概念。蔣云鐘等[5-6]提出,智慧流域是指把新一代IT技術(shù)充分運(yùn)用于流域綜合管理,把傳感器嵌入和裝備到流域各個(gè)角落的自然系統(tǒng)和人工系統(tǒng)中,通過(guò)普遍連接形成“流域物聯(lián)網(wǎng)”;而后通過(guò)超級(jí)計(jì)算機(jī)和云計(jì)算將“流域物聯(lián)網(wǎng)”整合起來(lái),以多源耦合的氣象水文信息保障平臺(tái)、二元水循環(huán)及伴生過(guò)程數(shù)值模擬平臺(tái)等為支撐,將其與數(shù)字流域耦合起來(lái),完成數(shù)字流域與物理流域的無(wú)縫集成,使人類(lèi)能以更加精細(xì)和動(dòng)態(tài)的方式對(duì)流域進(jìn)行規(guī)劃、設(shè)計(jì)和管理,從而達(dá)到流域的“智慧”狀態(tài)。王忠靜等[7]認(rèn)為,水聯(lián)網(wǎng)的總體架構(gòu)是集物理水網(wǎng)、虛擬水網(wǎng)和市場(chǎng)水網(wǎng)為一體的現(xiàn)代化水資源系統(tǒng)。在實(shí)現(xiàn)層面,需要物聯(lián)網(wǎng)、云平臺(tái)、服務(wù)體系來(lái)探索智慧化水利之路,已成為當(dāng)前的研究共識(shí),并已做了一些具體工作[8-9]。但是,從信息科學(xué)和技術(shù)的角度看,實(shí)現(xiàn)“智慧”的關(guān)鍵標(biāo)準(zhǔn)是從根本上是解決數(shù)據(jù)密集型科學(xué)發(fā)現(xiàn)的問(wèn)題,目前缺乏具體完整的系統(tǒng)架構(gòu)方案或典型案例。由于水利業(yè)務(wù)的復(fù)雜性、動(dòng)態(tài)性等特點(diǎn),對(duì)大規(guī)模的動(dòng)態(tài)、實(shí)時(shí)、多樣化水利業(yè)務(wù)數(shù)據(jù)的處理存在諸多挑戰(zhàn)。因此,應(yīng)把握“智慧”的特征,根據(jù)水利特定領(lǐng)域大數(shù)據(jù)驅(qū)動(dòng)的主線(xiàn),選擇合適的平臺(tái)和技術(shù)進(jìn)行集成,構(gòu)建智慧化應(yīng)用系統(tǒng)。
實(shí)現(xiàn)“智慧”,從根本上說(shuō)是解決數(shù)據(jù)密集型科學(xué)發(fā)現(xiàn)的問(wèn)題,數(shù)據(jù)本身是核心,涉及數(shù)據(jù)的獲取、傳遞、存儲(chǔ)、處理和展現(xiàn)等流程。水利領(lǐng)域大數(shù)據(jù)最顯著的特點(diǎn)可以概況為規(guī)模大、主題多樣、數(shù)據(jù)本身的信息豐富、處理和利用難度大。根據(jù)馮鈞等[10]的研究,經(jīng)過(guò)長(zhǎng)期的業(yè)務(wù)實(shí)踐,水利領(lǐng)域已經(jīng)積累了大量分布異構(gòu)獨(dú)立的業(yè)務(wù)數(shù)據(jù),如,實(shí)測(cè)信息就包括水文觀測(cè)信息(地表地下水量水質(zhì)狀態(tài)等信息)、水利設(shè)施在線(xiàn)運(yùn)行狀態(tài)信息、用水戶(hù)用水排水信息等,截至2012年,單是水文數(shù)據(jù),全國(guó)已超100TB。隨著各類(lèi)水文、水質(zhì)傳感器和攝像頭等的廣泛應(yīng)用,所獲取數(shù)據(jù)的規(guī)模和增長(zhǎng)速度都是空前的。從主題角度,有水文、水質(zhì)[11]、水資源、水利設(shè)施(空間)、土壤侵蝕、灌溉、水能資源調(diào)查、農(nóng)村水電等專(zhuān)題,以及第一次水利普查工程對(duì)河流湖泊、水利工程、重點(diǎn)經(jīng)濟(jì)社會(huì)取用水戶(hù)及水利單位等對(duì)象進(jìn)行普查和清查匯總形成的普查成果數(shù)據(jù)。這些主題不斷豐富著水利領(lǐng)域的大數(shù)據(jù)集。以水資源數(shù)據(jù)為例,水利信息往往具有以下特征[12]:存在異常數(shù)值,連續(xù)觀測(cè)的值往往是彼此密切相關(guān)的,依賴(lài)于其他變量等。水利領(lǐng)域數(shù)據(jù)的處理和利用難度很大,主要是因?yàn)閿?shù)據(jù)獲取過(guò)程中對(duì)位置、環(huán)境、天氣等相關(guān)因素的數(shù)據(jù)系統(tǒng)標(biāo)注缺失,丟失了數(shù)據(jù)之間存在的豐富時(shí)空關(guān)聯(lián)信息。水利領(lǐng)域的業(yè)務(wù)數(shù)據(jù)迥異于商業(yè)數(shù)據(jù),其數(shù)據(jù)類(lèi)型豐富、規(guī)模大,屬性和關(guān)聯(lián)關(guān)系也更加復(fù)雜[13],因此,研究并選擇合適的大數(shù)據(jù)處理平臺(tái)和技術(shù)成為構(gòu)建智慧化系統(tǒng)的關(guān)鍵。
Apache Flink[14-16]是由歐洲的多名研究者和多家資助單位聯(lián)合研發(fā)的一款開(kāi)源的并行化數(shù)據(jù)分析軟件,現(xiàn)已成為Apache Software Foundation的頂級(jí)項(xiàng)目。Flink本質(zhì)是一個(gè)流式計(jì)算引擎,在同一個(gè)運(yùn)行時(shí)(Runtime),分別搭建了流式計(jì)算和批處理的編程接口和相配套的生態(tài)系統(tǒng),其體系結(jié)構(gòu)圖見(jiàn)圖1。
圖1 Apache Flink的體系架構(gòu)
Apache Flink具有的特性是:①既能支持高吞吐、低延遲、高性能的流處理操作,也可以用于批數(shù)據(jù)的處理;②支持有狀態(tài)計(jì)算的Exactly-once語(yǔ)義;③具備基于輕量級(jí)、分布式快照(Snapshot)實(shí)現(xiàn)的容錯(cuò)機(jī)制;④支持高度靈活的窗口(Window)操作,包括Time、Count、Session以及Data-driven的窗口操作;⑤在JVM內(nèi)部實(shí)現(xiàn)了自身的內(nèi)存管理;⑥支持迭代計(jì)算;⑦支持機(jī)器學(xué)習(xí)(FlinkML)、圖分析(Gelly)、關(guān)系數(shù)據(jù)處理(Table)和復(fù)雜事件處理(CEP);⑧支持Flink on YARN、HDFS、Kafka、Apache HBase、Hadoop、RabbitMQ、S3以及XtreemFS等大數(shù)據(jù)相關(guān)軟件。
圖2 “智慧滁河”的體系結(jié)構(gòu)
相比于Spark、Storm等大數(shù)據(jù)平臺(tái),Apache Flink被認(rèn)為是第四代,也是最新一代的大數(shù)據(jù)處理引擎。文獻(xiàn)[17]通過(guò)2個(gè)試驗(yàn)評(píng)估吞吐效率和節(jié)點(diǎn)失效下的彈性(Resilience),結(jié)果表明,F(xiàn)link比Spark Streaming快15倍。Chintapalli等[18]開(kāi)發(fā)了一個(gè)流處理Benchmark,用于測(cè)評(píng)Flink、Storm和Spark Streaming。通過(guò)構(gòu)造數(shù)據(jù)管道機(jī)制,最大程度地模擬了真實(shí)世界的數(shù)據(jù)流場(chǎng)景。結(jié)果表明,F(xiàn)link、Storm性能近似,對(duì)于流數(shù)據(jù)的響應(yīng)近似線(xiàn)性;而Spark Streaming雖吞吐量較大,但延遲較高?;?個(gè)不同數(shù)據(jù)集和不同的算法,文獻(xiàn)[19]提出了一個(gè)用于比較Apache Flink和Apache Spark的Benchmark,結(jié)果表明Apache Flink在數(shù)據(jù)挖掘和圖處理方面比Apache Spark更優(yōu)??梢钥闯?,F(xiàn)link的優(yōu)勢(shì)在于其從上到下提供了一整套完整的、針對(duì)大數(shù)據(jù)的棧式解決方案,并為用戶(hù)提供了易于使用的數(shù)據(jù)分析系統(tǒng)。
“智慧滁河”系統(tǒng)的體系結(jié)構(gòu)分為5層:感知識(shí)別層、網(wǎng)絡(luò)構(gòu)建層、基礎(chǔ)設(shè)施層、平臺(tái)與服務(wù)層以及應(yīng)用層,見(jiàn)圖2。感知識(shí)別層由3部分組成,一是多源數(shù)據(jù)的感知、采集機(jī)制,如:RFID、視頻探頭、全球定位系統(tǒng)、遙感、各類(lèi)傳感器(水位、水質(zhì)、雨量等);二是控制機(jī)制,用于交互下位機(jī)和控制器,并與網(wǎng)絡(luò)構(gòu)建層通信;三是能量管理、抗干擾、編解碼等機(jī)制。如,將所監(jiān)測(cè)的河道沿程的水位、流速、水質(zhì)以及視頻監(jiān)控?cái)z像頭自動(dòng)獲取監(jiān)測(cè)閘門(mén)的開(kāi)度等傳給網(wǎng)絡(luò)構(gòu)建層,也會(huì)接受反饋的指令,對(duì)傳感器、下位機(jī)和控制器進(jìn)行操作,進(jìn)而調(diào)整傳感器,操控閘門(mén)、灌溉設(shè)備等。網(wǎng)絡(luò)構(gòu)建層是實(shí)現(xiàn)物-物互聯(lián)的重要基礎(chǔ),主要由各類(lèi)網(wǎng)絡(luò)組成,包括各種通信網(wǎng)絡(luò)、互聯(lián)網(wǎng)形成的融合網(wǎng)絡(luò)。該層的作用是把感知識(shí)別層所采集的數(shù)據(jù)接入網(wǎng)絡(luò)。以傳感器數(shù)據(jù)為例,各種監(jiān)測(cè)數(shù)據(jù)通過(guò)無(wú)線(xiàn)傳感器網(wǎng)絡(luò)形成局部區(qū)域網(wǎng)絡(luò),將覆蓋區(qū)域的信息收集起來(lái),然后通過(guò)網(wǎng)絡(luò)構(gòu)建層自動(dòng)向位于基礎(chǔ)設(shè)施層的數(shù)據(jù)中心傳輸數(shù)據(jù)流。不難看出,網(wǎng)絡(luò)構(gòu)建層是“更廣泛的互聯(lián)互通”的實(shí)現(xiàn)基礎(chǔ)?;A(chǔ)設(shè)施層、平臺(tái)與服務(wù)層以及應(yīng)用服務(wù)層均基于以云計(jì)算[20]為代表的大規(guī)模分布式處理平臺(tái)之上。基礎(chǔ)設(shè)施層與云計(jì)算模型的IaaS(基礎(chǔ)設(shè)施即服務(wù),Infrastructure as a Service)層是相對(duì)應(yīng)的,主要包括:用于管理、存儲(chǔ)水利領(lǐng)域大數(shù)據(jù)的存儲(chǔ)機(jī)制(關(guān)系數(shù)據(jù)庫(kù),NoSQL[21-22]數(shù)據(jù)庫(kù)等)、虛擬機(jī)群、網(wǎng)絡(luò)資源,該層可由開(kāi)源或商業(yè)的云計(jì)算解決方案實(shí)現(xiàn),如Apache CloudStack、OpenStack等。用戶(hù)可以按需整合資源以適于不同的業(yè)務(wù)處理場(chǎng)景。
平臺(tái)與服務(wù)層包括諸多相關(guān)的業(yè)務(wù)系統(tǒng)、模型庫(kù)和知識(shí)庫(kù)等,如各類(lèi)數(shù)據(jù)存儲(chǔ)機(jī)制,知識(shí)庫(kù)包含灌區(qū)相關(guān)的專(zhuān)家知識(shí),模型庫(kù)包括系統(tǒng)涉及的計(jì)算模型(如需水預(yù)報(bào)模型)。通過(guò)對(duì)各類(lèi)業(yè)務(wù)系統(tǒng)、模型庫(kù)和知識(shí)庫(kù)進(jìn)行集成,實(shí)現(xiàn)具體的業(yè)務(wù)服務(wù)、中間件或服務(wù)工作流,以供上層應(yīng)用軟件調(diào)用。Apache Flink為構(gòu)建平臺(tái)層提供最為直接的支持,它能為業(yè)務(wù)邏輯提供并行化的處理機(jī)制,也能訪問(wèn)基礎(chǔ)設(shè)施層中的數(shù)據(jù)資源等。在正確部署Apache Flink的基礎(chǔ)上,基于Apache Flink提供的流數(shù)據(jù)Datastream API或Batch Processing API,編程先獲取執(zhí)行環(huán)境,然后通過(guò)各種連接器(connectors)獲取相應(yīng)的數(shù)據(jù)源,接下來(lái)利用各種轉(zhuǎn)換函數(shù)(Map、KeyBy、Reduce、Window等)對(duì)數(shù)據(jù)進(jìn)行處理,最后將處理的數(shù)據(jù)保存。
處于整個(gè)體系結(jié)構(gòu)最上層的是應(yīng)用服務(wù)層。該層主要訪問(wèn)界面或接口,承擔(dān)計(jì)算和分析結(jié)果展示的任務(wù)。它既可以通過(guò)各種應(yīng)用軟件調(diào)用平臺(tái)與中間件層的服務(wù),也可以調(diào)用來(lái)自第三方提供的各類(lèi)服務(wù)(百度路徑導(dǎo)航服務(wù)、地震信息查詢(xún)服務(wù)、天氣預(yù)報(bào)服務(wù)等),將結(jié)果和交互界面展示給用戶(hù)。
選取2015年1月1日至2017年6月30日的滁河實(shí)時(shí)水位數(shù)據(jù)集,一共有18 910 865條數(shù)據(jù)記錄。運(yùn)行環(huán)境是是由3臺(tái)同型號(hào)PC組成的集群,配置為:處理器為AMD Ryzen 7 1700X(八核),內(nèi)存是32G海盜船DDR4 3000Mhz,硬盤(pán)是三星sm961的128G固態(tài)硬盤(pán),顯卡為華碩的GeForce GTX 1060。試驗(yàn)一是查找特定水位值,如查找河道水位高度在“5.5”以上的記錄。通過(guò)邏輯訪問(wèn)MySQL庫(kù)表的檢索方式,需要 8.41 s;通過(guò)邏輯訪問(wèn)MongoDB的檢索方式,需要7.46 s;而通過(guò)Flink實(shí)現(xiàn)的邏輯訪問(wèn)MongoDB,檢索完成時(shí)間只需要0.03 s左右。試驗(yàn)二是查找最小值,如查找70余個(gè)監(jiān)測(cè)站點(diǎn)出現(xiàn)最低水位值的記錄。通過(guò)邏輯訪問(wèn)MySQL庫(kù)表的檢索方式,需要16.2 s;通過(guò)邏輯訪問(wèn)MongoDB的檢索方式,需要10.3 s;而通過(guò)Flink實(shí)現(xiàn)的邏輯訪問(wèn)MySQL或MongoDB,檢索完成時(shí)間只需要0.03 s左右。試驗(yàn)三是刪除數(shù)據(jù)操作。以500萬(wàn)條記錄為例,效果更為明顯,只需要3.22 s,遠(yuǎn)遠(yuǎn)小于使用MySQL的邏輯所需的122 s。不難看出,通過(guò)Flink平臺(tái)提供的API實(shí)現(xiàn)機(jī)制,要比傳統(tǒng)的Java EE技術(shù)所開(kāi)發(fā)的多層架構(gòu)有更優(yōu)的性能表現(xiàn),充分利用了對(duì)于集群的并發(fā)機(jī)制,讓大數(shù)據(jù)處理的方式簡(jiǎn)單高效。
基于Flink的“智慧滁河”系統(tǒng)的計(jì)算能力遠(yuǎn)超傳統(tǒng)的多層架構(gòu)系統(tǒng),讓大數(shù)據(jù)處理的方式變得簡(jiǎn)單高效,也為水利信息化邁向“智慧”提供了可行解決方案。后續(xù)的研究將集中于研究Flink平臺(tái)上的機(jī)器學(xué)習(xí)算法與水文數(shù)據(jù)分析的結(jié)合,特別是針對(duì)傳感器流數(shù)據(jù)的實(shí)時(shí)分析工作,進(jìn)一步完善“智慧滁河”系統(tǒng),為防汛防旱提供更加迅捷的決策支持,豐富水利信息化領(lǐng)域的數(shù)據(jù)智能化處理的完整案例。