孫彥超,李忠剛
(北京信息科技大學教務處,北京100192)
基于Hadoop的高校日志分析應用架構的研究*
孫彥超,李忠剛
(北京信息科技大學教務處,北京100192)
隨著信息化的建設,高校管理系統(tǒng)越來越多,通過查看分析系統(tǒng)日志可以監(jiān)測系統(tǒng)狀態(tài),調查系統(tǒng)故障,更好地保證系統(tǒng)的正常運行。但由于日志數(shù)據(jù)量巨大,不易被讀懂,無法通過人工分析挖掘出有價值的信息。分布式計算的出現(xiàn),為解決這一難題提供了思路。Hadoop用于構建分布式存儲開源框架,通過部署在上面的MapReduce程序,廣泛地應用于處理海量的數(shù)據(jù)。結合具體問題,文章設計了基于Hadoop的高校日志分析系統(tǒng),并深入分析了該系統(tǒng)的業(yè)務處理流程和系統(tǒng)功能框架。通過對實驗結果的分析,證明了系統(tǒng)是有效的和有價值的。
日志分析;Hadoop;集群;分布式計算
計算技術的不斷發(fā)展帶動著高校信息化建設的深入,為了實現(xiàn)信息化教學管理,各大高校采用越來越多的系統(tǒng)。與此同時,系統(tǒng)需求復雜程度也越來越高,為了使這些系統(tǒng)能夠正常運行,以及保證其安全性和可擴展性,查看日志已經成為一項重要的途徑。通過分析日志數(shù)據(jù),可以獲取許多有價值的信息,如設備故障、網絡運行歷史背景、網絡異常行為等方面的信息。[1]
但由于這些日志數(shù)據(jù)量大,且不易被讀懂,利用傳統(tǒng)的技術進行分析,在存儲和計算量上都會遇到很大的困難,難以挖掘出對改進用戶體驗和提升管理水平都非常具有價值的信息,分布式計算技術恰好可以很好的解決這個問題。[2]
Hadoop作為當前流行的處理大數(shù)據(jù)的平臺,近年來備受業(yè)內關注,因此得到了快速的發(fā)展,在網頁搜索、日志分析、廣告計算和科學實驗等領域中出現(xiàn)了許多相關應用[3-5]。著名電商網站淘寶網擁有3000個節(jié)點的Hadoop集群,如此大規(guī)模的集群為它的日常運營做出了關鍵支撐。除此之外,F(xiàn)acebook、百度、Yahoo等眾多互聯(lián)網巨頭也都在使用Hadoop。[2]
基于Hadoop技術的特點,可以用它來存儲高校的日志數(shù)據(jù),并開發(fā)相應的算法對這些數(shù)據(jù)進行挖掘分析,提高高校對這些日志數(shù)據(jù)的利用價值。本文以高校日志分析系統(tǒng)為例,介紹了Hadoop在海量日志分析中的應用架構。
Hadoop是Apache開發(fā)的開源的MapReduce集群實現(xiàn)。Hadoop的核心包含兩部分,分別是Hadoop分布式文件系統(tǒng)(HDFS)和在此之上的MapReduce編程模型實現(xiàn)。Hadoop分布式文件系統(tǒng)(HDFS)是一個適合運行在通用硬件和大規(guī)模數(shù)據(jù)集上的分布式文件系統(tǒng)。而MapReduce是一種分布式編程模型,用于大規(guī)模數(shù)據(jù)集的并行計算,編程人員不用考慮分布式并行編程的具體實現(xiàn),就能開發(fā)出分布式計算程序。HDFS和MapReduce的關系如圖1。
圖1 Hadoop和MapReduce關系圖
每個HDFS采用Master/Slave架構,主要有四個組成部分∶客戶端(Client)、元數(shù)據(jù)節(jié)點(NameNode)、副元數(shù)據(jù)節(jié)點(Secondary NameNode)和數(shù)據(jù)節(jié)點(DataNode)。一個HDFS集群只包含一個元數(shù)據(jù)節(jié)點,元數(shù)據(jù)節(jié)點存儲整個分布式文件系統(tǒng)的元數(shù)據(jù)信息,此外,還負責監(jiān)控數(shù)據(jù)節(jié)點是否正常,如果出現(xiàn)異常情況,就將其從整個文件系統(tǒng)中刪除。副元數(shù)據(jù)節(jié)點負責定期整理元數(shù)據(jù)節(jié)點中的文件,為其分擔一部分工作,提高對內存資源的利用率。數(shù)據(jù)塊的實際存儲由數(shù)據(jù)節(jié)點負責,包括數(shù)據(jù)的讀寫,并定時向元數(shù)據(jù)節(jié)點匯報存儲塊的信息。[6]
MapReduce是一個把數(shù)據(jù)集的大規(guī)模操作分發(fā)給每個節(jié)點,從而實現(xiàn)并行計算的編程模型。MapReduce提供了簡潔的編程接口,對于某個計算任務來說,其輸入的是鍵值對,輸出也以鍵值對的方式表示。MapReduce中的Map函數(shù)將用戶的輸入數(shù)據(jù)以鍵值對形式通過用戶自定義的映射過程轉變?yōu)橥瑯右枣I值對形式表達的中間數(shù)據(jù)。而Reduce過程則會對中間生成的臨時中間數(shù)據(jù)作為輸入進行處理,并輸出最終結果。[6]
基于Hadoop的高校日志分析系統(tǒng)的日志處理流程主要由存儲、分析和顯示三個部分構成[1],如圖2所示。在存儲階段,日志服務器負責接收日志源提供的日志,并將這些數(shù)據(jù)按照順序存放在數(shù)據(jù)庫或者文件中,之后再轉儲到Hadoop集群中,進行必要的數(shù)據(jù)歸并和清洗,以便后續(xù)的分析處理;在分析階段,MapReduce程序需在Hadoop集群中運行,按指定條件查詢或挖掘日志數(shù)據(jù),獲得期望的信息;為了把這些信息進行歸并和轉換,日志分析結果仍然以文件形式存儲在Hadoop集群中,經過專門的處理后,最后的結果以可視化的形式顯示給用戶。
圖2 基于Hadoop的日志分析流程
根據(jù)上述的日志分析流程,為了實現(xiàn)功能需求,可將基于Hadoop的高校日志分析系統(tǒng)的邏輯架構方案設計如圖3所示。
圖3 系統(tǒng)架構圖
1.日志采集模塊
采集并傳送日志源產生的日志數(shù)據(jù)。日志的采集采用定時傳送的方式,即日志接收節(jié)點每天定時收集每一個前端Web服務器中產生的日志數(shù)據(jù)。通過后臺腳本,日志收集節(jié)點將從各個Web服務器采集到的日志數(shù)據(jù)導入到數(shù)據(jù)倉庫工具中。
2.查詢分析模塊
在此模塊中,需要一個非常重要的工具,即專門用于為用戶提供查詢接口的數(shù)據(jù)倉庫工具(HBase,Hive等),它部署在元數(shù)據(jù)節(jié)點(NameNode)上。
查詢模塊的功能如下:首先,日志采集模塊采集到的都是一條一條的日志記錄,為了方便后續(xù)的查詢和處理,需要將每個系統(tǒng)的日志數(shù)據(jù)映射成數(shù)據(jù)庫表,結構化到數(shù)據(jù)庫的概念之中;其次,由于系統(tǒng)是分布式的,查詢模塊需要提供大規(guī)模的查詢分析功能來滿足大量用戶的查詢請求,再將查詢結果返回給結果輸出模塊。
在實際處理用戶的自定義查詢時,數(shù)據(jù)倉庫工具執(zhí)行的步驟如下∶①客戶端(Client)組件接收并向驅動器提交自定義的查詢語句。②驅動器負責接收并轉發(fā)客戶端傳來的查詢語句給編譯器,編譯器收到后,將查詢語句進行解析、優(yōu)化。HDFS任務和MapReduce任務組成一個類似有向無環(huán)圖的優(yōu)化策略,最后,這些任務被執(zhí)行引擎利用Hadoop來完成。
3.存儲處理模塊
存儲處理模塊同上述的查詢分析模塊部署在同一Hadoop集群中,它是由HDFS負責具體的執(zhí)行,包括實際數(shù)據(jù)存儲和數(shù)據(jù)倉庫工具提交的MapReduce任務。首先,JobTracker創(chuàng)建一個包含Map任務和Reduce任務的作業(yè)對象,其中Map任務根據(jù)己劃分的輸入信息來創(chuàng)建,Reduce任務則根據(jù)一定的屬性來設置。在初始化工作完成之后,每個TaskTracker會收到來自JobTracker根據(jù)特定調度算法分配的任務。TaskTracker接收到任務后,從共享文件系統(tǒng)中將任務文件和程序運行所需的文件復制到本地文件系統(tǒng)。然后,創(chuàng)建任務工作目錄并為運行該任務新建一個實例。當完成作業(yè)的所有任務后,該作業(yè)的狀態(tài)被JobTracker標記為成功,并被發(fā)送給數(shù)據(jù)倉庫工具。
4.結果輸出模塊
結果輸出模塊負責將查詢結果以某種形式表現(xiàn)給用戶查看。后臺將客戶端傳來的查詢請求傳遞到查詢分析模塊,數(shù)據(jù)倉庫工具將其編譯、解析和優(yōu)化后生成MapReduce任務,存儲處理模塊就負責處理這些查詢任務,并將結果通過查詢分析模塊返回到結果輸出模塊,最后以可視化的形式呈現(xiàn)給用戶。
為了驗證基于Hadoop的高校日志分析系統(tǒng)的有效性,我們構建了一個特定的實驗平臺并采用了特定測試方法。
1.實驗環(huán)境
硬件平臺包含6臺服務器,其中的一臺用來作為HDFS的元數(shù)據(jù)節(jié)點,4臺作為數(shù)據(jù)節(jié)點,這5臺機器充當Hadoop集群,另外一臺用作與之進行對比的單機。具體配置如下:處理器類型:Intel(R)Core(TM)2Duo E6600 @2.40GHz;內存大?。?GB。集群服務器操作系統(tǒng):ubuntu-12.04,Hadoop版本:Hadoop-0.23.1。
2.實驗數(shù)據(jù)及內容
在實驗中,輸入內容為實際的系統(tǒng)產生的幾組日志數(shù)據(jù),這幾組的數(shù)據(jù)量大小不同,在Hadoop集群和傳統(tǒng)單機模式下分別處理這些數(shù)據(jù),最后統(tǒng)計出兩者消耗時間的長短,進行結果的對比。統(tǒng)計結果如表1所示。
表1 實驗結果統(tǒng)計表
3.實驗結果分析
分析實驗結果發(fā)現(xiàn),在日志數(shù)據(jù)量小于2G的情況下,Hadoop集群的時間消耗大于單機處理,其處理海量數(shù)據(jù)的優(yōu)勢并未發(fā)揮出來。但當需要處理的日志數(shù)據(jù)大小超過2.5G時,Hadoop集群的優(yōu)勢就會慢慢顯現(xiàn)出來,且隨著數(shù)據(jù)量的逐漸增大,其優(yōu)勢也會越來越明顯,具體如圖4所示。
圖4 Hadoop集群與單機模式下耗時對比圖
高校系統(tǒng)日志分析是高校日常管理的重要保障之一,本文提出基于Hadoop的高校日志分析系統(tǒng),利用Hadoop集群在海量數(shù)據(jù)處理方面的優(yōu)勢,高效地進行海量日志數(shù)據(jù)的分析和挖掘,具有很高的實用價值。實際上Hadoop還有很大的應用空間,這些還有待進一步的研究。
[1]楊鋒英,劉會超.基于Hadoop的在線網絡日志分析系統(tǒng)研究[J].計算機應用與軟件,2014(8):311-316.
[2]胡光民,周亮,柯立新.基于Hadoop的網絡日志分析系統(tǒng)研究[J].電腦知識與技術,2010(22):6163-6164,6185.
[3]程苗,陳華平.基于Hadoop的Web日志挖掘[J].計算機工程,2011(11):37-39.
[4]Yang F Y,Liu H Ch.Research in HDFS based on Campus Network Environment[C]//Processing of 2011 International Conference on Image Analysis and Signal Processing.WuHan,China,2011:648-652.
[5]Lou J G,Fu Q,Wang Y,et al.Mining dependency in distribute system through unstructured logs analysis[J]. Operating Systems Review(ACM),2010,44(1):91-96.
[6]劉永增,張曉景,李先毅.基于 Hadoop/Hive的Web日志分析系統(tǒng)的設計[J].廣西大學學報(自然科學版),2011(S1):314-317.
(編輯:魯利瑞)
TP393
:B
:1673-8454(2015)16-0082-03
北京信息科技大學教改項目(2015JGD06,2015JGYB48);科研基金項目(1525015)。