何璇 馬佳琳


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