《OD學hadoop》20160903某旅遊網項目實戰

1、大數據的落地點javascript

1.數據出售php

數據商城:以賣數據爲公司的核心業務css

2. 數據分析html

百度統計前端

友盟java

GAmysql

IBM analysisandroid

3.搜索引擎ios

4. 推薦系統nginx

mahout

百分比

5.精準營銷

(1)廣告投入:網站全部者集成廣告聯盟的js->訪問者訪問頁面->js發送用戶數據->廣告聯盟發送一個能夠報價的廣告位信息給全部的廣告公司(報價是否、價格多少)

->廣告公司接受到這個報價信息,根據攜帶的用戶信息計算用戶點擊的機率(用戶點擊模型)->廣告公司將是否報價信息以及報價多少的信息發送給廣告聯盟->廣告聯盟選取高報價進行展現

用戶信息

用戶點擊廣告信息

第三方過來

(2)金融產品投顧

現階段不算成熟

6. 數據預測

天氣預測

路況預測

城市發展預測

7. 人工智能

數據挖掘

機器學習

 

2、大數據分析平臺

1. 分析收集獲得的數據,根據最終結果進行業務指導。

兩大類;

(1)離線數據分析平臺

對數據實時性要求不高的

對機器的性能要求比較低

MapReduce Hive Pig

(2)實時數據分析平臺

對實時性要求嚴格,必須沒有時間延遲的

對內存、CPU的要求比較高

storm,spark streaming

2. 爲何本身作大數據分析平臺

1)使用第三方的

優勢:簡單

缺點:

有的須要收費,有的功能比較低

數據不在本公司,後續的一些定製的開發沒有進行

無法定製化

2)本身作

優勢:

數據在公司,後續的業務系統開發比較容易

缺點:

從無到有作一個系統出來,開銷比較大

須要人員參與

 

3、數據處理流程

1. 數據收集

保存HDF,實時的直接進入數據分析

2. 數據處理&分析

redis,mongodb

關係型數據庫

HDFS相關生態圈上

3. 數據結果可視化

(可選)

4. 數據結果應用

推薦

用戶畫像

數據分析(數據分析師)

 

4、分析平臺的數據來源

1. 服務器日誌數據

Nginx日誌,服務器監控日誌等

2. 業務日誌

log4j

3. 業務數據

用戶基本信息、訂單信息、產品信息等

4. 用戶行爲數據

從客戶端收集獲得的數據

用戶行爲:在頁面上進行的任何操做都是用戶行爲

以監聽事件的方式來記錄數據

5. 購買的數據

6. 爬蟲的數據

 

5、項目定位

大數據分析平臺一部分,結合以前所學的hadoop生態圈的相關知識進行講解。

1 . 需求:收集各個客戶端的用戶行爲數據,進行數據分析處理,最終將結果展現出來

2. 核心關注點

3. 重點概念:

1)訪客/用戶:標識訪問網站的用戶

區分:

PC端、移動端的web端:

(1)採用IP來區分用戶

(2)採用客戶端種植cookie的方式,第一次訪問就產生一個惟一uuid,保存到cookie中,有效期10年

移動端:

(1)採用機器碼

(2)生成uuid,保存到磁盤中

分析指標:

新增用戶

活躍用戶

總用戶

流失用戶

迴流用戶

2)會員:業務系統的註冊用戶,並且登陸,通常來說,直接採用業務系統的umid來區分。

分析指標:

新增會員

活躍會員

總會員

流失會員

迴流會員

訪客轉會員比率

  新訪客轉換率

  老訪客轉換率

3)會話:用戶進入系統到離開系統的這段時間

實現方式/會話範圍

(1)採用瀏覽器的session進行會話區分

(2)在cookie種植一個上一個操做的訪問時間,cookie設置過時時間,設置爲6分鐘,那麼6分鐘後,再訪問就是一個新的會話。

分析指標

(1)會話數量

(2)會話長度(會話的總時間點)

(3)跳出會話數量(只訪問一次的會話數量)

外鏈:

用戶經過第三方網站訪問咱們的系統

分析廣告投放的預測效果是否達到

分析指標:

帶來的訪客數量

帶來的會話數量

帶來的訂單相關信息

外率跳出率

PV(page view):頁面瀏覽量

UI(unique vistor):惟一訪問用戶量,指經過網絡、流量訪問系統給的天然人

獨立IP數量:ip的數量,輔助UI來展現數據

dv(depth view):訪問深度

各個訪問深度的用戶數量

 

6、技術架構

1, 技術層面

架構分爲:

  數據收集層

  數據處理層

  數據展現層

2. 技術方案設計

1)數據收集方案

方式

PC端、移動web端:jsp sdk

android、ios等移動端:android/ios sdk

後臺系統:php sdk,javasdk

基準:以最小單位事件做爲數據的收集的單位的。

目標:儘量的多的收集用戶信息數據,下降數據的丟失率。

收集哪些事件:

launch:

pageView: en/p_url/p_ref/tt

event

chargeRequest

chargeSucess

chargeRefund

Nginx服務器會作事件內容擴充:ip地址、服務器時間

ip地址:若是你的服務器通過多層跳轉,那麼默認獲取ip地址的nginx代碼通常是無效的。

Nginx接受到數據後:

將數據保存到日誌中,nginx的做用完成了

日誌數據分割:^A

日誌格式:ip地址^A服務器時間^A客戶端訪問所攜帶的用戶行爲數據

flume:

監控nginx的日誌文件,將數據實時的寫入到hdfs中

爲何不寫hbase:

數據須要進行預處理,flume只作數據收集的事,方便後期的bug修復,

nginx服務器搭建:

nginx熱備

Flume的企業搭建:

Flume-ng

 

2)數據展現方案

結果存儲在關係型數據庫(mysql)

spring + springmvc + mybatis

先後臺分離

前端直接展現數據,後端直接返回一個json數據給前端

echarts:百度

highcharts:國外一個公司的產品

mysql-->mybatis-->後臺系統(springmvc)-->json數據的方式->前端實現(html+css+javascript+highcharts)

 

3)數據分析&處理

ETL操做:數據清洗、過濾、補全

數據來源:存在在HDFS上的日誌文件

數據處理方式: MapReduce Hive

數據保存位置:HBase

HBase表結構設計:

爲何保存hbase? ->列不統一

熱點問題怎麼解決?

(1)按天分表,rowkey隨機,沒有特別規律的一個字節數據

(2)在rowkey(有訪問規律)以前,加一個隨機數字(其實就是hbase服務器數量取模)

(3)在建立hbase時,會進行預分區

數據處理

MapReduce:

數據流: HBase->mapreduce處理,直接輸出到mysql中

Hive:

數據流:HBase->hive表數據外部表關聯到hive表中去->hive的hsql語句

分析結果存儲到Hfds中-->sqoop將hive分析結果存儲到mysql中

 

7、數據倉庫

星型模型:

事實表:stats_xxx

維度表:定位具體維度信息,肯定數據,dimension_xxx

分析輔助表:

用戶:保存會員id之類的,用戶分析新增會員;保存訂單數據,chargeRequest,chargeSuccess,chargeRefund數據補全

ip解析庫

 

8、問題思考

1. 怎麼將數據保存到mysql中?

mapreduce

hive

2. 維度名稱屬性怎麼轉換爲id?

 

9、Nginx服務器

併發能力強,處理訪問靜態資源速度很快。

1.  http節點

log_format user_log_format '$remote_addr^A$mesc^$request_url';

2. server節點

location ~.*(BEIfeng)\.(gif)${

  #類型

  default_type image/gif;

  #記錄日誌,存儲到一個文件中,文件要求flume進行有權限放回

  access_log /usr/local/nginx/user_logs/access.log user_log_format;

  #訪問資源

  root /usr/local/nginx/html;

}

 

10、js sdk和javasdk

 

11、flume

hdfs sink

ha環境中怎麼配置

(1)hdfs.path配置成core-site.xml中的fs.defaultFS加具體的數據存儲路徑

(2)將hadoop環境中的core-site和hdfs-site.xml連個文件copy到conf文件夾中 flume-ng agent --conf ${FLUME_HOME}/conf

相關文章
相關標籤/搜索