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