郭曉明,梅 鵬
(中國電子科技集團(tuán)公司第三十八研究所,安徽 合肥 230088;安徽省公共安全應(yīng)急信息技術(shù)重點實驗室,安徽 合肥 230088)
儲罐廣泛應(yīng)用于石油化工行業(yè),存儲的化學(xué)品普遍具有毒性、易燃易爆、易揮發(fā)、受熱易膨脹等特征,極易造成火災(zāi)、爆炸事故或環(huán)境污染。當(dāng)一定范圍內(nèi)化學(xué)物品存儲量超過臨界量的儲罐設(shè)施集合,即構(gòu)成儲罐區(qū)重大危險源。目前,安全生產(chǎn)隱患排查多依靠人力排查,難以明確界定安全和危險狀態(tài),且嚴(yán)重缺乏時效性。對儲罐區(qū)重大危險源實時動態(tài)監(jiān)測,然后對監(jiān)測數(shù)據(jù)進(jìn)行實時智能分析,能為企業(yè)安管人員及時發(fā)現(xiàn)異常情況提供科學(xué)依據(jù)。康榮學(xué)基于GIS提出建設(shè)重大危險源安全監(jiān)測預(yù)警系統(tǒng),實現(xiàn)傳統(tǒng)視頻監(jiān)控和綜合安全參數(shù)監(jiān)控;蔣誠航等人基于組態(tài)系統(tǒng)建立了儲罐區(qū)液位、壓力等參數(shù)監(jiān)測預(yù)警系統(tǒng),實現(xiàn)動態(tài)參數(shù)和視頻監(jiān)控。前人多將研究焦點聚集在重大危險源智能監(jiān)控領(lǐng)域,較少考慮如何高效處理所得數(shù)據(jù)并快速發(fā)現(xiàn)異常模式。這方面可以借鑒互聯(lián)網(wǎng)海量大數(shù)據(jù)處理及智能電網(wǎng)大數(shù)據(jù)處理方法:陳付梅等人提出利用分布式數(shù)據(jù)流處理系統(tǒng)解決大數(shù)據(jù)環(huán)境下的數(shù)據(jù)流處理問題;王桂蘭等人基于分布式流式處理平臺Spark Streaming研究了大規(guī)模用電數(shù)據(jù)流的快速聚類和異常檢測問題。本文引入大數(shù)據(jù)流式處理技術(shù),提出利用Storm流式計算平臺對儲罐區(qū)重大危險源實時監(jiān)測數(shù)據(jù)流進(jìn)行異常檢測的技術(shù)處理框架,實現(xiàn)實時數(shù)據(jù)采集、數(shù)據(jù)接入、數(shù)據(jù)處理、結(jié)果輸出與存儲。
儲罐區(qū)重大危險源異常檢測處理框架如圖1所示。
基于大數(shù)據(jù)流式計算系統(tǒng),對實時監(jiān)測系統(tǒng)產(chǎn)生的數(shù)據(jù)流進(jìn)行異常檢測。圖1中,數(shù)據(jù)采集是通過對儲罐區(qū)新建感知設(shè)備采集裝置、貯存物狀態(tài)以及環(huán)境參數(shù);數(shù)據(jù)接入是通過數(shù)據(jù)接口連接感知設(shè)備采集到的各類監(jiān)測數(shù)據(jù),并讀取至流式處理系統(tǒng)的數(shù)據(jù)處理組件;流式處理對數(shù)據(jù)不預(yù)先存儲而是直接進(jìn)行閾值判斷;最后輸出并存儲異常結(jié)果。
圖1 儲罐區(qū)重大危險源異常檢測處理框架
本文針對儲罐區(qū)重大危險源可能的風(fēng)險點,確定需要監(jiān)測采集的參數(shù)包括溫度、可燃?xì)怏w濃度、壓力、液位等。該環(huán)境下傳感器采集到的數(shù)據(jù)類型主要是時間序列數(shù)據(jù),既要將不同傳感器采集到的數(shù)據(jù)分隔開,又要保證同一傳感器采集到的數(shù)據(jù)能按照時間先后順序有序處理。
數(shù)據(jù)采集模塊如圖2所示。本文設(shè)計了一種基于Kafka分布式發(fā)布訂閱消息系統(tǒng)的數(shù)據(jù)采集系統(tǒng)架構(gòu),如圖2所示?;贙afka的數(shù)據(jù)采集過程如下:通過溫度傳感器、濃度傳感器、壓力傳感器、液位傳感器及其他安全參數(shù)監(jiān)測傳感器采集儲罐區(qū)設(shè)備參數(shù)、危化品狀態(tài)、環(huán)境狀況等信息;傳感器將采集到的數(shù)據(jù)經(jīng)過TCP/UDP通訊協(xié)議傳送至數(shù)據(jù)采集節(jié)點;數(shù)據(jù)采集節(jié)點處理接收到的數(shù)據(jù)并進(jìn)行封裝發(fā)送至消息調(diào)度分發(fā)模塊;消息調(diào)度分發(fā)模塊對數(shù)據(jù)進(jìn)行簡單處理后分發(fā)至Kafka集群的各個主題分區(qū),Kafka集群繼續(xù)將數(shù)據(jù)轉(zhuǎn)發(fā)至數(shù)據(jù)接入模塊。
圖2 數(shù)據(jù)采集模塊
Storm框架下的數(shù)據(jù)接入模塊設(shè)計如圖3所示,Spout組件作為Storm框架下的數(shù)據(jù)源,外部數(shù)據(jù)通過IRichSpout接口實現(xiàn)接入;接著將原始外部數(shù)據(jù)封裝成Tuple元組發(fā)送至待處理隊列,由Bolt組件進(jìn)行數(shù)據(jù)處理。為了保證時間序列數(shù)據(jù)處理的順序性,每個Tuple元組封裝完成后會有唯一的ID標(biāo)識,用以根據(jù)ID順序?qū)τ嬎憬Y(jié)果進(jìn)行匯總。
滑動窗口模型能滿足數(shù)據(jù)實時、高效批量處理的計算要求?;瑒哟翱谀P偷幕瑒哟翱诖笮∈冀K固定不變,滑動窗口中始終保存的是最新批次的數(shù)據(jù)。時間滑動窗口模型是通過窗口使用的起始時間點與終止時間點之間的差值表示窗口大小,這種方法更適用于本文重大危險源監(jiān)測場景中時間序列數(shù)據(jù)類型的異常檢測需求。圖4所示的時間滑動窗口,滑動窗口大小為D,滑動距離為d,即有D/d個時間基本窗口,這些基本窗口可以同一時間并行計算,每隔時間d得到最近D時間進(jìn)程內(nèi)的異常數(shù)據(jù)。
儲罐區(qū)重大危險源實時監(jiān)測采集的參數(shù)類型包括設(shè)備溫度、壓力、液位、可燃?xì)怏w濃度等。在正常情況下,這些參數(shù)的波動范圍應(yīng)當(dāng)處于一定合理區(qū)間內(nèi),通過設(shè)定并輸入各個參數(shù)的合理變化區(qū)間可以實現(xiàn)閾值判斷,超過系統(tǒng)設(shè)定閾值后則視為異常數(shù)據(jù)。
圖3 數(shù)據(jù)接入模塊
圖4 滑動窗口模型示意圖
圖5 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊設(shè)計如圖5所示,數(shù)據(jù)元組Tuple接入Storm系統(tǒng)的待處理隊列后,分別經(jīng)過滑動窗口模型、字段分割、閾值判斷步驟實現(xiàn)異常檢測處理,最后輸出異常數(shù)據(jù)?;瑒哟翱谀P屯ㄟ^RollingBolt實現(xiàn),利用RollingBolt定義滑動窗口大小D及滑動距離d,即有D/d數(shù)量的窗格接收數(shù)據(jù)元組等待處理;字段分割則通過SplitBolt實現(xiàn),利用SplitBolt分割窗格發(fā)送的數(shù)據(jù)元組字段,得到符合閾值處理要求的字段形式;閾值判斷通過ThresholdBolt實現(xiàn),定義各參數(shù)數(shù)據(jù)的合理區(qū)間,檢驗各字段的數(shù)值是否在合理區(qū)間內(nèi),超過合理區(qū)間則視為異常數(shù)據(jù);最后輸出異常檢測結(jié)果。
Storm框架本身不涉及對數(shù)據(jù)處理結(jié)果進(jìn)行存儲,但是可以通過自行定義Bolt組件實現(xiàn)對檢測結(jié)果的存儲??梢远xDatabaseBolt實現(xiàn)將檢測結(jié)果保存至數(shù)據(jù)庫,便于后期的查詢和檢索;或是定義FileBolt實現(xiàn)直接將檢測結(jié)果保存至數(shù)據(jù)文件,便于后期的備份和轉(zhuǎn)移;或是直接保存至云平臺HDFS中。視后期對異常檢測結(jié)果的處理需求而定。
本文圍繞儲罐區(qū)重大危險源的異常檢測問題,提出基于Storm流式處理平臺,對實時監(jiān)測數(shù)據(jù)流進(jìn)行異常檢測的處理框架,實現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)接入、數(shù)據(jù)處理、結(jié)果輸出和存儲的全過程。本文的技術(shù)框架對工業(yè)大數(shù)據(jù)環(huán)境下重大危險源的異常模式快速檢測問題具有參考和應(yīng)用價值。