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