何璇 馬佳琳
摘? 要:在大數(shù)據(jù)時(shí)代,數(shù)據(jù)成為推動(dòng)各個(gè)行業(yè)發(fā)展的動(dòng)力,有效的分析數(shù)據(jù)不僅對社會(huì)經(jīng)濟(jì)效應(yīng)有巨大影響,而且對政府,企業(yè)的管理也有深遠(yuǎn)影響。于是,怎樣高效且快速地從Web日志中挖掘出有用的價(jià)值并且轉(zhuǎn)化為分析依據(jù)是系統(tǒng)設(shè)計(jì)的重點(diǎn)。本文主要采用Hadoop為開源框架,利用HDFS進(jìn)行數(shù)據(jù)的存儲(chǔ),Hive為開源數(shù)據(jù)倉庫工具,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)Web日志分析系統(tǒng)。文章主要闡述了系統(tǒng)的結(jié)構(gòu)、設(shè)計(jì)思想和實(shí)現(xiàn)方法。
關(guān)鍵詞:Hadoop;Web;Hive
中圖分類號(hào):TP399? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
The Design of the Web Log Analysis System Based on Hadoop
HE Xuan,MA Jialin
(Software Institute,Shenyang Normal University,Shenyang 110000,China)
Abstract:In the era of big data,data has become a driving force for the development of various industries.Effective analysis of data not only has a huge impact on social and economic effects,but also has a profound impact on the management of governments and enterprises.Therefore,how to efficiently and quickly extract useful value from Web logs and turn it into analysis basis is the key point of system design.In this paper,by means of adopting Hadoop as the open source framework,HDFS for data storage and Hive as the open source data warehouse tool,a Web log analysis system is designed and implemented.This article mainly elaborates the system structure,the design thought as well as the realization method.
Keywords:Hadoop;Web;Hive
1? ?引言(Introduction)
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,每天在Web服務(wù)器上都會(huì)產(chǎn)生大量的訪問日志,如何挖掘出銷售量較好的商品,網(wǎng)站最受歡迎的版塊,網(wǎng)站點(diǎn)擊量最高的廣告,并提供針對性的產(chǎn)品與服務(wù),是傳統(tǒng)的數(shù)據(jù)解決方案和方法所不能企及的。本文打破傳統(tǒng)的數(shù)據(jù)處理方式,使海量數(shù)據(jù)的處理變得更加高效[1]。利用Hadoop技術(shù)的開源性與并行處理的高效性,利用普通的計(jì)算機(jī)就能搭建出性能優(yōu)越的集群,充分利用各個(gè)計(jì)算機(jī)節(jié)點(diǎn)的資源,成本低廉,技術(shù)的成熟穩(wěn)定,使批量數(shù)據(jù)得到及時(shí)的處理,有效提高工作效率。
2? ?主要相關(guān)技術(shù)(Main correlation technique)
2.1? ?Hadoop介紹
Hadoop是Apache軟件基金會(huì)下的開源式分布框架,主要應(yīng)用于大規(guī)模數(shù)據(jù)的處理[2,3],其主要核心項(xiàng)目是HDFS與Map/Reduce。HDFS主要利用分布式存儲(chǔ)對大規(guī)模數(shù)據(jù)進(jìn)行管理[4],Map/Reduce主要對分布式文件系統(tǒng)上的數(shù)據(jù)進(jìn)行整合,保證分析與數(shù)據(jù)處理的高效性。
HDFS主要支持流數(shù)據(jù)讀取和處理超大規(guī)模文件,結(jié)構(gòu)模型為主從結(jié)構(gòu)(Master/Slave),一個(gè)HDFS集群由一個(gè)名稱結(jié)點(diǎn)和若干個(gè)數(shù)據(jù)結(jié)點(diǎn)組成。名稱結(jié)點(diǎn)作為中心服務(wù)器,主要工作是管理整個(gè)文件系統(tǒng)。數(shù)據(jù)節(jié)點(diǎn)作為工作結(jié)點(diǎn),主要任務(wù)為處理文件系統(tǒng)客戶端的讀/寫請求,并向名稱結(jié)點(diǎn)傳輸存儲(chǔ)信息。實(shí)現(xiàn)原理是當(dāng)如果有文件提交給Master節(jié)點(diǎn),Master會(huì)將其切分成N個(gè)塊,并為每個(gè)塊拷貝多個(gè)副本,然后將這些塊分散地存儲(chǔ)在不同的Slave節(jié)點(diǎn)上。Master負(fù)責(zé)維護(hù)整個(gè)NameSpace,NameSpace中記錄著輸入文件的切割情況,以及每個(gè)塊的存儲(chǔ)信息。Slave是實(shí)際的工作站,負(fù)責(zé)存儲(chǔ)塊。
Mapreduce主要處理存儲(chǔ)在分布式文件系統(tǒng)中的數(shù)據(jù),它的核心是Map函數(shù)與Reduce函數(shù),輸入輸出方式都以中間鍵/值的形式。在Map函數(shù)中按照一定的映射規(guī)則轉(zhuǎn)換為中間鍵/值對集合,通過Reduce函數(shù)將臨時(shí)形成的中間鍵/值對集合進(jìn)行處理和輸出結(jié)果[5]。
2.2? ?Hive介紹
Hive是Hadoop下的數(shù)據(jù)倉庫工具,將結(jié)構(gòu)化的數(shù)據(jù)文件進(jìn)行整理,特殊查詢和分析存儲(chǔ)[6]。Hive提供了類似于關(guān)系數(shù)據(jù)庫SQL語言的查詢語言—HIVE QL,先對數(shù)據(jù)進(jìn)行管理,通過解析和編譯,最終生成基于Hadoop的Mapreduce任務(wù),最后,Hadoop通過執(zhí)行這些任務(wù)完成查詢?nèi)蝿?wù)和數(shù)據(jù)處理。
3? ?系統(tǒng)框架的設(shè)計(jì)(System framework design)
本文闡述Web日志分析系統(tǒng)的設(shè)計(jì)方案,以某搜索引擎網(wǎng)站日志為分析對象,利用HDFS為存儲(chǔ)平臺(tái),Map/Reduce對原始數(shù)據(jù)進(jìn)行清洗,利用Hive對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,通過Sqoop把統(tǒng)計(jì)分析后結(jié)果導(dǎo)出到MYSQL,最后利用Web網(wǎng)頁進(jìn)行數(shù)據(jù)展示,如圖1所示。
4? ?主要功能模塊設(shè)計(jì)(Main function module design)
4.1? ?日志上傳模塊
(1)在集群上搭建所需要的數(shù)據(jù)框架,比如HBASE,首先啟動(dòng)Hadoop分布式集群,然后啟動(dòng)Zookeeper集群,最后在Master(元數(shù)據(jù)結(jié)點(diǎn))上啟動(dòng)HBASE集群。
(2)在以上四種結(jié)點(diǎn)的Linux系統(tǒng)的根目錄下創(chuàng)建日志文件夾(Apache_Logs),用于存放日志文件執(zhí)行命令,啟動(dòng)集群。
(3)在HDFS文件系統(tǒng)中的HDFS根目錄下創(chuàng)建Web_Logs(網(wǎng)頁日志)文件夾,通過日志收集模塊(Flume)與集群通過RPC(遠(yuǎn)程過程調(diào)用協(xié)議)通信交互,讓日志收集任務(wù)讓后臺(tái)程序進(jìn)行,監(jiān)控Apache-Logs文件夾,一旦文件夾收集到日志文件,就同步到HDFS中Web—Logs文件夾下。
4.2? ?數(shù)據(jù)清洗模塊
根據(jù)需求,對日志文件進(jìn)行數(shù)據(jù)清洗處理,刪除與挖掘出與任務(wù)不相關(guān)的數(shù)據(jù)并且合并某些記錄,對HDFS中的日志文件數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,清洗轉(zhuǎn)換后的數(shù)據(jù)放進(jìn)HDFS中[7,8],數(shù)據(jù)清洗的內(nèi)容為檢查數(shù)據(jù)的一致性,處理無效值和缺失值等。過濾掉不符合要求的數(shù)據(jù),如不完整的數(shù)據(jù),錯(cuò)誤的數(shù)據(jù),重復(fù)的數(shù)據(jù)三種。數(shù)據(jù)清洗完畢后,可以通過網(wǎng)頁的形式在瀏覽器端訪問查看文件系統(tǒng),查看到所需要數(shù)據(jù)。
4.3? ?統(tǒng)計(jì)分析模塊
當(dāng)數(shù)據(jù)清洗完成之后,利用Hive構(gòu)建日志數(shù)據(jù)的數(shù)據(jù)倉庫,對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,首先創(chuàng)建外部表,以及內(nèi)容更為詳細(xì)的分區(qū)表,最后實(shí)現(xiàn)數(shù)據(jù)的分析需求。
實(shí)驗(yàn)利用搜索網(wǎng)站的日志實(shí)現(xiàn)五大分析需求,條數(shù)統(tǒng)計(jì)、關(guān)鍵詞分析、UID分析、用戶行為分析,以及實(shí)時(shí)數(shù)據(jù)分析。
4.4? ?數(shù)據(jù)導(dǎo)出模塊
將得到的各個(gè)統(tǒng)計(jì)量分別存放到相應(yīng)的表中。然后把各個(gè)表中的數(shù)據(jù)匯聚到一張表中。使用數(shù)據(jù)導(dǎo)出模塊(Sqoop)把匯總的數(shù)據(jù)導(dǎo)出到外面的關(guān)系型數(shù)據(jù)庫Mysql中,也可以使用HBASE實(shí)現(xiàn)數(shù)據(jù)的快速查詢。
4.5? ?數(shù)據(jù)可視化模
在獲得分析結(jié)果后,使用JSP技術(shù)和Struts2框架,完成不同統(tǒng)計(jì)分析業(yè)務(wù)頁面設(shè)計(jì),為用戶提供查詢結(jié)果的頁面展示窗口,頁面的功能模塊設(shè)計(jì)可以根據(jù)不同的業(yè)務(wù)需求,進(jìn)行個(gè)性化的業(yè)務(wù)拓展[9]。
5? 實(shí)驗(yàn)結(jié)果與分析(Experimental results and? analysis)
5.1? ?實(shí)驗(yàn)環(huán)境
由四臺(tái)計(jì)算機(jī)搭建Hadoop集群,一臺(tái)為Master結(jié)點(diǎn),另外三臺(tái)為Slave結(jié)點(diǎn),實(shí)驗(yàn)數(shù)據(jù)基于某搜索網(wǎng)站的搜索日志為基礎(chǔ)數(shù)據(jù)。
5.2? ?實(shí)驗(yàn)結(jié)果
為了驗(yàn)證Hadoop對于日志分析處理的高效性,在單機(jī)和HDFS集群進(jìn)行了實(shí)驗(yàn)對比。在實(shí)驗(yàn)中對于不同文件大小的Web日志分別進(jìn)行處理,并計(jì)算執(zhí)行的時(shí)間,結(jié)果如圖2所示。
5.3? ?實(shí)驗(yàn)分析
圖2給出了相同數(shù)據(jù)集在Hadoop分布式平臺(tái)和單機(jī)式平臺(tái)處理時(shí)間的比較。由圖可以看出當(dāng)數(shù)據(jù)集較小時(shí)單機(jī)式Web日志分析處理的效率更高,但隨著數(shù)據(jù)集的不斷增大Hadoop平臺(tái)逐漸表現(xiàn)出了優(yōu)勢。這是由于,在Hadoop平臺(tái)下每次迭代都需要重新啟動(dòng)一個(gè)MapReduce任務(wù),所以在數(shù)據(jù)集較小的情況下,系統(tǒng)啟動(dòng)MapReduce任務(wù)所消耗的時(shí)間占用的比例較大,從而導(dǎo)致了計(jì)算效率的下降。而在大數(shù)據(jù)集的情況下系統(tǒng)啟動(dòng)MapReduce任務(wù)所消耗的時(shí)間可以忽略不計(jì),因此這時(shí)的計(jì)算效率較高。
6? ?結(jié)論(Conclusion)
數(shù)據(jù)的準(zhǔn)確性是Web日志挖掘中最重要的基礎(chǔ)和前提,使用web服務(wù)器日志,挖掘分析用戶行為特征,為網(wǎng)站業(yè)務(wù)拓展提供數(shù)據(jù)支撐,已經(jīng)得到了廣泛的應(yīng)用[10]。比如常用的第三方網(wǎng)站統(tǒng)計(jì)分析工具:Webtrends、Google分析、百度統(tǒng)計(jì)等。雖然第三方工具方便、高效,但是并不利于特色業(yè)務(wù)的針對分析。所以使用Hadoop平臺(tái)開發(fā)專用web日志分析系統(tǒng),具有積極的現(xiàn)實(shí)意義。
本文提出了基于Hadoop的Web日志分析平臺(tái),充分利用Hadoop處理海量數(shù)據(jù)的優(yōu)勢,Hive在開發(fā)上的便利,有效提高了挖掘效率,可以根據(jù)不同的用戶業(yè)務(wù),定制日志分析模塊的功能代碼,方便進(jìn)行業(yè)務(wù)擴(kuò)展。例如:將用戶歷史訪問行為進(jìn)行分析后,將分析結(jié)果構(gòu)建成行為特征庫,再實(shí)時(shí)分析用戶當(dāng)前的訪問記錄,就可以開發(fā)異常行為入侵檢測系統(tǒng)。
參考文獻(xiàn)(References)
[1] 陳明.MapReduce分布編程模型[J].計(jì)算機(jī)教育,2014(11):6-11.
[2] 劉常偉.基于Hadoop的Web日志數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué),2017:13-14.
[3] 任建新.基于Hadoop平臺(tái)的大數(shù)據(jù)應(yīng)用系統(tǒng)架構(gòu)的研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2014:16-17.
[4] 王慧娟.基于云計(jì)算的會(huì)計(jì)大數(shù)據(jù)分析平臺(tái)構(gòu)建研究[J].山西財(cái)經(jīng)大學(xué)碩士論文,2015(9):22-27.
[5] 陳龍.基于Hive的水利普查數(shù)據(jù)倉庫[J].計(jì)算機(jī)與現(xiàn)代化,2018(08):12-20.
[6] 程苗,陳華平.基于Hadoop的Web日志挖掘[J].計(jì)算機(jī)工程,2011(06):11-37.
[7] 朱鶴祥.Web日志挖掘中數(shù)據(jù)預(yù)處理算法的研究[D].大連:大連交通大學(xué),2010:11-13.
[8] 夏靖波,韋澤鯤,付凱,等.云計(jì)算中Hadoop技術(shù)研究與應(yīng)用綜述[J].計(jì)算機(jī)科學(xué),2016,43(11):6-11.
[9] 于兆良,張文濤,葛慧,等.基于Hadoop平臺(tái)的日志分析模型D].計(jì)算機(jī)工程與設(shè)計(jì),2016,37(2):338-344.
[10] 楊怡玲,管旭東,陸麗娜.一個(gè)簡單的日志挖掘系統(tǒng)[J].上海交通大學(xué)學(xué)報(bào),2000(7):35-37.