陳城 王同喜
摘要:在現如今互聯網興盛的時代,大數據能通過對數據的計算和分析體現出其數據的價值性,從而高效而準確地契合用戶的需求。在其背景下,競品分析行業模式也正由傳統的P2P模式向多元化模式發展,其搜索引擎具有提供幫助廣告商投放廣告的支援系統。在Hadoop環境下,使用MapReduce框架進行計算,實現對離線數據的計算和分析,采用面向對象的方法編程,結合SSM 的web開發來進行需求的分析與功能的設計與實現。其主要功能包括有關鍵詞搜索、域名搜索、域名競爭對手、關鍵詞優化等功能。在系統需求分析的基礎上,整個系統包括數據采集、清洗、過濾以及可視化,系統測試后,對集群進行優化,其中還通過研究粒子群算法實現對MapReduce的優化,最終實現全部功能。
關鍵詞:競品分析;大數據;分布式;MapReduce;粒子群
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)10-0215-03
開放科學(資源服務)標識碼(OSID):
1 引言
目前的競品分析市場是在現有的或潛在的競爭產品的優勢和劣勢的基礎上進行評價,在傳統模式中,需要經過相關專業的人員對競品進行實地調查、分析、制定、調整等過程,其煩瑣又耗時長。然而,隨著科學技術的飛速發展,大數據技術已經深入到深入的各個領域,該競品分析系統選擇使用Hadoop技術對海量數據進行清洗過濾、存儲和分析,便于幫助廣告商投放廣告,從而提高廣告的轉化率。
2 相關技術的基本介紹
2.1 HADOOP的相關介紹
Apache Hadoop是一種開源框架,支持海量數據存儲和離線計算,主要由HDFS分布式文件系統、MapReduce框架和Hbase數據庫三大核心組件組成。
2.2 粒子群算法的實現原理
假設在一個[D]維空間中,有[m]個粒子組成一個粒子群,其中第[i]個粒子的空間位置為[Xi=(xi1,xi2,xi3,...,xiD);i=1,2,3,...,m],這個是優化問題的一個潛在解,并將其帶入優化目標函數中進行計算出其相應的適應值,根據適應值可衡量[xi]的優劣;第[i]個粒子所經歷的最好位置稱其個體歷史Best位置,記為[Pi=(pi1,pi2,pi3,...,piD);i=1,2,...,m],相應的適應值為個體最好適應值[Fi];同時,每個粒子還具有各自的飛行速度[Vi=(vi1,vi2,vi3,...,viD);i=1,2,...,m]。所有粒子經歷過的位置中的最好位置稱為全局歷史最好位置,記為[Pg=(pg1,pg2,pg3,...,pgD)],其適應值為全局歷史最優適應值。在算法中,對第[n]代粒子,其第[d]維[(1≤d≤D)]元素速度、位置更新迭代如式[(1)]、[(2)]:
3 系統的設計
3.1 系統的總體結構圖
該系統主要是由兩個子模塊組成,一個是在Hadoop環境下提供對數據進行處理和分析的模塊,一個是基于B/S架構實現的WEB提供數據可視化模塊。如圖1:
3.2 系統流程圖
4 系統功能的實現
4.1 數據的清洗過濾
數據清洗和過濾是對數據進行重新審查和校驗過程,目的在于刪除重復信息、糾正存在的錯誤,并提供數據的一致性。
4.1.1 第一次迭代實現
主要是數據清洗,清洗異常的數據,進而從原始數據中抽取相關關鍵詞、SEM(Search Engine Marketing,搜索引擎營銷)廣告和SEO(Search Engine Optimization,搜索引擎優化)廣告等關鍵信息。
(1)根據數據抓取狀態確定是否正常,或者關鍵信息是否為空等來清洗異常數據;
(2)通過對解析后的數據文件進行讀取其中的關鍵詞和SEM廣告和SEO廣告信息;
(3)數據抽取采用模板模式。
4.1.2 第二次迭代實現
主要是合并當次解析相關關鍵詞、關鍵詞下的SEM和SEO廣告,并保存到數據庫中。
(1) 合并當次解析相關關鍵詞和SEM、SEO廣告,并按照搜索引擎、地域等標準進行歸類合并;
(2) 連接Hbase數據庫,把當次的結果和歷史結果進行匯總合并,最后更新數據庫。
4.1.3 第三次迭代實現
主要是解析域名、域名下的SEM和SEO廣告、域名下的相關關鍵詞以及域名下的競爭對手,并保存到數據庫中。
(1)兩個域名都關聯一個同一個關鍵詞,即存在競爭關系,找出所有存在競爭關系的域名;
(2) 合并當次解析域名、域名下的相關廣告、域名下的相關關鍵詞以及域名下的競爭對手,并按照搜索引擎、地域、域名等標準進行歸類合并;
(3)連接Hbase數據庫,把當次的結果和歷史結果進行匯總合并,最后更新數據庫。
4.2 數據的可視化
對于該系統,數據的可視化界面如圖3:
5 系統的優化
5.1 從架構設計進行優化
對于查詢性能而言,原始的查詢方式是基于HBase,發現查詢的數據比較集中,效率低下,單一使用HBase提供所有數據查詢支撐給WEB端,導致HBase的壓力大。而Redis是基于內存的分布式數據庫,具有高效讀寫、緩存策略的特性,針對這一特性,在HBase上架設了一個Redis做中間數據緩存,系統數據從緩存中查詢,測試后,查詢效率提高了,HBase的壓力也相對減少了。
5.2 從算法角度進行優化
(1)通過研究基本粒子群算法,并將其運用到MapReduce中對其集群系統進行調優。鑒于該競品分析系統的特性,優化整個系統,其主要是優化MapReduce,亦是使每個Reduce處理的Value個數基本相等,使每個job的總的運行時間最短;即求每個Reduce處理的所有Value值個數的最大值的最小值。即[f=min(max(reduce(i))),i=1,2,3,...,n],n為Reduce的個數,[reduce(i)]為第[i]個Reduce處理的Value的和。[reduce(i)=sum(size(value(j)))],[value(j)],為輸入第[j]個Key的Value的個數。Hadoop的Map輸出是
(2)如圖5所示,經過比較,在使用粒子群算法優化后,發現Job運行時間相比原始的運行時間越來越短。
6 總結
傳統的競品分析行業的發展模式已不能滿足目前的需求,而采用分布式計算服務模式,能滿足該系統對海量數據的計算、存儲和分析。
在該系統的設計與實現過程中,難點如下:
(1)從不同的角度對系統進行優化;
(2)使用智能算法優化時,如何區分每個Map是一個難點,并將此Map處理的Key取Hash存儲在Redis中,然后在此Map結束后的Partition階段取出對應的數據進行計算。其實MapReduce底層實現的過程中,每個Map就是一個多線程,通過獲取每個線程的ID從而區分每個Map。
參考文獻:
[1]陳琳.淺論Hadoop平臺在大數據中的應用[J].太原學院學報,2017,26(13):56-60.
[2]周鋒,李旭偉.一種改進的MapReduce并行編程模型[J].科協論壇,2014(15):65-70.
[3]郁磊.MATLAB智能算法30個案例分析[M].北京:北京航空航天大學出版社,2015:45-107.
[4]Tom White,Hadoop權威指南[M].4.王海.北京:清華大學出版社,2017:78~314.
[5]曹英.大數據環境下Hadoop性能優化的研究[D].大連海事大,2013.
[6]王婧.基于粒子群優化算法的集群調度策略研究掘[D].中國石油大學,2011.
[7]紅楊勇,任淑霞,冉娟.基于粒子群優化的k-means改進算法實現Web日志挖掘[J].計算機應用,2016,12(26):29~35.
[8]陶永才,石磊.異構資源環境下的MapReduce性能優化[J].小型微型計算機系統,2013,35(02):287-292
[9]張宏偉.基于MapReduce的遺傳算法在組合優化問題中的研究[D].內蒙古農業大學,2016.
[10]張志宇.粒子群優化算法的改進研究及其應用[D].計算機科學,2017,46(15):53-70.
[11]馮新建.基于MapReduce的迭代型分布式數據處理研究[D].山東大學,2017.
[12]Shuihua Wang,Yudong Zhang.Feed-forward neural network optimized by hybridization of PSO and ABC for abnormal brain detection[J].Int. J. Imaging Syst.Technol,2015,32(2):10-16
【通聯編輯:梁書】