邱國婷
(西安航空職業技術學院,陜西西安 710089)
隨著計算機技術與通信網絡的持續發展與完善,電子化、信息化媒體社交已更加深入人們的日常生活,且各大社交平臺也在不斷產生海量的數據[1]。信息的高速通達有利有弊,尤其對于某些突發事件,快速的網絡傳播極易引發網絡輿情。若不對其進行正確的預警及引導,可能會造成一系列不可控的局面[2-3]。因此在大數據環境背景下,通過對網絡輿情數據加以采集、分析、檢測與預警,以實現對突發事件輿情的有效管控,同時引導并控制突發事件的態勢走向,對應急決策均具有關鍵性的作用[4]。
目前國內對于輿情分析已有一定的研究,基于大數據環境的有灰色系統理論(Grey System Theory)、支持向量機(Support Vector Machine,SVM)等算法可用于數據分析,同時還考慮了分布式系統來提高數據的處理效率[5-7]。但對于海量且動態變化的輿情數據,現有大部分方法均存在數據分析時間較長或分析結果不理想等問題。因此,該文基于分布式存儲及并行計算技術設計了一種適用于海量網絡輿情數據的分析方法。該方法結合了Hadoop 分布式文件系統(Hadoop Distributed File System,HDFS)與Spark并行化計算,以實現對輿情數據的可靠分析。
海量數據分析系統包括數據采集層、數據存儲層、數據分析層和數據顯示層,其整體架構如圖1所示。

圖1 數據分析系統的整體架構
其中,數據采集層用于接收系統的各類日志數據,并將收集的數據存儲在Hadoop 分布式文件系統,即數據存儲層中[8]。在數據分析層,可通過Spark SQL查詢數據,且Spark 能夠利用其彈性分布式數據集(Resilient Distributed Datasets,RDD)與數據庫可用性組(Database Availability Group,DAG)機制將日志數據分發到集群,并實現并行計算和基于隨機森林算法(Random Forest,RF)的數據分析,再將分析結果進行顯示,同時還可以支持查詢。
Hadoop 作為分布式計算平臺主要功能是對大數據的存儲及分析[9]。而HDFS 是Hadoop 的關鍵技術,其具備較高的可擴展性、容錯性、可靠性以及高吞吐率等優勢[10]。典型的HDFS 集群包括一個主節點和若干個數據節點,具體的模塊闡述如下:
1)NameNode:作為集群中的主節點,其位于Master 服務器中,主要負責管控文件命名空間、調控和調節Client 端的訪問文件,且維護系統內部的相關文件信息。同時在系統內還配備了一個備份節點,即Secondary NameNode,可用于存儲NameNode 的元數據,并與之通信。
2)DataNode:作為集群內的數據節點,其位于Slave 服務器中,文件數據經劃分后存儲在各個DataNode 中。
此外,當進行數據讀寫時,Client端需先從Name Node中獲取存儲的元數據信息,才能與其建立通信,并進行相應的讀寫操作。由于數據讀寫過程中,傳統的數據緩存方法不適用于分布式存儲系統,為此設計了一種基于熱點檢測的緩存方法。該方法充分利用了分布式系統的訪問模式,從而提升了緩存池中數據的命中率,并加快了緩存進度。
基于熱點檢測的緩存方法是將冷熱數據進行區分,緩存架構如圖2 所示。其中,采用固態存儲硬盤構成熱數據緩存池,并利用普通磁盤存儲冷數據。

圖2 基于熱點檢測的緩存架構
當Client 端需要讀寫的數據在緩存池中命中時,則直接展開讀寫操作,且無需訪問普通存儲磁盤;若沒有命中,則需要把請求轉至存儲池以完成Client 端的讀寫。此外,Filter 模塊可用于發掘熱數據。若某一數據被反復訪問,則由Promotion 模塊將其轉移至緩存池;若該數據沒有被反復訪問,則不轉至緩存池,即處于候選狀態。當緩存池的使用率大于某一限定值時,Agent 模塊會把無效數據轉移至存儲池,或是將冷數據予以剔除,進而釋放緩存空間。
傳統的Spark 并行化計算中,其數據處理方法大多基于統計分析而展開。但對于海量數據而言,其分析效果并不理想。因此利用隨機森林算法對區塊內的數據進行分類,并通過Spark 架構實現數據的快速分析。
Spark 是一個基于內存計算的并行框架,其可有效地支撐交互式查詢等計算方式[11-13]。Spark 采用了Master/Slave 的計算架構,其中Master 和Slave 分別存儲Master 節點與Worker 節點的內容。Master 是集群的控制核心,負責系統的穩定運轉;而Worker 則是集群的計算節點,負責接收Master 的指令并上傳自身計算狀況,然后再觸發Executor 或者Driver。Executor 與Driver 分別負責執行、派發任務,且Driver通過創建Spark Context 對象來訪問Spark。而Client作為用戶的客戶端,負責提交應用。
隨機森林算法的主要思想是將多個決策樹分類器模型相結合[14-16],即將Bagging 與隨機子空間合并進行決策,并通過投票決策得到最終結果。
隨機森林算法主要包括決策樹生長與投票過程,而生長過程又分成隨機選取訓練集、構建隨機森林及分割節點。在節點分割過程中,選擇系數φ最小的特征作為分割特征,計算過程如下:
首先,計算樣本系數:
式中,Pi為樣本集S中類別i的概率,類別總數為m。
然后,計算分割節點的系數:
式中,Ω為分割節點集,|S|為樣本集中的樣本數,|S1|、|S2|分別為子集S1和S2的樣本數。
隨機森林算法中訓練集與特征集的選擇方式,使得其具有較好的魯棒性及容錯性。因此,將其應用于海量數據的分析與分類中是可行的。
將隨機森林算法融入基于Spark 的并行化計算,以實現海量數據的高質量分析,其流程如圖3 所示。

圖3 隨機森林算法并行化計算流程
首先將輸入的數據抽象為RDD 并分發到Spark的Worker 節點上,且每個Worker 節點均利用隨機森林算法進行數據分析歸類,同時利用廣播的方法在全部Worker 節點上共享隨機森林算法分割節點的系數;然后經Spark 的Map Partitions 函數得到各個Worker 節點上的數據類別,并對其進行累加;最后更新各個決策樹直至滿足迭代終止條件,即可輸出海量數據的類型及數量。
實驗中所構建的HDFS 集群配備了9 臺操作系統為Ubuntu 14.04 的服務器,且Hadoop 版本為2.6.0,Spark 版本為1.5.0。該文將基于Matlab 平臺訓練隨機森林算法用于輿情數據分析,并從微博選取2021年國慶節前后一周的話題評論、關注數據。
在所提方法中,使用Hadoop 分布式方法存儲輿情數據,并基于Spark 并行方式分析數據。為驗證其有效性,使用傳統或分布式方式存儲及查詢輿情數據,即通過Hive 或Spark 從HDFS 查詢一定數量的評論記錄。查詢不同數量的評論數據時,各方法的響應時間如圖4 所示。

圖4 不同方法的數據查詢響應時間
由圖4可知,隨著查詢評論記錄數量的增加,兩種方式的響應時間均有不同程度的上升。但Spark查詢方法的響應時間較短,即速度較快。以查詢30 000條評論記錄為例,Spark查詢方法的響應時間約為7.8 s,而Hive 查詢方法的響應時間接近于12.5 s。此外隨著查詢數據量的增多,基于Spark 查詢方法的響應速度也更快,故其在并行計算方面的優勢更為顯著。
基于熱點檢測的緩存機制能夠較好地處理冷數據,并減少存儲開銷。其與傳統緩存方法的數據讀寫速率如表1 所示。

表1 不同緩存機制的數據讀寫速率
從表中可以看出,相比于傳統緩存機制,基于熱點檢測的緩存機制具有更優的讀寫速率。隨著請求數據大小的增加,傳統緩存機制的讀寫速率出現了快速上升,這是由于傳統緩存機制將大量冷數據放入緩存池,既占用了容量又影響了讀寫效果。以4 MB和16 MB 為例,傳統方法增加了54 MB/s,而該文機制僅增加39 MB/s。原因是該文機制利用數據訪問熱度進行排序,能更好地利用緩存池容量。此外還可提高讀寫性能,從而實現了高效的分布式數據存儲。
輿情分析結果的準確性對數據使用者至關重要,并直接影響了相關措施的實施。為論證所提方法的分析性能,將其與文獻[4]、文獻[5]、文獻[7]進行對比分析,不同方法的分析準確率如圖5 所示。

圖5 不同方法的數據分析準確率
從圖5 可以看出,該文方法的分析準確率相比于其他方法最高,且當其趨于穩定時,準確率可達96%。由于該方法結合了Hadoop 分布式存儲及Spark 并行計算,并采用隨機森林算法進行數據的分析匯總,較大程度地保證了數據分析結果的可靠性。而文獻[7]基于灰色系統理論進行數據分析,單一的分析模型難以保證海量數據分析準確率,因此其值低于80%。同樣,文獻[5]僅考慮R+Hadoop 框架實現輿情分析,缺乏有效的數據分析算法,故其準確率也并不理想。文獻[4]則采用高性能的支持向量機模型進行數據分類,雖然提高了分析準確率,但由于缺乏并行計算的支持,相比于該文方法的分塊處理,其結果仍有待進一步提升。
隨著移動互聯技術的不斷發展,社交媒體成為了公眾表達觀點的關鍵平臺,因此實時了解并掌握輿情動態也較為重要。為此,該文提出了一種基于分布式存儲和并行計算的海量網絡輿情數據分析方法。其將采集的輿情數據存儲于HDFS 中,并基于Spark 框架對數據進行隨機森林并行化分析,且支持系統查詢分析結果。實驗結果表明,基于Spark 查詢方法的響應速度更快,且數據分析準確率超過了90%,并在保證數據分析可靠性的同時加快了響應速度。然而由于條件有限,該實驗僅配備了9 臺服務器。因此在接下來的研究中,將擴展節點、完善軟硬件設施,以提高所提方法的普適性。