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

?

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

2019-07-26 07:40:24種蘭祥楊建鋒
中國教育信息化 2019年13期
關(guān)鍵詞:訪問量日志分布式

尹 鑫,種蘭祥 ,楊建鋒

(1.西北大學(xué) 現(xiàn)代教育技術(shù)中心,陜西 西安 710069;2.西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,陜西 西安710069)

一、引言

在“互聯(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腳本埋點的方式進(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ù)據(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)實意義。[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)行計算,以應(yīng)對具有較強的實時性、連續(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)的項目之一。Flume被用于將分布在不同服務(wù)器上的站點產(chǎn)生的網(wǎng)站日志數(shù)據(jù)實時統(tǒng)一收集到集群當(dāng)中。

2.Kafka

Kafka,即消息發(fā)布訂閱處理系統(tǒng)。Kafka最初是由LinkedIn公司為了處理高吞吐量的消息發(fā)布和訂閱而專門開發(fā)的一套分布式消息緩存隊列系統(tǒng),現(xiàn)已成為Apache軟件基金會頂級的分布式開源項目之一。Kafka能夠承受每秒10萬級以上的并發(fā)量,還可以橫向擴(kuò)展以增加吞吐量。由于它以多副本方式進(jìn)行數(shù)據(jù)的緩存,故有較為完善的數(shù)據(jù)恢復(fù)機制。目前已成為處理網(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ù)等,具有簡單、豐富、高可靠、松耦合和資源庫等特點,主要用于當(dāng)Kafka進(jìn)行數(shù)據(jù)緩存時進(jìn)行Broker和Topic的注冊,同時對程序進(jìn)行監(jiān)聽以存儲當(dāng)前的消費進(jìn)度信息。

4.Spark

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

5.可視化技術(shù)

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

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

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)行可視化展示。

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

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

本系統(tǒng)使用Flume對Web服務(wù)器產(chǎn)生的網(wǎng)站訪問日志數(shù)據(jù)進(jìn)行實時采集。搭建的數(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機制對指定Web服務(wù)器目錄下的日志文件進(jìn)行實時監(jiān)控采集。Agent主要由source、channel、sink三個組件組成。source從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以event的格式傳遞給channel;channel是一種短暫的存儲容器,它將從source處接收到的event格式的數(shù)據(jù)緩存起來,直到它們被sinks消費掉,它在source和sink間起著橋梁的作用;sink將數(shù)據(jù)傳輸?shù)酱鎯ζ骰蛘呔彺嫫髦小?/p>

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

圖2 數(shù)據(jù)采集架構(gòu)圖

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

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

圖3 數(shù)據(jù)緩存架構(gòu)圖

本系統(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所示。

圖4 消息事件副本結(jié)構(gòu)圖

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

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

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

每條原始的日志文件數(shù)據(jù)具體包含客戶端IP地址、客戶請求發(fā)生的時間、請求的方式、請求的網(wǎng)頁地址、請求所遵循的協(xié)議、請求返回的http狀態(tài)碼、頁面的字節(jié)大小、客戶的端代理幾部分信息。設(shè)計正則表達(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]

表1 日志字段正則對應(yīng)表

(3)站點分析

切分出對應(yīng)請求的網(wǎng)站部分。使用filter算子過濾掉訪問不成功的站點數(shù)據(jù),對相應(yīng)部分進(jìn)行進(jìn)一步切分,過濾掉HTTP的請求頭以及具體的請求信息,提取出對應(yīng)的站點域名并以域名為鍵值,使用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)過計算的分析結(jié)果,所以表結(jié)構(gòu)相對簡單,表結(jié)構(gòu)如圖5所示。

圖5 數(shù)據(jù)存儲結(jié)構(gòu)圖

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

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

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

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

本系統(tǒng)采用分布式架構(gòu),以Linux作為操作系統(tǒng)搭建集群,共創(chuàng)建5個節(jié)點。采用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è)計分析方法,以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.實現(xiàn)可視化

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

3.分析結(jié)果

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

圖6 系統(tǒng)動態(tài)可視化效果圖

五、結(jié)語

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

猜你喜歡
訪問量日志分布式
一名老黨員的工作日志
華人時刊(2021年13期)2021-11-27 09:19:02
扶貧日志
心聲歌刊(2020年4期)2020-09-07 06:37:14
分布式光伏熱錢洶涌
能源(2017年10期)2017-12-20 05:54:07
游學(xué)日志
分布式光伏:爆發(fā)還是徘徊
能源(2017年5期)2017-07-06 09:25:54
高職院校圖書館電子資源中數(shù)據(jù)庫的使用情況分析
卷宗(2016年12期)2017-04-19 20:57:30
如何做好搜索引擎優(yōu)化(SEO)提高新聞網(wǎng)站訪問量
活力(2016年9期)2016-08-01 22:41:45
一所大學(xué)有40人被確診為抑郁癥
健康管理(2016年7期)2016-05-14 11:38:41
基于DDS的分布式三維協(xié)同仿真研究
西門子 分布式I/O Simatic ET 200AL
通州市| 湛江市| 靖宇县| 崇州市| 康乐县| 济源市| 桓台县| 宁河县| 玉环县| 迁安市| 淳安县| 定边县| 崇礼县| 来安县| 平利县| 格尔木市| 沂南县| 桂林市| 巫溪县| 威远县| 信宜市| 崇仁县| 白城市| 土默特左旗| 德州市| 屯留县| 兴文县| 台州市| 张掖市| 桂东县| 固安县| 安乡县| 嘉兴市| 弥渡县| 宁阳县| 紫阳县| 隆林| 铜山县| 龙海市| 德兴市| 朝阳县|