◆黃文涵 鐘全德
(四川長(zhǎng)虹電子控股集團(tuán)有限公司 四川 621000)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)站訪問(wèn)成為人們的日常行為,同時(shí)在后臺(tái)產(chǎn)生了大量的數(shù)據(jù)。如何讓數(shù)據(jù)產(chǎn)生價(jià)值,為網(wǎng)站以及系統(tǒng)運(yùn)營(yíng)提供決策支持,提升用戶體驗(yàn)成為了亟須解決的問(wèn)題。本文旨在為用戶提供一個(gè)靈活方便的平臺(tái),根據(jù)不同應(yīng)用場(chǎng)景,進(jìn)行數(shù)據(jù)分析并統(tǒng)計(jì)結(jié)果,輔助網(wǎng)站系統(tǒng)決策或修改。
深入分析系統(tǒng)操作日志和用戶上網(wǎng)行為,了解用戶瀏覽網(wǎng)頁(yè)的行為規(guī)律和分析用戶行為,從而構(gòu)建一個(gè)滿足不同需求的系統(tǒng)日志或用戶行為日志分析系統(tǒng)是十分必要的。用戶行為分析是指分析用戶訪問(wèn)網(wǎng)站的日志數(shù)據(jù),改善網(wǎng)站訪問(wèn)體驗(yàn)或改進(jìn)系統(tǒng)設(shè)計(jì)。網(wǎng)站日志包含大量具有指導(dǎo)性和有價(jià)值的用戶行為信息,為分析用戶的在線行為提供了強(qiáng)大的數(shù)據(jù)支撐。目前,各種類型的日志數(shù)據(jù)隨著互聯(lián)網(wǎng)及其各種應(yīng)用的發(fā)展而大量增長(zhǎng),以前僅具備單臺(tái)服務(wù)器架構(gòu)的用戶行為分析系統(tǒng)已無(wú)法滿足用戶日益增長(zhǎng)的現(xiàn)實(shí)需求,傳統(tǒng)的Hadoop 具有速度慢、算子少等缺點(diǎn),而Spark 是一種用于處理海量數(shù)據(jù)的通用高速分布式計(jì)算框架。同時(shí),Spark 計(jì)算框架附帶了一個(gè)機(jī)器學(xué)習(xí)庫(kù),可以為用戶行為分析提供技術(shù)支持,也是構(gòu)建功能齊全的用戶行為分析系統(tǒng)的理想選擇。
系統(tǒng)包括離線分析和實(shí)時(shí)分析兩大功能模塊。
用戶訪問(wèn)會(huì)話聚合統(tǒng)計(jì):統(tǒng)計(jì)訪問(wèn)時(shí)長(zhǎng)在0~3 的session(會(huì)話)占比,4~6 的session 占比等。
分析用戶訪問(wèn)的會(huì)話數(shù)據(jù):根據(jù)用戶指定條件,選擇滿足指定條件(如按年齡,職業(yè)或城市的篩選條件)的用戶。按條件靈活過(guò)濾,允許用戶對(duì)感興趣和有關(guān)用戶組執(zhí)行后續(xù)復(fù)雜業(yè)務(wù)邏輯的統(tǒng)計(jì)和分析。
按時(shí)間比例隨機(jī)抽取會(huì)話:按時(shí)間比例隨機(jī)抽取。
Top10 活躍會(huì)話:從Top10 熱門類別中獲取每個(gè)類別點(diǎn)擊次數(shù)最多的前10 個(gè)會(huì)話,以及相應(yīng)的訪問(wèn)詳細(xì)信息。
頁(yè)面單跳轉(zhuǎn)換率:根據(jù)指定的日期范圍和頁(yè)面流ID,判斷計(jì)算頁(yè)面流ID 中每?jī)身?yè)組成的頁(yè)面切片,并判斷其訪問(wèn)量是多少。
區(qū)域熱門Top3 商品:每個(gè)區(qū)域中最受歡迎的Top3 項(xiàng)目。
廣告點(diǎn)擊流量實(shí)時(shí)統(tǒng)計(jì):實(shí)時(shí)動(dòng)態(tài)黑名單機(jī)制,拉黑每天點(diǎn)擊同一個(gè)廣告100 多次的用戶,同時(shí)建立基于黑名單的非法廣告點(diǎn)擊流量過(guò)濾機(jī)制。
獲取點(diǎn)擊、下單、支付次數(shù)排名的Top10:通過(guò)過(guò)濾會(huì)話來(lái)計(jì)算我們要訪問(wèn)的所有類別(點(diǎn)擊,下單,支付)。
基于開(kāi)源Spark 框架,應(yīng)用Kafka 作為消息中間件,HDFS 作為分布式文件系統(tǒng)存儲(chǔ)日志數(shù)據(jù),MySQL 作為存儲(chǔ)數(shù)據(jù)庫(kù)。
網(wǎng)站系統(tǒng)實(shí)時(shí)產(chǎn)生用戶行為數(shù)據(jù),一部分實(shí)時(shí)數(shù)據(jù)(相對(duì)較少)傳遞至Kafka 消息隊(duì)列,一部分日志數(shù)據(jù)(相對(duì)較多)存入緩存磁盤;Kafka 消息隊(duì)列的數(shù)據(jù)作為流數(shù)據(jù)傳入Spark Streaming 進(jìn)行批處理并直接存儲(chǔ)至MySQL 數(shù)據(jù)庫(kù),而硬盤中的日志緩存數(shù)據(jù)先傳入日志收集系統(tǒng)Flume,F(xiàn)lume 將數(shù)據(jù)進(jìn)行簡(jiǎn)單處理后寫入分布式文件系統(tǒng)(HDFS)中,Spark 計(jì)算引擎引用HDFS 中的日志數(shù)據(jù)進(jìn)行具體的數(shù)據(jù)分析等操作來(lái)進(jìn)行實(shí)時(shí)分析,并將部分結(jié)果傳入MySQL。用戶通過(guò)網(wǎng)站系統(tǒng)直接訪問(wèn)MySQL 的方式獲取數(shù)據(jù)來(lái)進(jìn)行離線分析等操作,或者直接得到某些數(shù)據(jù)分析結(jié)果。具體架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
系統(tǒng)功能主要包括兩部分,第一部分是對(duì)用戶訪問(wèn)網(wǎng)站產(chǎn)生日志進(jìn)行離線分析。第二部分是對(duì)網(wǎng)站廣告的點(diǎn)擊流量實(shí)時(shí)統(tǒng)計(jì)分析。具體功能結(jié)構(gòu)圖如圖2所示。
圖2 系統(tǒng)功能結(jié)構(gòu)圖
系統(tǒng)最終將數(shù)據(jù)存儲(chǔ)至MySQL 數(shù)據(jù)庫(kù),處理業(yè)務(wù)邏輯時(shí)與MySQL 交互頻繁,通過(guò)批量執(zhí)行SQL 語(yǔ)句來(lái)優(yōu)化性能,并通過(guò)PreparedStatement 方法批處理多個(gè)SQL 語(yǔ)句。即便同時(shí)有數(shù)萬(wàn)個(gè)SQL語(yǔ)句執(zhí)行時(shí),也只需要編譯一次,這種批量執(zhí)行SQL 語(yǔ)句方式可以大大提高性能。
會(huì)話聚合自定義Accumulator(累加器),在聚合會(huì)話統(tǒng)計(jì)功能中,系統(tǒng)能夠統(tǒng)計(jì)各個(gè)不同持續(xù)時(shí)間會(huì)話數(shù)占會(huì)話總數(shù)的比例、各個(gè)不同步長(zhǎng)會(huì)話數(shù)占會(huì)話總數(shù)的比例。Spark 分布式計(jì)算平臺(tái),不能使用常規(guī)的集合來(lái)存儲(chǔ)并計(jì)數(shù),在此采用Spark 中的Accumulator 來(lái)計(jì)數(shù)。這里采用非傳統(tǒng)的方式,定制一個(gè)累加器,實(shí)現(xiàn)更復(fù)雜的計(jì)算邏輯,累加器維護(hù)所有范圍間隔的統(tǒng)計(jì)邏輯。運(yùn)維人員只需維護(hù)Accumulator 中的代碼,即可維護(hù)系統(tǒng)會(huì)話聚合統(tǒng)計(jì)的功能,從而大大降低了維護(hù)成本。
系統(tǒng)獲取和存儲(chǔ)的數(shù)據(jù)通過(guò)設(shè)計(jì)對(duì)應(yīng)的數(shù)據(jù)庫(kù)表來(lái)實(shí)現(xiàn),創(chuàng)建名為sessionanalyze 的數(shù)據(jù)庫(kù),系統(tǒng)中用到的所有數(shù)據(jù)和分析結(jié)果都存儲(chǔ)在此數(shù)據(jù)庫(kù)中。主要數(shù)據(jù)表設(shè)計(jì)如下:
4.3.1 任務(wù)表
基于特定篩選參數(shù),平臺(tái)用戶提交的分析任務(wù)信息存儲(chǔ)在該表中。
表1 任務(wù)表
4.3.2 會(huì)話明細(xì)表
用于存儲(chǔ)隨機(jī)提取的會(huì)話和top10 類別會(huì)話詳細(xì)數(shù)據(jù)。
表2 會(huì)話明細(xì)表
4.3.3 實(shí)時(shí)分析表
廣告點(diǎn)擊狀態(tài)表:用于存儲(chǔ)每個(gè)省的每個(gè)城市中每個(gè)廣告的點(diǎn)擊流量。
表3 廣告點(diǎn)擊狀態(tài)表
各省top3 廣告表:用于存儲(chǔ)每天各省top3 熱門廣告。
表4 各省top3 廣告表
系統(tǒng)功能主要包括離線分析和實(shí)時(shí)分析兩大模塊。
離線分析模塊:按條件過(guò)濾會(huì)話,會(huì)話聚合分析,按比例隨機(jī)抽取,點(diǎn)擊下單支付排名top10,排名top10 活躍會(huì)話和區(qū)域熱門排名top3 商品等模塊。
實(shí)時(shí)分析模塊:動(dòng)態(tài)黑名單及過(guò)濾,廣告的按區(qū)域?qū)崟r(shí)統(tǒng)計(jì),統(tǒng)計(jì)每天熱門廣告和各廣告小時(shí)級(jí)別窗口統(tǒng)計(jì)等模塊。
4.4.1 離線分析模塊
系統(tǒng)按上文描述功能需求模塊設(shè)計(jì)程序類,包括UsrActionAnalyze 、 SessionAggregate 、 SessionAccumulator 、PageOneStepConvertPage 及一些自定義UDF 和自定義分區(qū)排序類,以及工具類和Dao 層類等。包括:過(guò)濾聚合、隨機(jī)抽取、用戶購(gòu)物行為、活躍會(huì)話、區(qū)域熱門商品等。
4.4.2 實(shí)時(shí)分析模塊
(AdCilckRealTime 類)首先,每個(gè)批次從kafka 中消費(fèi)數(shù)據(jù),然后批量計(jì)算,最后存儲(chǔ)更新到MySQL 數(shù)據(jù)庫(kù)中。包括:黑名單及過(guò)濾、廣告的按區(qū)域統(tǒng)計(jì)、熱門廣告統(tǒng)計(jì)、小時(shí)級(jí)窗口統(tǒng)計(jì)等。
本文基于開(kāi)源Spark 設(shè)計(jì)的網(wǎng)站用戶行為分析系統(tǒng),有助于個(gè)人或企業(yè)用戶更加高效地獲取和處理用戶行為數(shù)據(jù),實(shí)現(xiàn)多維度統(tǒng)計(jì)分析和用戶挖掘,輸出用戶畫像,幫助電商商家、內(nèi)容提供商等了解自己的用戶,通過(guò)精準(zhǔn)營(yíng)銷、精準(zhǔn)推薦等方式獲得價(jià)值變現(xiàn)。
系統(tǒng)采用專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速的分布式計(jì)算引擎的開(kāi)源Spark 平臺(tái),具有易用性、通用性和更快的速度,比傳統(tǒng)的Hadoop 平臺(tái)的處理效率更高。結(jié)合大數(shù)據(jù)處理技術(shù)組件Kafka 作為消息隊(duì)列和Redis 作為中間緩存實(shí)現(xiàn)數(shù)據(jù)緩存處理,有效解決數(shù)據(jù)存取煩瑣的問(wèn)題,提高了處理數(shù)據(jù)效率。
具體實(shí)現(xiàn)中,根據(jù)應(yīng)用場(chǎng)景重定義了Spark 中的Accumulator 來(lái)實(shí)現(xiàn)復(fù)雜分布式計(jì)算;實(shí)時(shí)流計(jì)算中,采用redis 的自增代替原始的updateStateBykey 原語(yǔ),有效提升系統(tǒng)讀寫效率。
我國(guó)大數(shù)據(jù)產(chǎn)業(yè)持續(xù)保持快速增長(zhǎng),數(shù)據(jù)量年均增速超50%,2020年我國(guó)數(shù)據(jù)總量全球占比已達(dá)20%,已成為數(shù)據(jù)量最大、數(shù)據(jù)類型最豐富的國(guó)家之一。
在工業(yè)界,Spark 已經(jīng)在互聯(lián)網(wǎng)領(lǐng)域得到了廣泛的應(yīng)用。本系統(tǒng)基于Spark 分布式計(jì)算引擎進(jìn)行用戶行為數(shù)據(jù)分析,并提供一系列可供使用和擴(kuò)展的方法和接口,能夠很好地為企業(yè)提供技術(shù)支持。
Spark 已經(jīng)逐漸被接受并成為Hadoop 之后又一主流開(kāi)源框架,并作為通用海量數(shù)據(jù)并行處理框架,其高可用性和高可靠性都已趕超Hadoop,為大規(guī)模日志分析乃至數(shù)據(jù)挖掘都提供了很好的解決方案。
本系統(tǒng)基于Spark 設(shè)計(jì)了一個(gè)高效的網(wǎng)站用戶行為分析系統(tǒng),基于Spark 設(shè)計(jì)實(shí)現(xiàn)了用戶會(huì)話行為分析總體架構(gòu);該設(shè)計(jì)實(shí)現(xiàn)了實(shí)時(shí)流計(jì)算分析功能,實(shí)現(xiàn)了高效對(duì)接數(shù)據(jù)庫(kù)的輔助類等。系統(tǒng)具有高效獲取實(shí)時(shí)數(shù)據(jù)、對(duì)采集的數(shù)據(jù)進(jìn)行離線分析和實(shí)時(shí)分析等功能。系統(tǒng)主要針對(duì)日志服務(wù)器采集到的用戶行為日志進(jìn)行統(tǒng)計(jì)分析,從中獲得用戶行為規(guī)律,能夠自定義供用戶選擇的功能。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年5期