邱國婷
(西安航空職業(yè)技術學院,陜西西安 710089)
隨著計算機技術與通信網(wǎng)絡的持續(xù)發(fā)展與完善,電子化、信息化媒體社交已更加深入人們的日常生活,且各大社交平臺也在不斷產(chǎn)生海量的數(shù)據(jù)[1]。信息的高速通達有利有弊,尤其對于某些突發(fā)事件,快速的網(wǎng)絡傳播極易引發(fā)網(wǎng)絡輿情。若不對其進行正確的預警及引導,可能會造成一系列不可控的局面[2-3]。因此在大數(shù)據(jù)環(huán)境背景下,通過對網(wǎng)絡輿情數(shù)據(jù)加以采集、分析、檢測與預警,以實現(xiàn)對突發(fā)事件輿情的有效管控,同時引導并控制突發(fā)事件的態(tài)勢走向,對應急決策均具有關鍵性的作用[4]。
目前國內(nèi)對于輿情分析已有一定的研究,基于大數(shù)據(jù)環(huán)境的有灰色系統(tǒng)理論(Grey System Theory)、支持向量機(Support Vector Machine,SVM)等算法可用于數(shù)據(jù)分析,同時還考慮了分布式系統(tǒng)來提高數(shù)據(jù)的處理效率[5-7]。但對于海量且動態(tài)變化的輿情數(shù)據(jù),現(xiàn)有大部分方法均存在數(shù)據(jù)分析時間較長或分析結果不理想等問題。因此,該文基于分布式存儲及并行計算技術設計了一種適用于海量網(wǎng)絡輿情數(shù)據(jù)的分析方法。該方法結合了Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)與Spark并行化計算,以實現(xiàn)對輿情數(shù)據(jù)的可靠分析。
海量數(shù)據(jù)分析系統(tǒng)包括數(shù)據(jù)采集層、數(shù)據(jù)存儲層、數(shù)據(jù)分析層和數(shù)據(jù)顯示層,其整體架構如圖1所示。
圖1 數(shù)據(jù)分析系統(tǒng)的整體架構
其中,數(shù)據(jù)采集層用于接收系統(tǒng)的各類日志數(shù)據(jù),并將收集的數(shù)據(jù)存儲在Hadoop 分布式文件系統(tǒng),即數(shù)據(jù)存儲層中[8]。在數(shù)據(jù)分析層,可通過Spark SQL查詢數(shù)據(jù),且Spark 能夠利用其彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets,RDD)與數(shù)據(jù)庫可用性組(Database Availability Group,DAG)機制將日志數(shù)據(jù)分發(fā)到集群,并實現(xiàn)并行計算和基于隨機森林算法(Random Forest,RF)的數(shù)據(jù)分析,再將分析結果進行顯示,同時還可以支持查詢。
Hadoop 作為分布式計算平臺主要功能是對大數(shù)據(jù)的存儲及分析[9]。而HDFS 是Hadoop 的關鍵技術,其具備較高的可擴展性、容錯性、可靠性以及高吞吐率等優(yōu)勢[10]。典型的HDFS 集群包括一個主節(jié)點和若干個數(shù)據(jù)節(jié)點,具體的模塊闡述如下:
1)NameNode:作為集群中的主節(jié)點,其位于Master 服務器中,主要負責管控文件命名空間、調(diào)控和調(diào)節(jié)Client 端的訪問文件,且維護系統(tǒng)內(nèi)部的相關文件信息。同時在系統(tǒng)內(nèi)還配備了一個備份節(jié)點,即Secondary NameNode,可用于存儲NameNode 的元數(shù)據(jù),并與之通信。
2)DataNode:作為集群內(nèi)的數(shù)據(jù)節(jié)點,其位于Slave 服務器中,文件數(shù)據(jù)經(jīng)劃分后存儲在各個DataNode 中。
此外,當進行數(shù)據(jù)讀寫時,Client端需先從Name Node中獲取存儲的元數(shù)據(jù)信息,才能與其建立通信,并進行相應的讀寫操作。由于數(shù)據(jù)讀寫過程中,傳統(tǒng)的數(shù)據(jù)緩存方法不適用于分布式存儲系統(tǒng),為此設計了一種基于熱點檢測的緩存方法。該方法充分利用了分布式系統(tǒng)的訪問模式,從而提升了緩存池中數(shù)據(jù)的命中率,并加快了緩存進度。
基于熱點檢測的緩存方法是將冷熱數(shù)據(jù)進行區(qū)分,緩存架構如圖2 所示。其中,采用固態(tài)存儲硬盤構成熱數(shù)據(jù)緩存池,并利用普通磁盤存儲冷數(shù)據(jù)。
圖2 基于熱點檢測的緩存架構
當Client 端需要讀寫的數(shù)據(jù)在緩存池中命中時,則直接展開讀寫操作,且無需訪問普通存儲磁盤;若沒有命中,則需要把請求轉至存儲池以完成Client 端的讀寫。此外,F(xiàn)ilter 模塊可用于發(fā)掘熱數(shù)據(jù)。若某一數(shù)據(jù)被反復訪問,則由Promotion 模塊將其轉移至緩存池;若該數(shù)據(jù)沒有被反復訪問,則不轉至緩存池,即處于候選狀態(tài)。當緩存池的使用率大于某一限定值時,Agent 模塊會把無效數(shù)據(jù)轉移至存儲池,或是將冷數(shù)據(jù)予以剔除,進而釋放緩存空間。
傳統(tǒng)的Spark 并行化計算中,其數(shù)據(jù)處理方法大多基于統(tǒng)計分析而展開。但對于海量數(shù)據(jù)而言,其分析效果并不理想。因此利用隨機森林算法對區(qū)塊內(nèi)的數(shù)據(jù)進行分類,并通過Spark 架構實現(xiàn)數(shù)據(jù)的快速分析。
Spark 是一個基于內(nèi)存計算的并行框架,其可有效地支撐交互式查詢等計算方式[11-13]。Spark 采用了Master/Slave 的計算架構,其中Master 和Slave 分別存儲Master 節(jié)點與Worker 節(jié)點的內(nèi)容。Master 是集群的控制核心,負責系統(tǒng)的穩(wěn)定運轉;而Worker 則是集群的計算節(jié)點,負責接收Master 的指令并上傳自身計算狀況,然后再觸發(fā)Executor 或者Driver。Executor 與Driver 分別負責執(zhí)行、派發(fā)任務,且Driver通過創(chuàng)建Spark Context 對象來訪問Spark。而Client作為用戶的客戶端,負責提交應用。
隨機森林算法的主要思想是將多個決策樹分類器模型相結合[14-16],即將Bagging 與隨機子空間合并進行決策,并通過投票決策得到最終結果。
隨機森林算法主要包括決策樹生長與投票過程,而生長過程又分成隨機選取訓練集、構建隨機森林及分割節(jié)點。在節(jié)點分割過程中,選擇系數(shù)φ最小的特征作為分割特征,計算過程如下:
首先,計算樣本系數(shù):
式中,Pi為樣本集S中類別i的概率,類別總數(shù)為m。
然后,計算分割節(jié)點的系數(shù):
式中,Ω為分割節(jié)點集,|S|為樣本集中的樣本數(shù),|S1|、|S2|分別為子集S1和S2的樣本數(shù)。
隨機森林算法中訓練集與特征集的選擇方式,使得其具有較好的魯棒性及容錯性。因此,將其應用于海量數(shù)據(jù)的分析與分類中是可行的。
將隨機森林算法融入基于Spark 的并行化計算,以實現(xiàn)海量數(shù)據(jù)的高質(zhì)量分析,其流程如圖3 所示。
圖3 隨機森林算法并行化計算流程
首先將輸入的數(shù)據(jù)抽象為RDD 并分發(fā)到Spark的Worker 節(jié)點上,且每個Worker 節(jié)點均利用隨機森林算法進行數(shù)據(jù)分析歸類,同時利用廣播的方法在全部Worker 節(jié)點上共享隨機森林算法分割節(jié)點的系數(shù);然后經(jīng)Spark 的Map Partitions 函數(shù)得到各個Worker 節(jié)點上的數(shù)據(jù)類別,并對其進行累加;最后更新各個決策樹直至滿足迭代終止條件,即可輸出海量數(shù)據(jù)的類型及數(shù)量。
實驗中所構建的HDFS 集群配備了9 臺操作系統(tǒng)為Ubuntu 14.04 的服務器,且Hadoop 版本為2.6.0,Spark 版本為1.5.0。該文將基于Matlab 平臺訓練隨機森林算法用于輿情數(shù)據(jù)分析,并從微博選取2021年國慶節(jié)前后一周的話題評論、關注數(shù)據(jù)。
在所提方法中,使用Hadoop 分布式方法存儲輿情數(shù)據(jù),并基于Spark 并行方式分析數(shù)據(jù)。為驗證其有效性,使用傳統(tǒng)或分布式方式存儲及查詢輿情數(shù)據(jù),即通過Hive 或Spark 從HDFS 查詢一定數(shù)量的評論記錄。查詢不同數(shù)量的評論數(shù)據(jù)時,各方法的響應時間如圖4 所示。
圖4 不同方法的數(shù)據(jù)查詢響應時間
由圖4可知,隨著查詢評論記錄數(shù)量的增加,兩種方式的響應時間均有不同程度的上升。但Spark查詢方法的響應時間較短,即速度較快。以查詢30 000條評論記錄為例,Spark查詢方法的響應時間約為7.8 s,而Hive 查詢方法的響應時間接近于12.5 s。此外隨著查詢數(shù)據(jù)量的增多,基于Spark 查詢方法的響應速度也更快,故其在并行計算方面的優(yōu)勢更為顯著。
基于熱點檢測的緩存機制能夠較好地處理冷數(shù)據(jù),并減少存儲開銷。其與傳統(tǒng)緩存方法的數(shù)據(jù)讀寫速率如表1 所示。
表1 不同緩存機制的數(shù)據(jù)讀寫速率
從表中可以看出,相比于傳統(tǒng)緩存機制,基于熱點檢測的緩存機制具有更優(yōu)的讀寫速率。隨著請求數(shù)據(jù)大小的增加,傳統(tǒng)緩存機制的讀寫速率出現(xiàn)了快速上升,這是由于傳統(tǒng)緩存機制將大量冷數(shù)據(jù)放入緩存池,既占用了容量又影響了讀寫效果。以4 MB和16 MB 為例,傳統(tǒng)方法增加了54 MB/s,而該文機制僅增加39 MB/s。原因是該文機制利用數(shù)據(jù)訪問熱度進行排序,能更好地利用緩存池容量。此外還可提高讀寫性能,從而實現(xiàn)了高效的分布式數(shù)據(jù)存儲。
輿情分析結果的準確性對數(shù)據(jù)使用者至關重要,并直接影響了相關措施的實施。為論證所提方法的分析性能,將其與文獻[4]、文獻[5]、文獻[7]進行對比分析,不同方法的分析準確率如圖5 所示。
圖5 不同方法的數(shù)據(jù)分析準確率
從圖5 可以看出,該文方法的分析準確率相比于其他方法最高,且當其趨于穩(wěn)定時,準確率可達96%。由于該方法結合了Hadoop 分布式存儲及Spark 并行計算,并采用隨機森林算法進行數(shù)據(jù)的分析匯總,較大程度地保證了數(shù)據(jù)分析結果的可靠性。而文獻[7]基于灰色系統(tǒng)理論進行數(shù)據(jù)分析,單一的分析模型難以保證海量數(shù)據(jù)分析準確率,因此其值低于80%。同樣,文獻[5]僅考慮R+Hadoop 框架實現(xiàn)輿情分析,缺乏有效的數(shù)據(jù)分析算法,故其準確率也并不理想。文獻[4]則采用高性能的支持向量機模型進行數(shù)據(jù)分類,雖然提高了分析準確率,但由于缺乏并行計算的支持,相比于該文方法的分塊處理,其結果仍有待進一步提升。
隨著移動互聯(lián)技術的不斷發(fā)展,社交媒體成為了公眾表達觀點的關鍵平臺,因此實時了解并掌握輿情動態(tài)也較為重要。為此,該文提出了一種基于分布式存儲和并行計算的海量網(wǎng)絡輿情數(shù)據(jù)分析方法。其將采集的輿情數(shù)據(jù)存儲于HDFS 中,并基于Spark 框架對數(shù)據(jù)進行隨機森林并行化分析,且支持系統(tǒng)查詢分析結果。實驗結果表明,基于Spark 查詢方法的響應速度更快,且數(shù)據(jù)分析準確率超過了90%,并在保證數(shù)據(jù)分析可靠性的同時加快了響應速度。然而由于條件有限,該實驗僅配備了9 臺服務器。因此在接下來的研究中,將擴展節(jié)點、完善軟硬件設施,以提高所提方法的普適性。