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