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