国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Hadoop的民航日志分析系統(tǒng)及應(yīng)用

2017-03-06 00:10:08李建曾新勵
軟件導(dǎo)刊 2017年1期
關(guān)鍵詞:并行計算

李建+曾新勵

摘要摘要:民航信息系統(tǒng)日志包含大量信息,但由于日志數(shù)據(jù)非結(jié)構(gòu)化,不易被讀取且數(shù)據(jù)量巨大,難以通過人工分析得出有價值信息。Hadoop分布式計算技術(shù)恰好可以很好地解決這個問題。設(shè)計了基于Hadoop的民航日志分析系統(tǒng),系統(tǒng)結(jié)合數(shù)據(jù)挖掘領(lǐng)域經(jīng)典的KNN分類算法,對算法進行了并行化改進,給出算法在Hadoop平臺的MapReduce編程模型上的執(zhí)行流程。對系統(tǒng)進行單機和集群測試,集群系統(tǒng)在處理較大規(guī)模數(shù)據(jù)時更高效。實驗結(jié)果證明,系統(tǒng)具有較高的執(zhí)行效率和可擴展性,對民航日志分析具有較高的實用價值。

關(guān)鍵詞關(guān)鍵詞:日志分析;Hadoop;KNN算法;并行計算;MapReduce

DOIDOI:10.11907/rjdk.162386

中圖分類號:TP319文獻標(biāo)識碼:A文章編號文章編號:16727800(2017)001010004

引言

隨著民航信息化建設(shè)的深入,民航信息系統(tǒng)越來越多,復(fù)雜度越來越高。系統(tǒng)每天產(chǎn)生大量日志數(shù)據(jù),這些數(shù)據(jù)記錄著系統(tǒng)的運行狀態(tài)。目前民航系統(tǒng)日志數(shù)據(jù)分為兩部分:①過去運行生成的大文件,約56GB;②每天生成的文件,大約是200-300MB。日志是apache common格式,分析系統(tǒng)產(chǎn)生的日志數(shù)據(jù)成為了解系統(tǒng)安全與可擴展性的重要途徑,相關(guān)業(yè)務(wù)指標(biāo)可供運營決策者使用。

由于日志信息不易讀懂且數(shù)據(jù)量不斷增長,利用人工或傳統(tǒng)分析技術(shù)難以發(fā)掘出有效信息。Hadoop提供的分布式計算技術(shù)為解決此問題提供了思路。Hadoop平臺提供的分布式文件存儲和并行計算能力,充分利用了集群高速運算和存儲的優(yōu)點,用戶可在不了解分布式底層細節(jié)的情況下,利用Hadoop所提供的MapReduce并行計算框架,開發(fā)一個高度可擴展的分布式處理系統(tǒng),進行大數(shù)據(jù)分類工作。

數(shù)據(jù)分類作為數(shù)據(jù)挖掘領(lǐng)域的重要分支,是數(shù)據(jù)挖掘非常重要的研究方向[1],其中KNN分類算法是數(shù)據(jù)挖掘領(lǐng)域的經(jīng)典算法[2]。該算法是一種基于實例的學(xué)習(xí)算法,其核心是根據(jù)已知對象與未知對象之間相似度的比較來對未知對象進行分類。當(dāng)給定一個未知實例時,KNN 分類算法根據(jù)與該實例最近的k個實例進行分類。

本文基于Hadoop平臺下的MapReduce并行技術(shù),研究并實現(xiàn)民航日志分析系統(tǒng)。利用Hadoop提供的分布式存儲來存放日志數(shù)據(jù),結(jié)合KNN數(shù)據(jù)挖掘算法對數(shù)據(jù)進行更深層次的分析,提高數(shù)據(jù)利用價值。算法整體分為數(shù)據(jù)預(yù)處理、訓(xùn)練、分類3個階段。KNN分類算法進行MapReduce并行化的基本思路是:首先將訓(xùn)練樣本和測試樣本數(shù)據(jù)預(yù)處理并上傳到Hadoop的文件系統(tǒng)中,然后將計算量很大的數(shù)據(jù)預(yù)處理階段和訓(xùn)練階段作業(yè)內(nèi)容交由Map計算過程處理,完成測試樣本與訓(xùn)練樣本的歐式距離計算,再將Map計算結(jié)果提交到Reduce進行數(shù)據(jù)分類,最終得到測試樣本分類結(jié)果。

實驗選取系統(tǒng)產(chǎn)生的幾組日志數(shù)據(jù)在Hadoop集群上測試,并與單機環(huán)境比對。實驗結(jié)果證明,集群系統(tǒng)具有較高的執(zhí)行效率、良好的加速比和擴展性。

1相關(guān)工作

1.1Hadoop平臺

Hadoop是Apache軟件基金會的開源項目,也是并行處理大規(guī)模數(shù)據(jù)的代表性產(chǎn)品。用戶可以在不了解分布式底層細節(jié)的情況下,利用Hadoop提供的分布式系統(tǒng)基礎(chǔ)架構(gòu)開發(fā)分布式應(yīng)用,將集群存儲資源、網(wǎng)絡(luò)資源和計算資源統(tǒng)一起來,實現(xiàn)海量數(shù)據(jù)的高速運算和存儲。Hadoop層次結(jié)構(gòu)如圖1所示。

Hadoop框架最核心的設(shè)計是HDFS和MapReduce。HDFS是一個分布式文件系統(tǒng),具有高容錯性特點,可以部署在廉價硬件上,由一個名稱節(jié)點(NameNode)和N個數(shù)據(jù)節(jié)點(DataNode)組成。 NameNode節(jié)點是整個文件系統(tǒng)的管理節(jié)點,它維護著整個文件系統(tǒng)的目錄樹,文件根目錄的元信息和每個文件對應(yīng)的數(shù)據(jù)塊列表,接收用戶的操作請求,以及數(shù)據(jù)塊列表到具體存儲數(shù)據(jù)DataNode節(jié)點的映射。集群中的DataNode節(jié)點在NameNode節(jié)點的統(tǒng)一調(diào)度下提供數(shù)據(jù)文件的存儲服務(wù),并且提供數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制功能[4]。

1.2MapReduce分布式計算框架

MapReduce是一種并行編程模型,基于HDFS基礎(chǔ)上實現(xiàn),主要針對大規(guī)模數(shù)據(jù)集的并行計算。MapReduce編程模型原理:JobTracker主節(jié)點負責(zé)接收用戶提交的作業(yè),負責(zé)啟動、跟蹤任務(wù)執(zhí)行,對大數(shù)據(jù)集按塊進行分割,然后將數(shù)據(jù)塊分發(fā)到若干個TaskTracker節(jié)點上。TaskTracker節(jié)點負責(zé)執(zhí)行用戶自定義的MapReduce任務(wù),并將執(zhí)行完成得到的結(jié)果返回JobTracker主節(jié)點。整個計算過程中,數(shù)據(jù)的輸入輸出均采用鍵值對形式。MapReduce執(zhí)行流程如圖2所示。

1.3KNN分類算法

KNN分類算法是一種基于實例的學(xué)習(xí)算法,其原理簡單、易于實現(xiàn)。算法原理是將訓(xùn)練實例和測試實例看作n維空間內(nèi)的點,給定一條測試實例,搜索n維空間,找出與測試實例最相近的k個點,最后取這k個點中的多數(shù)類作為測試實例類別。相似度的度量方法采用空間內(nèi)兩個點的距離來衡量。兩點間距離越大,表示兩個點越不相似。選擇歐幾里得距離作為度量方法。由于KNN分類算法需要多次掃描數(shù)據(jù)集,前后之間沒有計算順序上的相關(guān)性,每個待分類的樣本都可以獨立進行KNN分類,因此可以用并行化方法來實現(xiàn)KNN算法。

2日志分析系統(tǒng)設(shè)計

2.1系統(tǒng)架構(gòu)

系統(tǒng)日志處理流程:①日志采集;②存儲;③日志清洗;④分析;⑤顯示,結(jié)構(gòu)如圖3所示。日志采集階段負責(zé)將日志服務(wù)器中指定的日志數(shù)據(jù)上傳到Hadoop集群中的HDFS文件系統(tǒng)。由于日志記錄中往往包含噪聲,需先進行必要的數(shù)據(jù)清洗,將清洗后存放在HDFS上的數(shù)據(jù)作為分析階段的數(shù)據(jù)輸入。分析階段KNN算法結(jié)合MapReduce編程模型,整體分為訓(xùn)練和分類兩個部分。KNN分類算法進行MapReduce并行化的基本思路:首先JobTracker主節(jié)點接受用戶請求,啟動TaskTracker節(jié)點執(zhí)行Map計算開始樣本訓(xùn)練,完成測試樣本與訓(xùn)練樣本的歐式距離計算;然后在執(zhí)行Map計算的節(jié)點執(zhí)行Combine函數(shù)對數(shù)據(jù)進行規(guī)約處理,以減少提交到Reduce節(jié)點的數(shù)據(jù)量;當(dāng)Reduce節(jié)點收到中間計算結(jié)果后進入分類階段,對測試樣本進行分類處理。分析結(jié)果仍然存儲在HDFS文件系統(tǒng)中,最后經(jīng)過頁面展示以可視化形式顯示給用戶。

2.2日志采集階段

日志采集階段使用flume技術(shù)。flume是一個分布式數(shù)據(jù)收集系統(tǒng),也是Hadoop生態(tài)系統(tǒng)的重要組件之一,具有高可靠、高可用、事務(wù)管理、失敗重啟等功能。flume啟動通過后臺腳本定時執(zhí)行,數(shù)據(jù)處理速度快[5]。flume核心是agent,agent是一個java進程,運行在日志收集端Web服務(wù)器中,通過agent收集每一個前端Web服務(wù)器中產(chǎn)生的日志數(shù)據(jù),然后暫存起來,再發(fā)送到目的地HDFS存儲系統(tǒng)。

2.3數(shù)據(jù)預(yù)處理階段

使用flume把日志數(shù)據(jù)導(dǎo)入到HDFS中,再使用MapReduce對HDFS中的原始數(shù)據(jù)進行清洗,將Web日志數(shù)據(jù)向量化表示。一條Web日志記錄往往不完整或者包含噪聲,實際使用時并無用處,需要預(yù)先處理[6]。例如請求一個URL頁面時,與頁面相關(guān)的js或樣式文件圖片等信息也會記錄在日志中,需要在預(yù)處理中刪除后綴為jpg等圖片格式、js等相關(guān)記錄行,只保留用戶IP地址、請求時間、請求方法、請求內(nèi)容、請求前的跳轉(zhuǎn)地址、瀏覽器類型及操作系統(tǒng)類型、服務(wù)器返回狀態(tài)相關(guān)內(nèi)容。實際情況中用戶可能使用代理或本地緩存,不同用戶可能使用相同IP地址訪問同一URL。對用戶進行個體識別有3種方法:如果用戶使用不同IP訪問同一URL則視為不同用戶;如果使用相同IP但瀏覽器和操作系統(tǒng)不同則視為不同用戶;如果用戶的請求頁面與之前的跳轉(zhuǎn)頁面沒有超鏈接關(guān)系也視為不同用戶[7]。識別出用戶后就可以用戶為單位識別單個用戶所訪問的所有頁面,用戶訪問網(wǎng)站時所瀏覽的所有頁面組成一個用戶記錄,然后根據(jù)訪問內(nèi)容將用戶分為不同用戶群。得到清洗后的數(shù)據(jù)仍然存儲在HDFS中,保留可計算的屬性值,最后剩下的屬性值用空格分開,減輕后期數(shù)據(jù)處理壓力,然后將訓(xùn)練數(shù)據(jù)上傳到HDFS指定目錄下,將測試數(shù)據(jù)上傳到指定待處理路徑下,作為分析階段的輸入數(shù)據(jù)。

2.4訓(xùn)練階段

訓(xùn)練階段主要任務(wù)是讀取包含用戶記錄的訓(xùn)練樣本與測試樣本,分別計算測試樣本與每個訓(xùn)練樣本的歐式距離,此任務(wù)交由Map函數(shù)執(zhí)行。Map函數(shù)對訓(xùn)練樣本按行讀取,把讀取到的數(shù)據(jù)以鍵值對的形式作為函數(shù)的輸入數(shù)據(jù),其中key為行號,value為訓(xùn)練樣本每行的樣本數(shù)據(jù)及樣本類別,輸入數(shù)據(jù)形式為<行號,樣本>。然后計算訓(xùn)練樣本與測試樣本的相似度,即它們之間的歐式距離,并記錄訓(xùn)練樣本類別,最后將結(jié)果以對的形式存入context集合中。其中輸出數(shù)據(jù)對的形式為<測試樣本行號,向量集合<相似度值,訓(xùn)練樣本類別>>。Map函數(shù)偽代碼如下:

3.1實驗環(huán)境及數(shù)據(jù)選取

為驗證基于Hadoop的民航日志分析系統(tǒng)性能和有效性,本實驗選取7臺服務(wù)器,1個主節(jié)點和5個從節(jié)點,前者主要配置為HDFS元數(shù)據(jù)節(jié)點,負責(zé)管理分布式數(shù)據(jù)和分解任務(wù)的執(zhí)行,后者配置為數(shù)據(jù)節(jié)點,負責(zé)分布式數(shù)據(jù)存儲以及任務(wù)的執(zhí)行。剩下的一臺作為與集群對比的單機。本實驗的輸入數(shù)據(jù)為民航系統(tǒng)產(chǎn)生的幾組日志數(shù)據(jù)。數(shù)據(jù)集具有52維,共計692 012個樣本,其中訓(xùn)練樣本為498 542個,測試樣本為193 470個,數(shù)據(jù)集大小3 000MB。

3.2單機處理比較實驗

本實驗分別在Hadoop集群和單機環(huán)境下處理數(shù)據(jù)規(guī)模逐漸增大的數(shù)據(jù)集,分別統(tǒng)計系統(tǒng)運行耗時長短,對結(jié)果進行對比分析。對比結(jié)果如表1所示。

3.3集群性能實驗

本實驗內(nèi)容為:運行KNN分類算法的一臺計算機與運行改進后并行算法的Hadoop集群在處理相同規(guī)模數(shù)據(jù)時,從數(shù)據(jù)讀入到處理完成所需要的時間。對比實驗中,測試元組及樣本數(shù)據(jù)量相同,Hadoop集群中節(jié)點數(shù)目逐步增加,實驗結(jié)果如圖4所示,橫坐標(biāo)為節(jié)點數(shù),縱坐標(biāo)為作業(yè)完成時間,單位為毫秒。

圖4中虛線表示單機處理所用時間,基本保持在6 000ms不變。實線表示Hadoop集群處理所用時間,曲線變化較為明顯。剛開始集群只有單個節(jié)點時任務(wù)執(zhí)行所需時間要遠高于單機所需時間,集群節(jié)點達到兩個時任務(wù)執(zhí)行時間比單機所花時間略長。隨著Hadoop集群節(jié)點數(shù)增加,任務(wù)執(zhí)行所需的時間逐步減少,特別是當(dāng)節(jié)點數(shù)超過3個時,集群優(yōu)勢開始顯現(xiàn),當(dāng)節(jié)點數(shù)達到7個時,時間節(jié)省非常明顯,體現(xiàn)出當(dāng)擴大Hadoop集群規(guī)模時,實施KNN并行算法有助于減少任務(wù)執(zhí)行所需時間。當(dāng)節(jié)點數(shù)目少于2個時,效率卻遠低于單機,集群優(yōu)勢無法體現(xiàn)。因為Hadoop集群任務(wù)的分發(fā)和任務(wù)的啟動需要消耗一定的計算資源,集群之間數(shù)據(jù)的交互需要通過網(wǎng)絡(luò)傳輸,數(shù)據(jù)的讀取依賴于網(wǎng)絡(luò)的傳輸速度,尤其是實際計算任務(wù)時間在總時間中所占比例較小時,集群優(yōu)勢難以體現(xiàn)。相對于單機執(zhí)行而言,數(shù)據(jù)只需在本地處理一次性讀入內(nèi)存,因此處理速度相對較快。由此可知,隨著節(jié)點數(shù)的增加,Hadoop集群的執(zhí)行效率要優(yōu)于單機上的執(zhí)行效率,且隨著數(shù)據(jù)量的逐漸增大,優(yōu)勢越加明顯。

4結(jié)語

民航系統(tǒng)日志分析與管理是民航系統(tǒng)日常管理的重要保障。本文基于Hadoop平臺使用MapReduce編程模型結(jié)合KNN算法,設(shè)計了民航日志分析系統(tǒng)。利用Hadoop集群在大數(shù)據(jù)處理上的優(yōu)勢,高效地進行日志數(shù)據(jù)分析與挖掘,具有很高的實用價值,實驗達到了預(yù)期目標(biāo)。相關(guān)實驗結(jié)果表明,在Hadoop平臺上處理大規(guī)模數(shù)據(jù)集時,在數(shù)據(jù)規(guī)模相同的情況下,算法的執(zhí)行效率與集群規(guī)模有明顯關(guān)系。當(dāng)集群規(guī)模逐步擴大,節(jié)點越多,加速比越明顯。下一步將嘗試將更多的算法移植到Hadoop集群中,進行更深入的研究。

參考文獻:

[1]JIAWEI HAN,MICHELINE,KAMBER.數(shù)據(jù)挖掘概念與技術(shù)[M].北京:機械工業(yè)出版社,2007:2031.

[2]COVER T,P HART.Nearest neighbor pattern classification[J].IEEE Trans on Information Theory,1967,13(1):2127.

[3]陸嘉恒.Hadoop實戰(zhàn)[M].北京:機械工業(yè)出版社,2011:180203.

[4]金松昌.基于HDFS的多用戶并行文件IO的設(shè)計與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2010:13.

[5]高洪,楊慶平,黃展江.基于Hadoop平臺的大數(shù)據(jù)分析關(guān)鍵技術(shù)標(biāo)準(zhǔn)化探討[J].信息技術(shù)與標(biāo)準(zhǔn)化,2013(5):2324.

[6]朱鶴樣.Web日志挖掘中數(shù)據(jù)預(yù)處理算法的研究[D].大連:大連交通大學(xué),2010.

[7]趙瑩瑩,韓元杰.Web日志數(shù)據(jù)挖掘中數(shù)據(jù)預(yù)處理模型的研究與建立[J].現(xiàn)代電子技術(shù),2007(4):103105.

猜你喜歡
并行計算
云計算中MapReduce分布式并行處理框架的研究與搭建
矩陣向量相乘的并行算法分析
并行硬件簡介
基于Matlab的遙感圖像IHS小波融合算法的并行化設(shè)計
科技視界(2016年11期)2016-05-23 08:13:35
武强县| 永福县| 乌什县| 清水河县| 井陉县| 黎平县| 沂源县| 宁强县| 隆回县| 肇源县| 耒阳市| 夏河县| 尚义县| 泰兴市| 阳信县| 天水市| 安溪县| 芜湖县| 泰来县| 福建省| 寻乌县| 大连市| 伊吾县| 达日县| 鲜城| 泾阳县| 都昌县| 翼城县| 措美县| 赣州市| 宝鸡市| 福州市| 两当县| 夏津县| 兴隆县| 北碚区| 桐庐县| 常山县| 龙川县| 阿克苏市| 昌江|