• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Spark Sreaming網站流量實時分析系統(tǒng)的設計與實現

      2019-03-11 07:29:31劉珍方明
      智能計算機與應用 2019年6期

      劉珍 方明

      摘要:針對互聯網技術快速發(fā)展,用戶對各種網站訪問量急劇加大,日志數據急劇增加的現狀,采用Hbase數據庫,Flume、Kafka分布式發(fā)布訂閱消息系統(tǒng)和Spark Streaming流計算框架,設計實現基于Spark Sreaming的網站流量實時分析系統(tǒng),深入探討了網站流量的分析角度和指標,展示了網站的運營情況,從而引導網站開發(fā)、運營人員作出相關決策來改進網站的服務,為網站維護、制定網站營銷策略提供有力的依據。

      關鍵詞:Spark Streaming;網站流量分析:HBase;Kafka

      0引言

      隨著互聯網技術的發(fā)展。用戶對各類網站的訪問量急劇加大,導致日志數據急速增加,數據類型也紛繁復雜。因此日志數據的產生、規(guī)模、存儲、處理方式也悄然發(fā)生變化。大數據時代,網站運營管理方應及時地對網站流量和用戶訪問情況進行統(tǒng)計分析,通過數據來分析用戶的瀏覽習慣,可對優(yōu)化網站運營架構、調整推廣策略起到積極的作用。網站流量統(tǒng)計是改進網站服務的重要手段之一。通過獲取用戶在網站的行為,對有關數據進行統(tǒng)計、分析,從而發(fā)現用戶訪問網站的規(guī)律。通過對網站進行流量分析,可以刻畫出網站近期的運營情況,從而引導網站開發(fā)、運營人員作出相關決策來改進網站的服務,為網站維護、制定網站營銷策略提供有力的依據,促進網站整體的改進。

      本文采用大數據的理論和方法,采用Hbase數據庫、Flume、Kafka分布式發(fā)布訂閱消息系統(tǒng)和Spark Streaming流計算框架,設計實現了基于SparkSreaming的網站流量實時分析系統(tǒng)。

      1 基于Spark Streaming網站流量實時分析系統(tǒng)的分析維度和指標

      目前。常用的網站流量統(tǒng)計指標一般包括以下情況分析:

      (1)在線情況。在線情況分別記錄了在線用戶的活動信息,包括:來訪時間、訪客地域路頁面、當前停留頁面等,這些功能對企業(yè)實時掌握自身網站流量有很大地幫助。

      (2)時段分析。時段提供網站任意時間內的流量變化情況。或某一時間段的流量變化。如小時段分布,日訪問量分布、對于企業(yè)了解用戶瀏覽網頁的時間段有一個很好地分析。

      (3)來源分析。來源提供來路域名帶來的來訪次數、IP、獨立訪客、新訪客、新訪客瀏覽次數、站內總瀏覽次數等數據。這些數據可以直接讓企業(yè)了解推廣成效的來路,從而分析出哪些網站投放的廣告效果更明顯。

      系統(tǒng)統(tǒng)計的指標說明:

      (1)PV:Page

      View頁面訪問量。本項目以天為單位,統(tǒng)計一天內總的PV。用戶訪問一次網頁,就算一次PV,刷新操作也算PV。

      (2)UV:獨立訪客數。按人頭算,統(tǒng)計一天內有多少不同的用戶。處理思路:為每個用戶生成一個uvid,然后存到用戶瀏覽器的cookie里,所以統(tǒng)計獨立用戶數:統(tǒng)計有多少不同的uvid。

      (3)VV:獨立會話數。關閉瀏覽器再打開瀏覽器算做一個新的會話。實現思路:當用戶通過瀏覽器訪問產生一個新會話時。服務端會為這個會話生成一個ssid。所以獨立會話數:不同的ssid個數。此外,當一個會話超過30min,再次訪問,會算作一個新會話。

      (4)BR:頁面跳出率:跳出會話數/總的獨立會話數。這個指標用于衡量網站優(yōu)良性的高低。調出率越低,說明網站對于用戶的粘度越大。

      (5)newCust:新增用戶數。新增用戶指的是用戶的uvid在歷史uvid沒有出現過。比如統(tǒng)計今天的newCust數:

      ①統(tǒng)計出今天的所有的uvid;

      ②和之前的數據做比對;

      ③取出歷史數據沒有出現的uvid。

      (6)newIp:新增Ip數。統(tǒng)計一天內,有哪些ip是在歷史數據中沒出現過。

      (7)avgDeep:平均的會話訪問深度。一個會話的訪問深度:一個會話瀏覽過哪些不同的url地址。

      (8)aYSTime:平均的會話訪問時長。

      2 基于Spark Streaming的網站流量實時分析系統(tǒng)總體結構

      基于Spark Streaming的網站流量實時分析系統(tǒng)采用了Flume、Kafka、SparkStreaming、Hbase、MySQL、Echars等技術,系統(tǒng)總體結構如圖l所示。

      Dine anmys]s system

      本系統(tǒng)分為日志收集模塊、實時數據分析模塊和結果展示模塊。其中實時數據分析模塊又劃分為數據采集子模塊、數據接人子模塊、流式計算子模塊、數據輸出子模塊、結果子模塊展示。系統(tǒng)模塊如圖2所示。

      2.1 日志收集模塊

      通過Js埋點獲取網頁上的信息作為日志信息,通過反向代理技術Ngnix將日志發(fā)送到日志服務器。Flume集群利用Agent將日志服務器中日志信息扇人到Flume中,而后Flume將日志信息通過Agent將日志信息扇出到Kafka,為Spark Streaming實時分析提供日志信息。Flume發(fā)送日志信息結構如圖3所示。

      2.2 實時數據分析模塊

      本模塊主要部分:數據采集、數據接人、流式計算、數據輸出、結果展示。

      (1)數據采集。負責從各個節(jié)點進行實時采集數據,選用cloudera的Flume實現。

      (2)數據接人。因為采集數據與數據處理的速度不一定是同步的,由此需要添加一個中間件作為緩沖,這里選用的是apache的kafka。

      (3)流式計算。對采集到的數據進行實時分析,選用Spark Streaming。

      (4)數據輸出。采用Hbase對分析后的結果進行持久化。

      (5)結果展示。采用MySQL和Echars進行前段結果展示。

      2.3 結果展示模塊

      本文利用MVC框架實現數據可視化的數據展示,分為數據層、服務層和Web層。由JSP+Echars+Servlet+JavaBean+Dao構成MVC模式:JSP+Echars模塊化單文件引入,組中將分析結果展示到頁面上。Servlet用于驗證數據、實例化JavaBean、調用DAO連接數據庫、控制頁面跳轉。DAO用于連接數據庫及進行數據庫的操作。JavaBean用于數據的封裝,方便將查詢結果在Servlet與JSP頁面之間進行傳遞等。以上部分共同構成了MVC模式,數據可視化框架如圖4所示。

      3 基于Spark Streaming的網站流量實時分析系統(tǒng)實現框架

      系統(tǒng)采用Hbase數據庫,Flume、Kafka分布式發(fā)布訂閱消息系統(tǒng)、Spark Streaming流計算框架、Echars結果可視化插件。網站流量實時分析系統(tǒng)的具體實現框架如圖5所示。

      3.1 Flume簡述

      Flume是一個分布式、可靠、高可用的海量日志采集、聚合和傳輸的系統(tǒng)。在日志系統(tǒng)中定制各類數據發(fā)送方,用于收集數據(source)。Flume提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力(sink)。Flume的總體架構如圖6所示。

      Flume運行的核心是agent,其本身是一個Java進程,里面包含3個核心組件:source、channel、sink,類似生產者、倉庫、消費者的架構。source專門用來收集數據,可以處理各種類型、各種格式的日志數據。如avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定義等:channel把數據收集后,臨時存放在channel中,即channel組件在agent中是專門用來存放臨時數據的一對采集到的數據進行簡單的緩存,可以存放在memory、jdbc、file等等;sink是用于把數據發(fā)送到目的地的組件。目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。完整的工作流程為:source不斷地接收數據,將數據封裝成一個一個的event,然后將event發(fā)送給channel,chanel作為一個緩沖區(qū)會臨時存放這些event數據。隨后sink會將channel中的event數據發(fā)送到指定的地方。

      3.2Kafka簡述

      Kafka是一個分布式的流式處理平臺,主要包含3個功能:

      (1)發(fā)布和訂閱數據,類似于消息隊列或者企業(yè)中的消息傳遞系統(tǒng)。

      (2)存儲數據時有容錯(分布式+復本機制)和持久化機制。

      (3)數據產生時處理記錄(數據)。

      Kafka使用Scala編寫,以可水平擴展和高吞吐率而被廣泛使用。目前越來越多的開源分布式處理系統(tǒng)如Cloudera、Apache Storm、Spark都支持與Kafka集成。Kafka之間傳輸數據使用零拷貝技術。

      3.3 Spark Streaming簡述

      Spark Streaming是Spark的流式處理框架,是面向海量數據實現高吞吐量、高可用的分布式實時計算。Spark Streaming并非像Storm那樣是真正的流式計算,二者的處理模型在根本上有很大不同:Storm每次處理一條消息。而spark streaming每次處理的是一個時間窗口的數據流,類似于在一個短暫的時間間隔里處理一批數據。其數據處理框架如圖7所示。

      Spark Streaming內部工作原理如圖8所示,其接收實時輸入數據流并將數據切分成batch(批)數據,由Spark引擎處理以生成最終的分批流結果。

      3.4 Hbase簡述

      Hbase是一個分布式開源數據庫,基于Hadoop分布式文件系統(tǒng),其原型是GooCle的BigTable分布式數據庫。Hbase的設計目標是處理非常龐大的表,可以使用普通計算機處理超過10億行數據,并且有百萬列元素組成的數據表。因此在文件的百萬行或者上千萬行時不需要使用Hbase。HDFS為Hbase提供了高可用的底層存儲支持,同時MapReduce為其提供了高可用性的計算能力。Zookeeper保證了分布式數據庫的一致性要求,Hive、Pig提供了操作數據庫的語言,Sqoop提供了傳統(tǒng)關系數據庫的導人功能。Hbase與Hadoop無縫連接有以下幾個顯著的優(yōu)點:廉價的節(jié)點、高可用性、可擴展性。Hbase由于流式存儲的特性,也存在相應的缺點:Hbase的實時性差、不善于處理即時業(yè)務。

      3.5 Echars簡述

      Echars(Enterprise Charts)是一個商業(yè)級的數據圖表,一個純JavaScript的圖標庫,只是其能夠流暢地在PC端和移動設備之上運行。兼容當前絕大多數的瀏覽器。Echars在底層依賴輕量級的Canvas類庫ZRender,能夠支持直觀的、可交互的、生動的、可以高度個性化定制的數據可視化圖表。極大地增強了用戶體驗的創(chuàng)新特性、有拖拽重計算、數據視圖、值域漫游等,同時也賦予了用戶對數據進行挖掘及整合的能力。

      Echars支持折線圖、柱狀圖(條狀圖)、區(qū)域圖、K線圖、散點圖(氣泡圖)、雷達圖(填充雷達圖)、和弦圖、力導向布局圖、地圖、餅圖(環(huán)形圖)等12類圖表,還提供了標題、圖例、時間軸、詳情氣泡等7個可交互組件,同時還支持多圖表、組件的聯動以及混搭展現。

      4 基于Spark Streaming的網站流量實時分析系統(tǒng)的實現

      本系統(tǒng)利用分析的指標:信息瀏覽量(PV)、獨立訪客(UV)、會話數(VV)、新增獨立IP(Newip)、新增訪客(Neweust)、跳出率(Br)、平均訪問深度(Avgdeep)進行在線情況分析、在線時段分析、訪客來源分析。

      4.1 在線情況分析

      在線情況分析分別記錄在線用戶的活動信息,包括:來訪時間、訪客地域路頁面、當前停留頁面等,這些功能對企業(yè)實時掌握自身網站流量有很大的幫助。圖9通過對一天中不同來訪時間的訪客數進行統(tǒng)計,展示了用戶在一天中登錄瀏覽的時間分布。

      4.2在線時段分析

      時段分析提供網站任意時間內的流量變化情況,或者某一段時間到某一段時間的流量變化。如小時段分布、日訪問量分布,對于企業(yè)了解用戶瀏覽網頁的時間段有一個很好地分析。圖10對用戶在一周內的訪問次數做以統(tǒng)計,展示了工作日和休息日對用戶訪問情況的影響。

      4.3 訪客來源分析

      來源分析提供來路域名帶來的來訪次數、IP、獨立訪客、新訪客、新訪客瀏覽次數、站內總瀏覽次數等數據。這些數據可以直接讓企業(yè)了解推廣成效的來路,從而分析出哪些網站投放的廣告效果更明顯。圖11為某產品的訪客來源分布圖,展示了用戶訪問產品的途徑。

      5 結束語

      本文論述了基于SparL Streaming的網站流量實時分析系統(tǒng)的設計與實現,利用實時分析技術對某電子商城網站日志數據進行收集、數據分析、結果持久化、結果可視化展示。實時分析是流處理大數據系統(tǒng),可對最新實時數據進行高效預設分析處理模型的查詢操作,同時數據遲滯低,但是卻受限于內存容量。因此,之后的工作重點應放在研發(fā)出具有快速高效、智能且自主可控特點的流式大數據實時處理技術與平臺。

      網站流量分析系統(tǒng)雖然已經發(fā)展成為一個相對成熟的體系,但是對于用戶的特殊需求還不能滿足。因此,流量分析還有待于和數據挖掘技術相融合,從網站訪問記錄中發(fā)掘更有價值的信息。

      广灵县| 昌江| 玉山县| 蒙阴县| 依兰县| 河南省| 司法| 五河县| 雷山县| 明水县| 铜川市| 沧州市| 老河口市| 固阳县| 高安市| 喀什市| 山阴县| 江都市| 宿松县| 浦北县| 沙田区| 新巴尔虎左旗| 丹江口市| 苍南县| 金溪县| 衡山县| 康马县| 泽普县| 松溪县| 卓尼县| 遂宁市| 陆河县| 仁化县| 青神县| 衡山县| 玛纳斯县| 尼玛县| 惠东县| 聊城市| 抚松县| 和静县|