張俊瑞,代 洋
(1.晉中學(xué)院信息技術(shù)與工程學(xué)院,山西 晉中 030619;2. 北京易匯眾盟網(wǎng)絡(luò)技術(shù)有限公司,北京 100089)
基于Hadoop平臺(tái)的Web日志業(yè)務(wù)分析
張俊瑞1,代 洋2
(1.晉中學(xué)院信息技術(shù)與工程學(xué)院,山西 晉中 030619;2. 北京易匯眾盟網(wǎng)絡(luò)技術(shù)有限公司,北京 100089)
通過分析網(wǎng)站日志文件,可以清楚地知道一個(gè)網(wǎng)站每天的頁面訪問量、用戶訪問量、獨(dú)立IP數(shù)、用戶通過什么渠道和設(shè)備訪問網(wǎng)站等,這樣企業(yè)就可以通過對網(wǎng)站日志文件進(jìn)行數(shù)據(jù)分析進(jìn)而對網(wǎng)站進(jìn)行多方面的優(yōu)化建設(shè)。利用Hadoop平臺(tái)存儲(chǔ)并計(jì)算海量日志文件,利用Hive進(jìn)行數(shù)據(jù)倉庫建設(shè)和數(shù)據(jù)分析,使得數(shù)據(jù)更具有說服力,真正實(shí)現(xiàn)了讓數(shù)據(jù)驅(qū)動(dòng)業(yè)務(wù),進(jìn)而驅(qū)動(dòng)公司發(fā)展。
大數(shù)據(jù)平臺(tái);日志業(yè)務(wù)分析;數(shù)據(jù)倉庫
Web 2.0時(shí)代的到來,使網(wǎng)站日志數(shù)據(jù)的增長速度及交互功能都發(fā)生了很大的變化。利用傳統(tǒng)的日志分析工具很難實(shí)現(xiàn)PB數(shù)量級的網(wǎng)站日志的處理,因此需要優(yōu)秀、耐用且時(shí)效性強(qiáng)的處理平臺(tái)和分析工具來進(jìn)行數(shù)據(jù)處理和分析,以便更好地完成網(wǎng)站的優(yōu)化,提高網(wǎng)站訪問量,創(chuàng)造更大的商業(yè)價(jià)值。
從互聯(lián)網(wǎng)發(fā)展趨勢和行業(yè)內(nèi)成功經(jīng)驗(yàn)及案例來看,Hadoop+Hive已成為高效處理龐大數(shù)量級數(shù)據(jù)的平臺(tái)和分析工具。本文通過Hadoop+Hive實(shí)現(xiàn)Web日志業(yè)務(wù)分析及其可視化。首先搭建大數(shù)據(jù)集群平臺(tái)Hadoop,其次建設(shè)數(shù)據(jù)倉庫Hive對網(wǎng)絡(luò)日志進(jìn)行分析,最后將一些業(yè)務(wù)指標(biāo)通過可視化技術(shù)直觀展示出來。
物理機(jī)硬件:處理器采用Intel(R) Core (TM) i7-4500u 1.8GHz,內(nèi)存8.0GB,操作系統(tǒng)Windows 8。
虛擬機(jī)系統(tǒng):基于VMware Workstation創(chuàng)建了2臺(tái)虛擬機(jī)器,每臺(tái)的配置為2個(gè)單核CPU,2G內(nèi)存,30G硬盤,Ubuntu 14.0.4操作系統(tǒng)。
Hadoop[1]運(yùn)行在Linux系統(tǒng)上,所以O(shè)S選用Ubuntu 14.0.4,其次Hadoop是基于Java語言開發(fā)的,所以必須安裝JDK 1.7提供Java運(yùn)行環(huán)境。安裝Hadoop包含HDFS、MapReduce、YARN三部分,其中HDFS提供分布式存儲(chǔ)環(huán)境,MapReduce提供批處理計(jì)算,而YARN調(diào)度資源;安裝Hive建設(shè)數(shù)據(jù)倉庫對網(wǎng)站日志進(jìn)行數(shù)據(jù)分析得出對應(yīng)的業(yè)務(wù)指標(biāo);通過Sqoop將數(shù)據(jù)倉庫中表的數(shù)據(jù)導(dǎo)入到MySQL中。平臺(tái)規(guī)劃如表1所示。
表1 平臺(tái)規(guī)劃
大數(shù)據(jù)平臺(tái)的系統(tǒng)架構(gòu)從底端到上層分為五層,平臺(tái)架構(gòu)圖如圖1所示。
1) 數(shù)據(jù)采集層:將原始網(wǎng)站日志通過腳本語言代碼按時(shí)從Web服務(wù)器上采集到Linux文件系統(tǒng)中。
2) 數(shù)據(jù)存儲(chǔ)層:在數(shù)據(jù)采集層的基礎(chǔ)上,通過ETL進(jìn)行數(shù)據(jù)處理,形成供上層進(jìn)行離線計(jì)算和業(yè)務(wù)分析的數(shù)據(jù)集,并最后將其存儲(chǔ)在HDFS分布式文件系統(tǒng)之中。
3) 數(shù)據(jù)分析層:數(shù)據(jù)倉庫是面向業(yè)務(wù)決策的,通過Hive數(shù)據(jù)倉庫對網(wǎng)絡(luò)日志進(jìn)行離線分析,得出一些業(yè)務(wù)指標(biāo)用于決策。
4) 數(shù)據(jù)共享層:介于數(shù)據(jù)分析層和數(shù)據(jù)應(yīng)用層中間的橋梁,通過Sqoop將數(shù)據(jù)分析層的結(jié)果傳輸?shù)組ySQL數(shù)據(jù)庫中,以便于數(shù)據(jù)應(yīng)用層的使用。
5)數(shù)據(jù)應(yīng)用層:數(shù)據(jù)產(chǎn)生價(jià)值的出口,其將最終的分析結(jié)果通過可視化技術(shù)展示出來,發(fā)揮出數(shù)據(jù)驅(qū)動(dòng)決策的力量。
圖1 平臺(tái)架構(gòu)圖
1) 創(chuàng)建Hadoop用戶并安裝Java環(huán)境,具體步驟為:
a) 創(chuàng)建用戶名,使用/bin/bash/作為shell。
b) 為Hadoop用戶增加管理員權(quán)限。
c) 對Hadoop用戶設(shè)置密碼。
d) 安裝JDK 1.7版本。
2) 網(wǎng)絡(luò)配置:將集群所有的節(jié)點(diǎn)配置在同一局域網(wǎng)中,才能實(shí)現(xiàn)節(jié)點(diǎn)之間的互相連接,所以將Ubuntu的網(wǎng)絡(luò)配置修改為橋接(Bridge)模式。
3) 安裝SSH并配置SSH無密碼登錄節(jié)點(diǎn),具體步驟為:
a) 安裝SSH,生成Master節(jié)點(diǎn)的公鑰,Master可以無密碼ssh本機(jī)。
b) 配置Master節(jié)點(diǎn),使Master節(jié)點(diǎn)可以無密碼ssh節(jié)點(diǎn)Slave,在Slave節(jié)點(diǎn)上,將ssh公鑰加入授權(quán)。
c) 驗(yàn)證。在Master節(jié)點(diǎn)上ssh節(jié)點(diǎn)Slave。
4) 安裝Hadoop,配置集群環(huán)境,具體步驟為:
a) 安裝Hadoop,修改文件權(quán)限,配置環(huán)境變量,使環(huán)境變量生效。
b) 修改集群配置文件,配置集群環(huán)境,修改core-site.xml和hdfs-site.xml,設(shè)置備份一份,修改mapred-site.xml和yarn-site.xml。
c) 將Master節(jié)點(diǎn)上的Hadoop文件夾復(fù)制到Slave節(jié)點(diǎn)上。
總之,在高中語文教學(xué)過程中關(guān)注生命體驗(yàn),不僅體現(xiàn)了語文學(xué)科的人文性特點(diǎn),而且有助于學(xué)生形成正確的生命價(jià)值觀。語文教師應(yīng)將生命體驗(yàn)不斷地滲透教學(xué)過程中,培養(yǎng)學(xué)生的生命情懷,這樣既可以讓他們學(xué)到知識(shí),實(shí)現(xiàn)既定的教學(xué)目標(biāo),也能讓他們學(xué)會(huì)認(rèn)識(shí)生命的價(jià)值,獲得生命的成長,不斷向著理想的人生進(jìn)發(fā)。
5) 啟動(dòng)Hadoop集群,格式化Master節(jié)點(diǎn)上的namenode,在Master節(jié)點(diǎn)上啟動(dòng)Hadoop。
網(wǎng)站日志又叫做服務(wù)器日志,是記錄web服務(wù)器接收處理請求以及運(yùn)行時(shí)錯(cuò)誤等各種原始信息的以.log結(jié)尾的文件[2]。網(wǎng)站日志包含9項(xiàng)內(nèi)容,用空格分隔,分別為:IP地址、用戶標(biāo)識(shí)、訪問時(shí)間及時(shí)區(qū)、請求的頁面、請求狀態(tài)碼、返回文件的大小、鏈接來源、瀏覽器信息。
2.2.1 PV
PV(Page View)是頁面瀏覽次數(shù),網(wǎng)站每進(jìn)行一次頁面刷新PV+1。對所有訪問者來說,PV值是指其在一天中訪問頁面的總和,它是衡量網(wǎng)站活躍程度的指標(biāo)。通過對IP地址進(jìn)行計(jì)數(shù),從日志中獲取訪問次數(shù)可以得到PV的值。PV是衡量網(wǎng)站流量的兩項(xiàng)最基本指標(biāo)之一。
2.2.2 UV
UV(Unique Visitor)即獨(dú)立訪客數(shù),指一天內(nèi)訪問網(wǎng)站的人數(shù)。一天之中,UV只記錄進(jìn)入網(wǎng)站的具備獨(dú)立設(shè)備標(biāo)識(shí)的訪問者的數(shù)量,當(dāng)獨(dú)立訪客第二次進(jìn)行訪問時(shí)則不計(jì)數(shù)。UV可以體現(xiàn)用戶對網(wǎng)站的關(guān)注程度,是衡量網(wǎng)站流量的兩項(xiàng)最基本指標(biāo)之一。
2.2.3 獨(dú)立IP數(shù)
2.2.4 流量來源
流量來源是指用戶通過什么渠道訪問網(wǎng)站。通過網(wǎng)站日志的referer聚合之后可以分析出網(wǎng)站的流量來源。Referer表示該請求日志從哪里來,它可以分析網(wǎng)站的訪問來源,還可以用于分析用戶偏好等,是網(wǎng)站廣告投放評估的重要指標(biāo)[4]。網(wǎng)站流量來源反映了用戶通過什么途徑訪問了此網(wǎng)站。
2.2.5 移動(dòng)設(shè)備類型
該指標(biāo)統(tǒng)計(jì)的是用戶訪問網(wǎng)站所使用的不同設(shè)備的類型,如Android手機(jī)、Mac筆記本電腦等。通過對User Agent的匹配得出不同的移動(dòng)設(shè)備類型,對設(shè)備類型占比進(jìn)行統(tǒng)計(jì)和分析,針對設(shè)備類型占比高的設(shè)備具有的瀏覽器兼容性問題,必須優(yōu)先對其進(jìn)行處理并優(yōu)化網(wǎng)站。
2.3.1 前期準(zhǔn)備
1) 啟動(dòng)大數(shù)據(jù)平臺(tái)。在Master節(jié)點(diǎn)上啟動(dòng)NameNode、SecondaryNameNode和ResourceManager,在Slave節(jié)點(diǎn)上啟動(dòng)DataNode、NodeManager,使集群良好的運(yùn)行,然后在Master節(jié)點(diǎn)上啟動(dòng)Hive。
2) 使用Extract.sh腳本文件對原始日志進(jìn)行數(shù)據(jù)抽樣,得到一周的日志數(shù)據(jù),將抽樣后的網(wǎng)站日志數(shù)據(jù)的日期通過sed進(jìn)行日期時(shí)間處理。
3) 通過Transform.sh腳本文件對一周的日志數(shù)據(jù)進(jìn)行清洗,通過Python正則匹配,最終輸出規(guī)范化的日志數(shù)據(jù)格式,提高加載的效率,方便將處理好的規(guī)范化的數(shù)據(jù)加載至數(shù)據(jù)倉庫ODS層中。
2.3.2 數(shù)據(jù)倉庫建設(shè)
數(shù)據(jù)倉庫是一個(gè)面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策[5]。本文的數(shù)據(jù)倉庫分為ODS(Operational Data Store)層、DW(Data Warehouse)層和DM(Data Mining)層。
數(shù)據(jù)倉庫的建設(shè)步驟為:
1) 將進(jìn)行過數(shù)據(jù)清洗后的原始日志進(jìn)行源數(shù)據(jù)導(dǎo)入。
2)將源數(shù)據(jù)存儲(chǔ)在原始日志表(ods_weblog),然后對原始日志表進(jìn)行更深層次的拆解,將request請求進(jìn)行匹配得出請求路徑,最終得到請求頁面解析表。
3) 在dw_weblog_parser的基礎(chǔ)上,通過對agent字段進(jìn)行模式匹配,可以得到用戶訪問網(wǎng)站的移動(dòng)設(shè)備類型。網(wǎng)站的請求包含特定的模板,通過+wp-可以進(jìn)行過濾,最終得到dw_weblog_info表。
4) 通過對referer進(jìn)行聚合,可以得到一周之間的流量來源表。
5) 通過對device進(jìn)行聚合,可以得到一周之間的設(shè)備類型表。
6) 運(yùn)用業(yè)務(wù)指標(biāo)定義,對不同設(shè)備標(biāo)識(shí)進(jìn)行計(jì)數(shù)得到UV,對IP地址進(jìn)行計(jì)數(shù)得到PV,對不同的IP地址進(jìn)行計(jì)數(shù)得到IP。通過對一周時(shí)間的數(shù)據(jù)進(jìn)行分析,即可得到一周之中每天的UV、PV、IP,如圖2所示。
圖2 日志KPI分析過程
基于Hadoop集群平臺(tái),通過HDFS存儲(chǔ)海量日志文件,在Hive上構(gòu)建一個(gè)網(wǎng)絡(luò)日志數(shù)據(jù)倉庫是十分高效的,通過MR處理大量數(shù)據(jù)時(shí)性能的提高非??捎^。通過數(shù)據(jù)倉庫Hive對網(wǎng)絡(luò)日志文件進(jìn)行多維度分析,一方面可以提高數(shù)據(jù)分析的效率,另一方面可以通過數(shù)據(jù)挖掘出日志文件隱藏的價(jià)值,利用其結(jié)果可以進(jìn)行網(wǎng)站的數(shù)據(jù)化運(yùn)營,以便更好地對網(wǎng)站進(jìn)行優(yōu)化,也有利于網(wǎng)站的長遠(yuǎn)發(fā)展。
[1] 程苗,陳華平.基于Hadoop的Web日志挖掘[J].計(jì)算機(jī)工程,2011,37(11):37-39.
[2] 李鋰.淺議搜索引擎優(yōu)化策略[J].中小企業(yè)管理與科技,2008(30):239-239.
[3] 江三鋒,王元亮.基于Hive的海量web日志分析系統(tǒng)設(shè)計(jì)研究[J].軟件,2015,36(04):93-96.
[4] 李妹芳.ODPS權(quán)威指南:阿里大數(shù)據(jù)平臺(tái)應(yīng)用開發(fā)實(shí)踐[M].北京:人民郵電出版社,2015.
[5] 朱宏儒.信息技術(shù)在銀行信貸業(yè)務(wù)中的運(yùn)用[D].上海:華東理工大學(xué),2005.
AnalysisofWebLogServiceBasedonHadoopPlatform
Zhang Junrui1, Dai Yang2
(1.SchoolofInformationTechnologyandEngineering,JinzhongUniversity,JinzhongShanxi030619,China;2.BeijingZMTNetworkTechnologyCo.,Ltd.,Beijing100089,China)
By analyzing the web log file, some data of a website daily could be obtained, such as amount of page visit, independent IP numbers, number of user visiting, what channels and devices users access to the website. In this way, the enterprise could analyze the data of the website log file and optimize the website in many aspects. Hadoop platform is used to store and calculate massive log files, the data warehouse construction and data analysis are carried out by using Hive. which would make data more convincing and results more intuitive. It really enables the realizing of data driven-business and promotes the company's development.
big data platform;log business analysis;visualization;data warehouse
2017-10-30
張俊瑞(1980- ),女,山西襄汾人,講師,碩士研究生,主要研究領(lǐng)域?yàn)閿?shù)據(jù)挖掘、智能軟件技術(shù)。
1674- 4578(2017)06- 0071- 03
TP311
A