李 明,李明春,劉世超
(烽火通信科技股份有限公司,武漢 430074)
近年來,隨著第五代移動通信技術(shù)(5th Generation Mobile Communication Technology,5G)的普及以及網(wǎng)絡(luò)帶寬的不斷發(fā)展,無線訪問接入點[1](Access Point,AP)設(shè)備產(chǎn)生的物聯(lián)網(wǎng)[2](Internet of Things,IoT)數(shù)據(jù)呈現(xiàn)驚人的增長趨勢,而傳統(tǒng)的IoT管理平臺數(shù)據(jù)分析模塊面對如此大量的接入數(shù)據(jù),相應(yīng)數(shù)據(jù)分析時長的增加,成了當(dāng)前必須要解決的首要任務(wù),引入大數(shù)據(jù)[3]流式計算和離線計算后很好地解決了數(shù)據(jù)處理時數(shù)據(jù)量過大的難題,但是面對較高頻率的上送數(shù)據(jù)持久化存儲成本以及相關(guān)數(shù)據(jù)倉庫[4]的建設(shè)成本也亟需解決。
IoT數(shù)據(jù)的一大特性就是數(shù)據(jù)重復(fù),比如100萬臺設(shè)備5 min上送一次數(shù)據(jù),每天即可產(chǎn)生幾百Gbit的數(shù)據(jù),而這些數(shù)據(jù)中包含了大量的重復(fù)數(shù)據(jù),數(shù)據(jù)的全部收錄將會增加企業(yè)的網(wǎng)絡(luò)傳輸成本以及數(shù)據(jù)倉庫構(gòu)建成本,如果將所有數(shù)據(jù)收錄至數(shù)據(jù)倉庫,再構(gòu)建不同層次的數(shù)倉,數(shù)據(jù)量又會呈現(xiàn)出翻倍增長的情況,龐大的數(shù)據(jù)量對于數(shù)據(jù)分析和異常識別[5]等造成計算資源的浪費以及數(shù)據(jù)處理時效性的降低。
基于原有IoT平臺對于無線AP的設(shè)備接入、設(shè)備管理、數(shù)據(jù)流轉(zhuǎn)以及數(shù)據(jù)分析,本文提出了基于異常識別與有損壓縮的無線AP數(shù)倉構(gòu)建方法,使用了一種有損壓縮[6-7]方法,對于無線AP傳輸?shù)腎oT數(shù)據(jù)可以通過流式計算以及基于K-means聚類算法[8-9]的異常識別方式進行有損數(shù)據(jù)壓縮,主要處理設(shè)備運行中存在的較多重復(fù)數(shù)據(jù)且數(shù)據(jù)存儲精度要求不高,比如信號強度和帶寬等。通過以信號強度為例的具體實驗驗證了本文所提方法的可行性,彌補了現(xiàn)有無線AP數(shù)據(jù)構(gòu)建數(shù)倉解決方案中的數(shù)據(jù)量過大的問題。
IoT技術(shù)目前在各行各業(yè)已經(jīng)逐漸落地實踐,其產(chǎn)生的社會經(jīng)濟效益也越來越明顯,IoT平臺是一個集成了設(shè)備管理、數(shù)據(jù)安全通信和消息訂閱等能力的一體化平臺。向下支持連接海量設(shè)備。基于AP設(shè)備的IoT平臺實現(xiàn)了對AP設(shè)備的管理、連接管理和數(shù)據(jù)分析等一系列功能,同時在大數(shù)據(jù)的支持下實現(xiàn)對海量數(shù)據(jù)的采集、處理、挖掘和展示。
數(shù)據(jù)倉庫主要功能是將組織透過資訊系統(tǒng)之聯(lián)機事務(wù)處理(On-Line Transaction Processing,OLTP)經(jīng)年累月所累積的大量資料,透過數(shù)據(jù)倉庫理論所特有的資料儲存架構(gòu),系統(tǒng)地分析整理,以利于進行各種分析如聯(lián)機分析處理(On-Line Analytical Processing,OLAP)和數(shù)據(jù)挖掘(Data Mining),幫助決策者能快速有效地從大量資料中分析出有價值的資訊,以利決策擬定及快速回應(yīng)外在環(huán)境變動。
為充分有效利用無線AP數(shù)據(jù),本文在IoT設(shè)備連接的基礎(chǔ)上設(shè)計了數(shù)據(jù)采集[10]、數(shù)據(jù)處理和數(shù)倉實現(xiàn)數(shù)據(jù)整體架構(gòu),如圖1所示,主要由消息中間件、HDFS、實時計算和離線計算等組件構(gòu)成。本文中實現(xiàn)的無線AP數(shù)據(jù)數(shù)倉分層主要分為:數(shù)據(jù)緩存層、數(shù)據(jù)近源層、公共明細層、公共匯總層和數(shù)據(jù)應(yīng)用層。無線AP IoT數(shù)據(jù)經(jīng)由IoT平臺的設(shè)備連接至消息隊列,集成至緩存層進行數(shù)據(jù)壓縮后進入操作數(shù)據(jù) (Operation Data Store,ODS)層;明細數(shù)據(jù) (Data Warehouse Details,DWD)層負責(zé)轉(zhuǎn)碼/清洗,異常&缺失值處理,計算加工邏輯,按業(yè)務(wù)過程分表;業(yè)務(wù)數(shù)據(jù) (Data Warehouse Service,DWS)基于業(yè)務(wù)需求的原始粒度明細事實的整合匯總,采用一致性維度建模;應(yīng)用數(shù)據(jù)服務(wù) (Application Data Service,ADS)層面向業(yè)務(wù)需求的應(yīng)用模型,基于應(yīng)用進行數(shù)據(jù)組裝,定制化,提供數(shù)據(jù)應(yīng)用。
圖1 數(shù)據(jù)采集處理和數(shù)倉實現(xiàn)整體架構(gòu)圖Figure 1 The overall architecture diagram of data acquisition and processing and data warehouse realization
為提高處理AP設(shè)備上送數(shù)據(jù)的實時性,本文設(shè)計了基于flume的數(shù)據(jù)集成方式,采用Spark Streaming的window以及Spark Ml來實現(xiàn)數(shù)據(jù)的異常識別以及正常數(shù)據(jù)基于窗口數(shù)據(jù)均值的有損壓縮技術(shù),該過程主要包括數(shù)據(jù)集成、數(shù)據(jù)異常識別、數(shù)據(jù)壓縮和持久化存儲模塊。
本方案在SSA中實現(xiàn)網(wǎng)絡(luò)設(shè)備數(shù)據(jù)壓縮;基于K-means算法與先驗知識結(jié)合的方式, 基于數(shù)據(jù)是否異常制定數(shù)據(jù)下發(fā)方案。正常數(shù)據(jù)時,采集的設(shè)備數(shù)據(jù)處于平穩(wěn)變化,取當(dāng)前窗口平均值下發(fā);異常數(shù)據(jù)時,異常數(shù)據(jù)點前后1 min數(shù)據(jù)根據(jù)媒體存取控制(Media Access Control,MAC)和時間字段去重后下發(fā);該方案主要處理設(shè)備運行中存在較多重復(fù)數(shù)據(jù)的指標,且該指標數(shù)據(jù)存儲精度要求不高,本文以信號強度數(shù)據(jù)為例。具體的實現(xiàn)過程如圖2所示。
圖2 信號強度RSSI數(shù)據(jù)處理過程Figure 2 The scheme of signal strength RSSI data processing
數(shù)據(jù)壓縮過程主要包含4部分內(nèi)容:
(1) 數(shù)據(jù)集成:在緩存層將終端設(shè)備上送數(shù)據(jù)集成至HDFS中,用于構(gòu)建模型以及異常識別測試。數(shù)據(jù)集成使用flume組件實時采集kafka消息隊列中的接收信號強度指示(Received Signal Strength Indicator,RSSI),同步至HDFS中。
(2) 異常數(shù)據(jù)識別:基于先驗知識以及專家知識庫中獲得異常數(shù)據(jù)樣本取樣,使用Spark ML構(gòu)建K-means模型對上送數(shù)據(jù)進行聚類分析,結(jié)合取樣異常數(shù)據(jù)進行綜合判斷。
(3) 有損壓縮:數(shù)據(jù)識別為異常后,取異常評分數(shù)據(jù)前后1 min的數(shù)據(jù),根據(jù)MAC地址和時間字段去重后進行下發(fā),同時將異常數(shù)據(jù)告警信號下發(fā);正常數(shù)據(jù)取15 min窗口中每個設(shè)備正常值的平均值下發(fā)。
(4) 持久化存儲:有損壓縮后的數(shù)據(jù)持久化存儲至近源層中,為后面的數(shù)據(jù)分析提供數(shù)據(jù)源。
經(jīng)由flume同步至HDFS中的數(shù)據(jù),需要經(jīng)過有損壓縮后進入ODS層進行數(shù)據(jù)持久化存儲以及數(shù)據(jù)規(guī)范管理。本文在異常識別中,為了使識別結(jié)果更加準確,通過參考異常生成器結(jié)合K-means聚類算法的方式構(gòu)建了異常識別算法。上送信號強度RSSI字段經(jīng)歸一化處理后形成特征字段,K-means聚類算法將特征字段聚類后取異常數(shù)據(jù)在redis中進行緩存,通過與參考異常生成器數(shù)據(jù)進行比對,若異常數(shù)據(jù)超過參考異常生成器數(shù)據(jù)中的異常值,則認定該數(shù)據(jù)為異常,根據(jù)異常數(shù)據(jù)數(shù)值范圍發(fā)送相應(yīng)告警信號,截取數(shù)據(jù)前后1 min數(shù)據(jù)進行數(shù)據(jù)下發(fā);若數(shù)據(jù)值不超過參考異常生成器中的最低異常值,則認定聚類中無異常數(shù)據(jù),從redis中將該數(shù)據(jù)刪除,同時取窗口數(shù)據(jù)平均值進行下發(fā)。
參考異常生成器:為了增加異常數(shù)據(jù)識別的準確度以及增加丟包判斷標準,使用該模塊生成參考異常值。設(shè)μR為參考異常,定義為l個正常樣本異常分數(shù){r1,r2,…,rl}的均值,采用先驗方式獲取此值:
K-means異常識別模型:K-means算法的思想如下:對于給定的樣本集,按照樣本之間的距離大小,將樣本集劃分為K個簇。讓簇內(nèi)的點盡量緊密地連在一起,而讓簇間距離盡量大。K-means算法使用距離來描述兩個數(shù)據(jù)對象之間的相似度。距離函數(shù)有明式距離、歐氏距離、馬式距離和蘭氏距離,最常用的是歐氏距離。K-means算法是當(dāng)準則函數(shù)達到最優(yōu)或者達到最大的迭代次數(shù)時即可終止。當(dāng)采用歐氏距離時,如果用數(shù)據(jù)表達式表示,假設(shè)簇劃分為(c1,c2,…,ck),則我們的目標是最小化平方誤差E,
式中:k為簇的個數(shù);ci為第i個簇的中心點;dist(ci,x)為x到ci的距離。
實驗用通用路由器一臺,通用智能手機一部,實驗代碼在Spark集群中運行,集群配置為3臺Intel(R) Xeon(R) Gold 5120 CPU @ 2.20 GHzcpu,16 G內(nèi)存服務(wù)器,操作系統(tǒng)為CentOS7.9。對于K-means聚類算法,K值選取采用誤差平方和 (Sum of Squares due to Error,SSE)評價指標進行評價。采用壓縮后的文件大小與原文件大小比值的形式來進行壓縮率的評價。
為驗證本文算法的有效性,將連接有一臺終端設(shè)備的無線AP接入IoT平臺進行實際驗證,終端上送數(shù)據(jù)為每秒1條,通過IoT平臺收集終端上送數(shù)據(jù),其中正常樣本為設(shè)備在無線AP附近獲取,通過移動設(shè)備增加設(shè)備與無線AP的距離,實現(xiàn)異常樣本的采集。采集3 h數(shù)據(jù),每小時數(shù)據(jù)為一組,將數(shù)據(jù)分為3組進行實驗,每組數(shù)據(jù)樣本總數(shù)均為3 600條,保證每小時數(shù)據(jù)中都包含了異常數(shù)據(jù)以及正常上送數(shù)據(jù)。如表1所示,其中第1小時數(shù)據(jù)異常樣本數(shù)為23條,正常樣本數(shù)為3 577條;第2小時數(shù)據(jù)異常樣本數(shù)為106條,正常樣本數(shù)為3 494條;第3小時(訓(xùn)練數(shù)據(jù)集)異常樣本數(shù)為129條,正常樣本數(shù)為3 471條。
表1 終端上送數(shù)據(jù)集
在Spark集群中對訓(xùn)練數(shù)據(jù)進行歸一化處理后運行K-means聚類程序,對K值采用實驗的方式獲取,通過不斷調(diào)整K值大小,得到在不同K值下的最小化平方誤差E,E越小說明聚類效果越好,實驗結(jié)果如圖3所示。
圖3 K值大小與E的趨勢圖Figure 3 The value of K and the trend chart of E
結(jié)果表明,K=3時,E逐漸平滑,根據(jù)拐點法確認K=3時,可以作為聚類時的參數(shù),聚類中心的選擇使用“K-means||”方式。
經(jīng)參考異常生成器獲得差信號強度為-80 dBm,很差信號強度為-90 dBm?;诰垲惤Y(jié)果與參考異常生成器綜合判斷邏輯如圖4所示。經(jīng)過K-means模型與參考異常生成器綜合判斷訓(xùn)練數(shù)據(jù)集中的異常檢測結(jié)果如表2所示。
圖4 基于聚類結(jié)果與參考異常生成器綜合判斷邏輯Figure 4 Comprehensive judgment logic based on clustering results and reference exception generator
表2 異常檢測結(jié)果
其中劃分為異常數(shù)據(jù)組,但是不滿足信號強度≤-80 dBm的數(shù)據(jù)有6條,基于K=3的K-means聚類算法實現(xiàn)的判斷準確率為95.6%。同樣對另外兩個測試數(shù)據(jù)集進行相同處理,異常檢測結(jié)果如表3所示。
表3 異常檢測結(jié)果
在測試數(shù)據(jù)集中,兩個數(shù)據(jù)集的識別率分別為99%和85%。根據(jù)綜合判斷,將該異常識別錯誤的數(shù)據(jù)從redis中剔除,在本窗口中,根據(jù)綜合判斷的異常數(shù)據(jù)取時間字段,對異常數(shù)據(jù)前后1 min的數(shù)據(jù)進行抽取,同時根據(jù)MAC以及時間字段去重后下發(fā)。
實驗測試過程中,測試數(shù)據(jù)集1的數(shù)據(jù)時間區(qū)間為2022-02-20 15∶33∶00~ 2022-02-20 16∶32∶59,測試數(shù)據(jù)集2的數(shù)據(jù)時間區(qū)間為2022-02-20 16∶33∶00~ 2022-02-20 17∶32∶59。其中測試數(shù)據(jù)集1的異常數(shù)據(jù)起始點為2022-02-20 16∶05∶02~ 2022-02-20 16∶06∶47,測試數(shù)據(jù)集2的異常數(shù)據(jù)起始點為2022-02-20 17∶23∶37~ 2022-02-20 17∶23∶59。程序基于圖4的一場判別有損壓縮邏輯,最終取得測試數(shù)據(jù)集1和測試數(shù)據(jù)集2的有損壓縮數(shù)據(jù)總條數(shù)分別為229和149條。詳細數(shù)據(jù)比對如表4所示。
表4 數(shù)據(jù)壓縮對比
通過兩組測試數(shù)據(jù)與原始數(shù)據(jù)的對比,表明本文方案可以在保證識別異常數(shù)據(jù)、保留異常數(shù)據(jù)細節(jié)動作的同時,很好地降低無線AP重復(fù)性上送數(shù)據(jù)的存儲占用空間,可以大大降低用戶的存儲成本。
為了降低無線AP數(shù)據(jù)的數(shù)倉實現(xiàn)成本,本文提出了基于緩存層實現(xiàn)網(wǎng)絡(luò)設(shè)備數(shù)據(jù)壓縮的方法,設(shè)計了結(jié)合流式計算和異常識別決策數(shù)據(jù)下發(fā)框架,根據(jù)無線AP上送數(shù)據(jù)的特點,結(jié)合機器學(xué)習(xí)和流式計算,通過對信號強度的實際實驗,驗證了本文方法的可行性以及經(jīng)濟性。本文所提方法同樣可以用于其他IoT領(lǐng)域,如電力終端、智慧家庭和智慧工業(yè)等領(lǐng)域,以降低IoT設(shè)備的數(shù)倉構(gòu)建和數(shù)據(jù)存儲成本,同時對于異常數(shù)據(jù)的識別提供了一種很好的辦法。當(dāng)然,對于方法中單一特征值也可以進行相應(yīng)的擴充,比如信號強度字段與丟包率和網(wǎng)速結(jié)合形成多特征的聚類能夠更好地識別異常。