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

?

高校網(wǎng)站日志分析系統(tǒng)的研究與應(yīng)用

2019-09-09 07:39尹鑫種蘭祥楊建鋒
中國教育信息化·高教職教 2019年7期
關(guān)鍵詞:訪問量日志分布式

尹鑫 種蘭祥 楊建鋒

摘? ?要:針對高校網(wǎng)站管理者對網(wǎng)站訪問情況及時、直觀了解的需求,本文提出了一種以SparkStreaming為核心的分布式網(wǎng)站訪問日志分析系統(tǒng)。本系統(tǒng)使用Flume實(shí)時收集網(wǎng)站被訪問時產(chǎn)生的日志,使用Kafka對收集到的日志進(jìn)行緩存,使用Spark中的Streaming流處理框架按批次提取緩存的數(shù)據(jù),并通過其中的Translation和Action算子對流量、站點(diǎn)、地區(qū)、終端信息進(jìn)行分析,使用MySQL數(shù)據(jù)庫對分析結(jié)果進(jìn)行存儲。使用Echarts設(shè)計(jì)界面并結(jié)合Ajax等前端技術(shù)對分析結(jié)果進(jìn)行實(shí)時可視化處理。在分布式平臺下實(shí)現(xiàn)了一個實(shí)時可擴(kuò)展的日志數(shù)據(jù)分析系統(tǒng)。有效地支持了高校網(wǎng)站的管理工作。

關(guān)鍵詞:高校網(wǎng)站日志;分布式集群;SparkStreaming;可視化

中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1673-8454(2019)13-0064-04

一、引言

在“互聯(lián)網(wǎng)+教育”的時代背景下,作為高校信息化建設(shè)基礎(chǔ)的網(wǎng)站已經(jīng)成為高校對內(nèi)信息公開、對外開展交流、宣傳自身特色、彰顯辦學(xué)優(yōu)勢的最重要途徑和最便捷手段,其服務(wù)對象主要是校內(nèi)和校外學(xué)生、校友、普通公眾、政府、企事業(yè)單位和社會團(tuán)體。網(wǎng)站建設(shè)者和網(wǎng)站管理者最為關(guān)心的是網(wǎng)站的效果如何、訪問者是否找到所需信息,此時,網(wǎng)站訪問日志幾乎就成為獲取這些信息的唯一來源。傳統(tǒng)收集用戶訪問信息的方法是通過JavaScript腳本埋點(diǎn)的方式進(jìn)行收集。在用戶發(fā)送頁面請求時JavaScript添加用于追蹤的cookie,服務(wù)器端據(jù)此收集用戶的訪問信息并寫入數(shù)據(jù)庫中。每當(dāng)用戶發(fā)送一次請求都會進(jìn)行一次數(shù)據(jù)庫寫入,所以此方法拖延了網(wǎng)站的響應(yīng)速度,增大了服務(wù)器的開銷。直接對Web服務(wù)器自動記錄的網(wǎng)站訪問日志數(shù)據(jù)處理可以很好地解決這一問題。日志文件中記錄了訪問者瀏覽每個網(wǎng)站的基本信息、訪問狀態(tài)和訪問行為。但是,這些內(nèi)容是以非結(jié)構(gòu)化的文本形式存儲的,數(shù)據(jù)結(jié)構(gòu)較不規(guī)則。所以采用適合處理大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù)的大數(shù)據(jù)處理技術(shù)對網(wǎng)站訪問日志進(jìn)行處理。[1-3]

隨著互聯(lián)網(wǎng)的快速發(fā)展,出現(xiàn)了許多大數(shù)據(jù)相關(guān)技術(shù)。網(wǎng)站訪問日志具有量大、實(shí)時和真實(shí)等大數(shù)據(jù)特征,適合采用Flume、Kafka、Spark等大數(shù)據(jù)技術(shù)和方法對其進(jìn)行處理分析,輔助其它技術(shù)手段將分析結(jié)果可視化加工處理,以直觀、友好的形式予以展示,有助于網(wǎng)站建設(shè)者和網(wǎng)站管理者及時準(zhǔn)確地了解網(wǎng)站的受訪情況,包括用戶的分布狀況和用戶的訪問傾向等,以便做出適當(dāng)調(diào)整,對于新時代下推動學(xué)校信息化發(fā)展具有重要的現(xiàn)實(shí)意義。[4-6]

二、關(guān)鍵技術(shù)簡介

大數(shù)據(jù)處理是一種對大規(guī)模數(shù)據(jù)進(jìn)行分析處理的技術(shù),包括數(shù)據(jù)采集、數(shù)據(jù)緩存、數(shù)據(jù)分析、分析結(jié)果存儲、數(shù)據(jù)可視化幾部分,通?;诜植际郊軜?gòu)進(jìn)行計(jì)算,以應(yīng)對具有較強(qiáng)的實(shí)時性、連續(xù)性和自然性的數(shù)據(jù)。

1.Flume

Flume,即日志收集系統(tǒng)。Flume是由Cloudera公司提供的用于收集海量日志數(shù)據(jù)的開源的分布式采集系統(tǒng),具有高可用、高可靠特性,同時提供對數(shù)據(jù)做簡單處理,可十分靈活地對日志數(shù)據(jù)進(jìn)行傳輸,并寫到各種數(shù)據(jù)接受方?,F(xiàn)為Apache基金會Hadoop生態(tài)系統(tǒng)的項(xiàng)目之一。Flume被用于將分布在不同服務(wù)器上的站點(diǎn)產(chǎn)生的網(wǎng)站日志數(shù)據(jù)實(shí)時統(tǒng)一收集到集群當(dāng)中。

2.Kafka

Kafka,即消息發(fā)布訂閱處理系統(tǒng)。Kafka最初是由LinkedIn公司為了處理高吞吐量的消息發(fā)布和訂閱而專門開發(fā)的一套分布式消息緩存隊(duì)列系統(tǒng),現(xiàn)已成為Apache軟件基金會頂級的分布式開源項(xiàng)目之一。Kafka能夠承受每秒10萬級以上的并發(fā)量,還可以橫向擴(kuò)展以增加吞吐量。由于它以多副本方式進(jìn)行數(shù)據(jù)的緩存,故有較為完善的數(shù)據(jù)恢復(fù)機(jī)制。目前已成為處理網(wǎng)頁瀏覽、搜索以及其他動態(tài)數(shù)據(jù)流的首選系統(tǒng)。

3.Zookeeper

Zookeeper,即開源的分布式應(yīng)用程序協(xié)調(diào)服務(wù)。Zookeeper是Hadoop生態(tài)系統(tǒng)中的一個重要組件,能提供配置服務(wù)、名字服務(wù)、分布式同步、組服務(wù)等,具有簡單、豐富、高可靠、松耦合和資源庫等特點(diǎn),主要用于當(dāng)Kafka進(jìn)行數(shù)據(jù)緩存時進(jìn)行Broker和Topic的注冊,同時對程序進(jìn)行監(jiān)聽以存儲當(dāng)前的消費(fèi)進(jìn)度信息。

4.Spark

Spark,即大規(guī)模數(shù)據(jù)處理通用并行計(jì)算引擎。是使用Scala開發(fā)的類MapReduce的數(shù)據(jù)處理框架,具有計(jì)算速度快、容錯性強(qiáng)、易于擴(kuò)展的特性。相比Hadoop,它能將相同條件下的計(jì)算結(jié)果提高10~100倍。并且將計(jì)算結(jié)果存入內(nèi)存當(dāng)中,減少了將計(jì)算結(jié)果存于磁盤的讀寫開銷。Streaming是Spark框架中的分布式流式批處理大數(shù)據(jù)組件。它支持交互式計(jì)算和復(fù)雜算法,可用于分析和計(jì)算大規(guī)模流式數(shù)據(jù)。適合對實(shí)時性強(qiáng)的大量網(wǎng)站訪問日志數(shù)據(jù)進(jìn)行分析。[4][7]

5.可視化技術(shù)

Echarts是百度開源的圖表框架。Ajax是一種Web前端技術(shù),可以在不完全加載網(wǎng)頁的情況下實(shí)現(xiàn)局部界面的動態(tài)刷新。首先通過Echarts設(shè)計(jì)需要進(jìn)行展示的效果圖,再通過Ajax技術(shù)實(shí)時提取分析結(jié)果并對圖表中的數(shù)據(jù)進(jìn)行局部更新。

三、系統(tǒng)設(shè)計(jì)

1.系統(tǒng)總體架構(gòu)

高校網(wǎng)站訪問日志數(shù)據(jù)分析系統(tǒng)的總體架構(gòu)包括數(shù)據(jù)采集、數(shù)據(jù)傳輸、數(shù)據(jù)分析、分析結(jié)果存儲、結(jié)果可視化幾部分。系統(tǒng)總體架構(gòu)如圖1所示。其中Flume是數(shù)據(jù)收集系統(tǒng),Kafka是數(shù)據(jù)緩存系統(tǒng),Spark Streaming 是數(shù)據(jù)分析系統(tǒng),DataBase代表存儲分析結(jié)果的關(guān)系型數(shù)據(jù)庫,本系統(tǒng)采用的是MySQL。最后搭建網(wǎng)站將分析結(jié)果進(jìn)行可視化展示。

2.數(shù)據(jù)采集

本系統(tǒng)使用Flume對Web服務(wù)器產(chǎn)生的網(wǎng)站訪問日志數(shù)據(jù)進(jìn)行實(shí)時采集。搭建的數(shù)據(jù)采集架構(gòu)如圖2所示。由于學(xué)校網(wǎng)站數(shù)量較多、數(shù)據(jù)量較大,所以本系統(tǒng)搭建兩層Flume來應(yīng)對網(wǎng)站分布在不同Web服務(wù)器上的情況。繼而將不同Web服務(wù)器上產(chǎn)生的日志數(shù)據(jù)匯集到一起。使用其中的Agent機(jī)制對指定Web服務(wù)器目錄下的日志文件進(jìn)行實(shí)時監(jiān)控采集。Agent主要由source、channel、sink三個組件組成。source從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以event的格式傳遞給channel;channel是一種短暫的存儲容器,它將從source處接收到的event格式的數(shù)據(jù)緩存起來,直到它們被sinks消費(fèi)掉,它在source和sink間起著橋梁的作用;sink將數(shù)據(jù)傳輸?shù)酱鎯ζ骰蛘呔彺嫫髦小?/p>

本系統(tǒng)中的第一層Flume作為日志獲取節(jié)點(diǎn),把Agent搭建在產(chǎn)生日志數(shù)據(jù)的Web服務(wù)器上,以每個網(wǎng)站所在Web服務(wù)器的日志文件生成端作為第一層Flume中Agent的source端,配置連接channel,將第一層Flume的sink端類型設(shè)置為avro,即輸出到下一層Flume的指定端口。第二層Flume作為日志匯集節(jié)點(diǎn),將所有第一層Flume的sink端對接第二層Flume的source端。再將第二層Flume的sink端指定到Kafka集群的Topic,即將采集到的日志數(shù)據(jù)傳輸?shù)終afka。完成對實(shí)時產(chǎn)生的日志的收集。

3.數(shù)據(jù)緩存

為了防止集群服務(wù)器意外宕機(jī)造成的數(shù)據(jù)丟失以及訪問并發(fā)量特別高時日志數(shù)據(jù)量大對服務(wù)器計(jì)算產(chǎn)生沖擊的情況,本系統(tǒng)采用Kafka對Flume采集到的日志數(shù)據(jù)進(jìn)行短暫緩存。數(shù)據(jù)緩存集群的整體架構(gòu)如圖3所示。主要包含消息的生產(chǎn)者(Producer)、存儲消息事件內(nèi)容的集群服務(wù)器節(jié)點(diǎn)(Broker),以及消息的消費(fèi)者(Consumer)三大部分。Peoducer生產(chǎn)消息到Topic中,Consumer提取消息進(jìn)行消費(fèi)。

本系統(tǒng)將Flume中傳輸過來的日志數(shù)據(jù)創(chuàng)建為消息事件Topic,為不同類型的Web服務(wù)器產(chǎn)生的日志數(shù)據(jù)創(chuàng)建不同的Topic。將日志收集系統(tǒng)中第二層Flume的sink端作為生產(chǎn)者,生產(chǎn)者將產(chǎn)生的消息發(fā)送到指定的Topic中。每個Topic的具體內(nèi)容存儲在圖3所示的Broker中。為了保證系統(tǒng)的容錯性,將每個Topic設(shè)置多副本(Partition)存儲,Partition又分散存儲在不同的Broker中,每個Partition又劃分為多個Segment,其中存儲了Topic中的所有相關(guān)信息,當(dāng)集群發(fā)生錯誤時可據(jù)此進(jìn)行恢復(fù),具體存儲結(jié)構(gòu)如圖4所示。

Topic的消費(fèi)者對應(yīng)分析數(shù)據(jù)的Spark的Streaming端,提取Topic中的數(shù)據(jù)進(jìn)行消費(fèi)。在此過程中采用Zookeeper對相應(yīng)的服務(wù)器節(jié)點(diǎn)信息和不同的消息事件進(jìn)行注冊,并且在整個緩存過程中使用Zookeeper監(jiān)聽程序并存儲當(dāng)前的消費(fèi)進(jìn)度信息。

4.數(shù)據(jù)分析

(1)數(shù)據(jù)預(yù)處理

每條原始的日志文件數(shù)據(jù)具體包含客戶端IP地址、客戶請求發(fā)生的時間、請求的方式、請求的網(wǎng)頁地址、請求所遵循的協(xié)議、請求返回的http狀態(tài)碼、頁面的字節(jié)大小、客戶的端代理幾部分信息。設(shè)計(jì)正則表達(dá)式對每行日志數(shù)據(jù)進(jìn)行切分并過濾,以某條Nginx產(chǎn)生的日志數(shù)據(jù)為例,各部分對應(yīng)正則表達(dá)式如表1所示。

(2)流量分析

過濾出對應(yīng)的IP地址,以IP地址為key,調(diào)用ReduceByKey算子對IP地址進(jìn)行聚合操作生成新的RDD,遍歷最終的RDD將結(jié)果保存到數(shù)據(jù)庫中。[8]

(3)站點(diǎn)分析

切分出對應(yīng)請求的網(wǎng)站部分。使用filter算子過濾掉訪問不成功的站點(diǎn)數(shù)據(jù),對相應(yīng)部分進(jìn)行進(jìn)一步切分,過濾掉HTTP的請求頭以及具體的請求信息,提取出對應(yīng)的站點(diǎn)域名并以域名為鍵值,使用ReduceByKey算子進(jìn)行聚合操作生成新的結(jié)果RDD,并存儲。

(4)地區(qū)分析

提取出切分后對應(yīng)IP地址的部分,采用QQwry通過二分法進(jìn)行IP地址定位,以識別出的所在地為key,使用ReduceByKey算子對所在地進(jìn)行聚合操作生成新的RDD,遍歷RDD將結(jié)果存入數(shù)據(jù)庫中。

(5)終端分析

提取出對應(yīng)的客戶端代理信息,采用uasParser函數(shù)解析出所用的操作系統(tǒng)類型和版本信息、瀏覽器類型以及版本信息。

5.數(shù)據(jù)存儲

由于所存儲的數(shù)據(jù)為經(jīng)過計(jì)算的分析結(jié)果,所以表結(jié)構(gòu)相對簡單,表結(jié)構(gòu)如圖5所示。

以日期為單位,當(dāng)具體信息存在時則累加,不存在則新增。

四、系統(tǒng)的實(shí)現(xiàn)

高校網(wǎng)站日志分析系統(tǒng)的實(shí)現(xiàn)關(guān)鍵在于,運(yùn)用大數(shù)據(jù)相關(guān)技術(shù)搭建集群,完成數(shù)據(jù)的采集、緩存和分析,將分析結(jié)果以可視化的形式進(jìn)行展示。

1.開發(fā)語言與運(yùn)行環(huán)境

本系統(tǒng)采用分布式架構(gòu),以Linux作為操作系統(tǒng)搭建集群,共創(chuàng)建5個節(jié)點(diǎn)。采用Flume1.7.0搭建日志采集系統(tǒng),采用Kafka0.10.0.0搭建日志緩存系統(tǒng),以Zookeeper3.8.2對日志緩存系統(tǒng)進(jìn)行分布式協(xié)調(diào),以Spark2.2.0作為日志分析系統(tǒng),以Scala作為日志分析語言設(shè)計(jì)分析方法,以MySQL5.7.13作為數(shù)據(jù)庫存儲分析結(jié)果。采用SpringBoot2.0框架搭建網(wǎng)站進(jìn)行可視化展示,采用MyBatis對接數(shù)據(jù)庫,網(wǎng)站以Tomcat作為Web服務(wù)器,采用CSS、JavaScript等前端語言進(jìn)行開發(fā)。

2.實(shí)現(xiàn)可視化

調(diào)用Echarts的地圖框架分別繪制全國各省市地圖。構(gòu)建坐標(biāo)軸,匹配當(dāng)前所在地對應(yīng)的經(jīng)緯度坐標(biāo)并在圖上進(jìn)行標(biāo)記。在標(biāo)記點(diǎn)處添加其對應(yīng)的訪問量。當(dāng)有新增的訪問地時,添加當(dāng)前訪問地區(qū)到所訪地區(qū)的訪問發(fā)起曲線。并在旁邊繪制柱狀圖表示訪問量Top10的地區(qū)。使用Echarts的柱狀圖對今天到當(dāng)前為止Top10的站點(diǎn)及其訪問量進(jìn)行統(tǒng)計(jì),并結(jié)合餅狀圖和排序函數(shù)顯示訪問量占比。使用Echarts的坐標(biāo)圖框架以時間為單位對總的PV和UV數(shù)量進(jìn)行可視化展示,并顯示某一時段內(nèi)訪問量的最大值、最小值、平均值。采用Ajax技術(shù)對數(shù)據(jù)進(jìn)行實(shí)時刷新。

3.分析結(jié)果

高校網(wǎng)站日志分析系統(tǒng)以秒為單位對高校實(shí)時產(chǎn)生的網(wǎng)站日志數(shù)據(jù)同時進(jìn)行了流量分析、站點(diǎn)分析、訪問終端分析、訪客歸屬地分析,并將每批次數(shù)據(jù)的分析結(jié)果累計(jì)存儲到當(dāng)天已產(chǎn)生的分析信息中。將當(dāng)天的分析信息進(jìn)行實(shí)時動態(tài)展示,系統(tǒng)最終的動態(tài)可視化效果如圖6所示。信息部門的網(wǎng)站管理者通過本系統(tǒng)的展示頁面,可以實(shí)時獲取到當(dāng)天到當(dāng)前時刻為止本校網(wǎng)站的總訪問量以及訪客的數(shù)量、當(dāng)前最熱門的前10個受訪站點(diǎn)以及每個站點(diǎn)的訪問量、當(dāng)日發(fā)生訪問行為的地區(qū)以及各個地區(qū)的訪問量,還有用戶發(fā)起訪問時所用終端的類型以及各種類型的占比。

五、結(jié)語

本系統(tǒng)采用Spark、Flume、Kafka大數(shù)據(jù)技術(shù)結(jié)合Echarts等可視化技術(shù)開發(fā)了高校網(wǎng)站日志實(shí)時分析系統(tǒng)。實(shí)現(xiàn)了對高校網(wǎng)站訪問日志這一特殊的文本數(shù)據(jù)進(jìn)行分析展示。相比傳統(tǒng)的通過JS前端埋點(diǎn)的分析方式,本系統(tǒng)極大地減少了瀏覽器與服務(wù)器之間的交互,從而提高了分析的效率,使管理者能夠及時直觀地了解學(xué)校網(wǎng)站的受訪情況。同時采用分布式架構(gòu)降低了硬件設(shè)備的成本。

參考文獻(xiàn):

[1]胡水星.教育數(shù)據(jù)挖掘及其教學(xué)應(yīng)用實(shí)證分析[J].現(xiàn)代遠(yuǎn)距離教育,2017(4):29-37.

[2]陳鳳.大數(shù)據(jù)下的高校學(xué)生管理可視化平臺研究[J].軟件工程,2017(6):48-51.

[3]裴瑩,付世秋,吳鋒.我國教育大數(shù)據(jù)研究熱點(diǎn)及存在問題的可視化分析[J].中國遠(yuǎn)程教育,2017(12):46.

[4]李慧芳,白珊,馬強(qiáng),賈鑫.基于Spark的智慧校園數(shù)據(jù)挖掘研究[J].智能計(jì)算機(jī)與應(yīng)用,2016(6):106.

[5]陳桂香.大數(shù)據(jù)對我國高校教育管理的影響及對策研究[D].武漢大學(xué),2017.

[6]張勝,趙玨,陳榮元.網(wǎng)絡(luò)安全日志可視化分析研究進(jìn)展[J].計(jì)算機(jī)科學(xué)與探索,2018(5):681-696.

[7]韓德志,陳旭光,雷雨馨,戴永濤,張肖.基于Spark Streaming的實(shí)時數(shù)據(jù)分析系統(tǒng)及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2017(5):1263-1269.

[8]Ilias Mavridis,Helen Karatza.Performance evaluation of cloud-based log file analysis with Apache Hadoop and Apache Spark[J].The Journal of Systems & Software,2017(125):133-151.

(編輯:王天鵬)

猜你喜歡
訪問量日志分布式
一名老黨員的工作日志
扶貧日志
游學(xué)日志
如何做好搜索引擎優(yōu)化(SEO)提高新聞網(wǎng)站訪問量
如何做好搜索引擎優(yōu)化(SEO)提高新聞網(wǎng)站訪問量
基于DDS的分布式三維協(xié)同仿真研究
西門子 分布式I/O Simatic ET 200AL
一種基于粗集和SVM的Web日志挖掘模型
台州市| 洪雅县| 斗六市| 琼中| 库尔勒市| 方城县| 阜平县| 余干县| 四子王旗| 灵山县| 康马县| 屏东县| 赤峰市| 集安市| 通江县| 和硕县| 开鲁县| 吐鲁番市| 文水县| 循化| 宜都市| 平果县| 建瓯市| 阳城县| 德令哈市| 萨嘎县| 大埔县| 汤原县| 德阳市| 建宁县| 喀喇| 竹溪县| 三穗县| 翁牛特旗| 娄底市| 宜兰市| 新巴尔虎右旗| 察隅县| 九龙坡区| 泽普县| 托里县|