王 斌,李 超,蔣秋華
(1.中國鐵道科學(xué)研究院 研究生部,北京 100081;2.中國鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
基于Hadoop的自動售票日志分析系統(tǒng)設(shè)計(jì)
王 斌1,李 超2,蔣秋華2
(1.中國鐵道科學(xué)研究院 研究生部,北京 100081;2.中國鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
通過對自動售票系統(tǒng)日志數(shù)據(jù)分析,不僅能了解系統(tǒng)的運(yùn)行狀況,還能在日常維護(hù)中更容易地發(fā)現(xiàn)問題,降低維護(hù)成本,提高維護(hù)的效率。針對這一目的,本文基于Hadoop框架設(shè)計(jì)一個(gè)自動售票系統(tǒng)的日志分析系統(tǒng),搭建Hadoop集群環(huán)境,并對處于不同自動售票應(yīng)用服務(wù)器上的日志進(jìn)行收集,針對自動售票系統(tǒng)日志的特點(diǎn),編寫Map/Reduce算法,對收集到的日志進(jìn)行分析處理,使其結(jié)果滿足需求,同時(shí),驗(yàn)證基于Hadoop的自動售票日志分析系統(tǒng)的有效性及可行性。
Hadoop;自動售票機(jī);分布計(jì)算;日志分析
近年來,隨著鐵路信息化的發(fā)展,自動售票系統(tǒng)在國內(nèi)的高速鐵路已普遍使用。目前,全路自動售票機(jī)(TVM,Ticket Vending Machine)裝機(jī)量達(dá)3 000臺以上,日均售票量占總售票量的10%左右,在部分車站甚至高達(dá)40%。自動售票機(jī)的大量應(yīng)用,取得了很好的效果,不僅方便了旅客,而且很大程度上緩解了車站售票的壓力。然而,與此同時(shí),就會產(chǎn)生相當(dāng)大規(guī)模的日志數(shù)據(jù)。目前,在日常維護(hù)中都是通過人工查看這些日志文件來發(fā)現(xiàn)問題,這樣不僅對維護(hù)人員要求較高,而且效率低下,因此,如何存儲并高效處理這些日志數(shù)據(jù)就變得尤為重要。
Hadoop[1~2]是一個(gè)流行的大規(guī)模數(shù)據(jù)處理框架,它能夠運(yùn)行于多種平臺上,并且具有良好的健壯性和可擴(kuò)展性,在大規(guī)模數(shù)據(jù)處理方面具有一定的優(yōu)勢,成為進(jìn)行日志分析的有效解決方案。
Hadoop 的核心由HDFS(Hadoop Distributed File System)和MapReduce體現(xiàn)。HDFS提供了一個(gè)穩(wěn)定的文件系統(tǒng),而Map /Reduce提供一種分布式編程模型。一個(gè)HDFS 集群由一個(gè)稱為名稱節(jié)點(diǎn)(NameNode)和數(shù)個(gè)數(shù)據(jù)節(jié)點(diǎn)(Datanode)這兩類節(jié)點(diǎn)構(gòu)成,這兩類節(jié)點(diǎn)以管理者—工作者模式運(yùn)行。名稱節(jié)點(diǎn)負(fù)責(zé)維護(hù)整個(gè)文件系統(tǒng)。數(shù)據(jù)節(jié)點(diǎn)是文件系統(tǒng)中實(shí)際的工作者,它們提供存儲、定位塊的服務(wù),并定時(shí)向名稱節(jié)點(diǎn)匯報(bào)存儲塊的信息。Map /Reduce 可以使得程序分布到集群上并發(fā)執(zhí)行。Map /Reduce 將整個(gè)工作過程分為Map 階段和Reduce 階段。每個(gè)階段都以鍵/值對作為輸入、輸出。Map 將用戶的輸入數(shù)據(jù)以鍵/值對形式通過用戶自定義的映射過程轉(zhuǎn)變?yōu)橐唤M中間鍵/值對的集合。而Reduce 過程則會對中間生成的臨時(shí)中間鍵/值對作為輸入進(jìn)行處理,并輸出最終結(jié)果。目前,Hadoop被廣泛應(yīng)用于海量數(shù)據(jù)的處理。
2.1 日志分析系統(tǒng)整體架構(gòu)
日志分析系統(tǒng)的總體架構(gòu)如圖1所示。
圖1 日志分析系統(tǒng)架構(gòu)圖
2.1.1 日志收集模塊
對大規(guī)模日志數(shù)據(jù)進(jìn)行處理,要把分散在前端目標(biāo)主機(jī)上的日志文件進(jìn)行收集[3]:
(1)在前端目標(biāo)主機(jī),對原有系統(tǒng)的日志進(jìn)行收集并保存;
(2)將前端目標(biāo)主機(jī)上保存的日志文件傳輸?shù)?Hadoop 集群中;
(3)將處于Hadoop集群中的日志文件導(dǎo)入到HDFS,利用HDFS的存儲原理和備份機(jī)制,在各個(gè)節(jié)點(diǎn)間建立數(shù)據(jù)通信方式,配置相應(yīng)的數(shù)據(jù)節(jié)點(diǎn)、數(shù)據(jù)備份的數(shù)目及對應(yīng)的名稱節(jié)點(diǎn)信息。
日志傳輸?shù)姆绞接泻芏喾N,既可以通過腳本實(shí)現(xiàn),也可以通過現(xiàn)有的傳輸工具實(shí)現(xiàn),本系統(tǒng)采用Flume系統(tǒng)進(jìn)行日志采集。Flume是一個(gè)分布式、可靠和高可用的海量日志聚合的系統(tǒng),支持在系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù)。同時(shí),F(xiàn)lume提供對數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力,其數(shù)據(jù)源支持console(控制臺)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(日志系統(tǒng),支持TCP和UDP等2種模式),exec(命令執(zhí)行)等。其邏輯架構(gòu)如圖2所示。Agent代表一個(gè)需要進(jìn)行日志收集的節(jié)點(diǎn),其中Source表示數(shù)據(jù)來源,Sink表示數(shù)據(jù)去向[4]。
圖2 Flume邏輯架構(gòu)圖
由于現(xiàn)有的自動售票系統(tǒng)存在兩種模式:(1)車站自主管理模式,即各站自主管理,每個(gè)車站均配有自動售票服務(wù)器及附屬設(shè)備;(2)鐵路局集中模式,即在各個(gè)鐵路局設(shè)置自動售票應(yīng)用服務(wù)器集群,所有車站的終端設(shè)備都直接連接到鐵路局,將所有下轄車站的應(yīng)用處理服務(wù)全部集中管控,采用負(fù)載均衡器實(shí)現(xiàn)業(yè)務(wù)均衡處理,保證系統(tǒng)的高可靠性和高安全性[5]。因此,要想使用Flume進(jìn)行日志收集,需要在所有部署自動售票系統(tǒng)的應(yīng)用服務(wù)器節(jié)點(diǎn)上部署一個(gè)Agent,并在f l umeconf.properties文件中配置相應(yīng)的Source和Sink:
agent.sources=spooldirSource
agent.channels=memoryChannel
agent.sinks=hdfsSink
配置完成后,啟動每一個(gè)Agent節(jié)點(diǎn)。這樣,F(xiàn)lume系統(tǒng)就會自動將各節(jié)點(diǎn)上產(chǎn)生的日志文件收集到Hadoop集群中,以供分析。其日志收集流程如圖3所示。
圖3 日志收集流程圖
2.1.2 日志分析處理模塊
日志分析處理模塊是進(jìn)行大規(guī)模日志分析的核心,主要負(fù)責(zé)將收集到的日志進(jìn)行分析處理,得到想要的結(jié)果。在系統(tǒng)中,其目標(biāo)是處理所有自動售票應(yīng)用服務(wù)器上產(chǎn)生的日志文件,由于這些日志文件記錄了全國各個(gè)車站TVM終端發(fā)送的請求以及服務(wù)器的響應(yīng)信息,因此其數(shù)據(jù)規(guī)模相當(dāng)大。提高系統(tǒng)日志分析處理效率以及降低系統(tǒng)成本是設(shè)計(jì)系統(tǒng)時(shí)必須要考慮的一個(gè)方面。
系統(tǒng)采用Hadoop開源框架實(shí)現(xiàn)日志分析處理模塊。Hadoop對大規(guī)模數(shù)據(jù)的處理通過Map/ Reduce算法實(shí)現(xiàn)[6]。(1)JobTracker創(chuàng)建并初始化一個(gè)作業(yè)對象,根據(jù)已劃分的輸入數(shù)據(jù)創(chuàng)建Map任務(wù),并根據(jù)一定的屬性創(chuàng)建Reduce任務(wù)。(2)初始化完成后,JobTracker通過一定的調(diào)度算法為每個(gè)TaskTracker分配Map或者Reduce任務(wù)。(3)由TaskTracker執(zhí)行相應(yīng)處理。
2.1.3 結(jié)果展示模塊
通過Hadoop對日志進(jìn)行分析處理,其處理結(jié)果有多種展現(xiàn)形式??梢酝ㄟ^某些靜態(tài)網(wǎng)頁的形式產(chǎn)生,可以直接輸出到文檔中保存,也可以輸出到關(guān)系型數(shù)據(jù)庫中保存。由于設(shè)計(jì)日志分析系統(tǒng)的目的是要通過Web頁面進(jìn)行交互,用戶只需提交自己想要的查詢,系統(tǒng)進(jìn)行處理后會在頁面展現(xiàn)最終的結(jié)果,使用戶可以更直觀地了解到系統(tǒng)的運(yùn)行狀態(tài),發(fā)現(xiàn)系統(tǒng)存在的問題并及時(shí)處理,因此,本系統(tǒng)的結(jié)果將通過Web頁面的形式展現(xiàn)。例如,在實(shí)驗(yàn)中,通過分析處理,在頁面上展現(xiàn)一段時(shí)間內(nèi),自動售票終端發(fā)送各個(gè)請求的成功次數(shù)、失敗次數(shù)、成功響應(yīng)平均時(shí)間和超時(shí)次數(shù)等。
2.2 通過Hadoop進(jìn)行日志分析
2.2.1 實(shí)驗(yàn)環(huán)境的搭建
(1)硬件環(huán)境
本系統(tǒng)的實(shí)驗(yàn)在由4臺普通筆記本組成的集群上完成,其中一臺作為Master主機(jī),主要負(fù)責(zé)NameNode以及JobTracker的工作,NameNode是Hadoop分布式文件系統(tǒng)的管理者和調(diào)度者,JobTracker的主要職責(zé)是啟動、跟蹤和調(diào)度各個(gè)Slave節(jié)點(diǎn)的任務(wù)執(zhí)行。其余3臺作為Slave,負(fù)責(zé)DataNode以及TaskTracker的工作,DataNode 用來儲存系統(tǒng)中的數(shù)據(jù)信息及其備份,TaskTracker執(zhí)行Map任務(wù)以及Reduce 任務(wù),進(jìn)行實(shí)際的數(shù)據(jù)處理。
(2)軟件環(huán)境
操作系統(tǒng)采用SUSE10版本,Hadoop采用Hadoop1.1.1版本。
2.2.2 Hadoop日志分析主要算法
本文的日志數(shù)據(jù)來源于自動售票應(yīng)用服務(wù)器的日志文件,記錄了TVM終端用戶的請求行為和服務(wù)器響應(yīng)的結(jié)果,主要內(nèi)容如表1所示。
表1 自動售票系統(tǒng)日志內(nèi)容
實(shí)驗(yàn)通過對該日志文件分析,計(jì)算出不同請求的成功響應(yīng)與失敗響應(yīng)的次數(shù)以及相應(yīng)的平均時(shí)間,其分析算法主要過程如圖4所示,其中none、fail、suc分別代表未匹配到、匹配失敗、匹配成功的狀態(tài)標(biāo)簽。
圖4 程序流程圖
(1)導(dǎo)入HDFS中的日志文件分成M塊Split,將所有的Splits均衡地存儲在各個(gè)Slave節(jié)點(diǎn)。
(2)通過Hadoop的Map/Reduce算法對輸入分片Splits進(jìn)行處理。Map階段,對輸入文件進(jìn)行解析,通過終端ID以及終端身份信息進(jìn)行請求與相應(yīng)的匹配,將終端身份信息與終端ID拼接為key,如果請求與響應(yīng)匹配成功,則將“suc”與響應(yīng)時(shí)間拼接為value,如果匹配失敗,則value值為“fail:1”,如果未獲得響應(yīng)信息,則value值為“none:1”, 將
(3)根據(jù)需求,輸出Reduce的結(jié)果。
本文設(shè)計(jì)了Hadoop分布式環(huán)境下自動售票日志數(shù)據(jù)分析系統(tǒng)。在實(shí)驗(yàn)室集群環(huán)境中,對10 G的日志文件進(jìn)行了分析,總約有1 000萬條記錄,僅用時(shí)430 s分析完成。
從實(shí)驗(yàn)結(jié)果中可以看到:使用Hadoop建立的分布式日志分析系統(tǒng),在大規(guī)模日志數(shù)據(jù)處理方面具有明顯的優(yōu)勢,很大程度上節(jié)約了分析成本,提高了分析效率,因此具有很好的應(yīng)用價(jià)值和研究空間。本文只是初步實(shí)現(xiàn)了對自動售票系統(tǒng)日志簡單的處理,今后完全可以根據(jù)需求實(shí)現(xiàn)更加復(fù)雜的業(yè)務(wù),比如,對各個(gè)鐵路局的服務(wù)器運(yùn)行狀況進(jìn)行監(jiān)控,統(tǒng)計(jì)售票、取票情況,甚至能夠分析用戶的購票行為與使用習(xí)慣,這樣不僅能夠提高維護(hù)效率,降低維護(hù)成本,而且還能為決策者提供一種決策支持。
[1] Apache. Hadoop 1.1.1 Documentation[EB/OL]. http://hadoop. apache.org/docs/r1.1.1/.
[2] Tom White. Hadoop權(quán)威指南[M]. 曾大聃,周傲英,譯.北京:清華大學(xué)出版社,2010.
[3] 張興旺,李晨暉,秦曉珠. 云計(jì)算環(huán)境下大規(guī)模數(shù)據(jù)處理的研究與初步實(shí)現(xiàn)[J]. 現(xiàn)代圖書情報(bào)技術(shù),2011(4):17-23.
[4] Apache. Flume 1.4.0 User Guide[EB/OL]. http://f l ume.apache. org/FlumeUserGuide.html.
[5] 李士達(dá),蔣秋華,康 勇,韓新建. 鐵路旅客自動售票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 鐵路技術(shù)創(chuàng)新,2012(4):42-44.
[6] Shim, Kyuseok. MapReduce algorithms for big data analysis[J]. Lecture Notes in Computer Science, 2013(7813): 44-48.
責(zé)任編輯 楊利明
TVM Log Analysis System based on Hadoop
WANG Bin1, LI Chao2, JIANG Qiuhua2
( 1. Postgraduate Department, China Academy of Railway Sciences, Beijing 100081, China; 2. Institute of Computing Science, China Academy of Railway Sciences, Beijing 100081, China )
TVMs could produce a large number of log data which included much valuable information. From these information, we could know the status of our system and maintain the system more eff i ciently. In all ways of data processing, Hadoop was an open source framework which was used widely in large data sets processing. For this purpose, this paper designed a log analysis system of automatic ticketing system based on Hadoop, in this way, we could collect and analyze the log data of TVM and make the result meet our demand by Map/Reduce Algorithm. Meanwhile it was verif i ed that the System was effective and feasible.
Hadoop; Ticket Vending Machine(TVM); distributed computing; log analysis
U293.22∶TP39
A
1005-8451(2014)07-0020-04
2014-01-06
王 斌,在讀碩士研究生;李 超,助理研究員。