大数据:数据的日志采集与用途
文章目錄
- 1、系統架構流程圖
- 2、離線處理
- 3、實時在線
- 4、職業定位
- 5、數據采集用途
- 5.1 數據分析
- 5.2 機器學習
- 6、數據采集日志
- 6.1 數據模型
- 6.2 數據的產生
- 6.3 數據源的劃分
- 6.4 數據采集的質量檢測
- 6.5 日志傳輸
推薦系統是基于對歷史的數據進行推測。數據是推薦系統的源頭,數據怎么來?要有數據就要進行數據采集,數據的采集主要來源是日志,日志是用戶在網站上產生的一些行為信息,這是我們獲取數據的重要來源。
1、系統架構流程圖
在大數據場景中,用戶在手機APP端或頁面輸入一個網址,是在對應的瀏覽器輸入,這時就會向后端服務器發送一個HTTP請求。
例如,我們輸入 baidu.com 網址,那瀏覽器就會向服務器發送我們有關于網址的HTTP請求,接著服務器接受請求會進行返回,瀏覽器給用戶進行結果展示。在瀏覽器加載頁面時候,會進行一個埋點。
頁面展示的數據,我們是要進行記錄,記錄到日志服務器,服務器在后端其實就是個logs日志文件。日志會記錄很多信息,例如用的瀏覽器、時間、網址ID,topic、用戶行為等等。
事實上,我們數據來源有很多不同的結構,我們要對不同的數據進行收集、整合,我們常用Flume進行數據的傳遞、收集。當數據傳遞過來時候,我們是要進行備份的,因此 Flume的數據會備份到HDFS中,當數據存到HDFS時候,我們會進行ETL處理(常用hive、spark處理),把處理好的、清理過的、規范化的數據存到數據倉庫中。
2、離線處理
在數據倉庫中,我們存儲的數據是歷史數據,我們要挖掘數據的價值,顯示數據的作用。例如,進行數據的模型訓練,進行數據分析的報表,可視化展示等等。這些操作都是離線操作。
我們通過模型訓練,通過離線訓練得出模型model,通過封裝模型到后端服務中,進行線上應用。一般離線訓練好的model放在redis,以向量形式存儲;model一般會部署在后端工程(服務器) ,進行一些數據的預測,估計結果。
例如,線上來一條數據,我們放到model進行預測,進行打分,看這個數據在那個類別的分數(概率)高,就預測出這個數據屬于哪一個類別。
很多數據經過model后,根據返回的概率大小進行排序,把前幾\Top5,的商品結果進行返回給用戶,這些Top5的商品就是用戶喜好的或者是經常買的。
這就是我們數據倉庫涉及到的部分。
3、實時在線
進行數據開發或者后端想做一個在線產品,那在線的數據怎么來,在數據經過Flume收集時,對剛收集到的數據我們要進行一個短期的存放—— kafka,而且,kafka的數據來源不單單從Flume,還可以從日志服務器、后端的服務器獲取。
當數據到達kafka后,我們可以用 spark streaming、Flink、Storm進行一些流式處理。處理過后的數據可以存儲到MySQL中,后端服務器還可以從MySQL進行數據的調用,亦然后端服務器也可以把數據存到MySQL(redis\Hbase),這是一個雙向的過程!!
Flume --> Kafka --> spark streaming --> MySQL(Redis\Hbase) <–> 服務端
這是一個數據實時處理的部分。(下圖方框為藍色部分)
我們可以理解Flume收集到數據為自來水,kafka 那就是一個蓄水池(可存可放),可以源源不斷地放水給 spark streaming使用。
4、職業定位
假如我們從事:數據倉庫方向,我們要主攻離線處理部分(上圖畫紅色區域)
假如我們從事:數據開發方向,就是在線實時處理部分。
在瀏覽器 ->日志服務器 ->Flume 這個一般成熟的平臺是是封裝好的。
模型訓練 -> model ->redis <->服務器,這個是機器學習、算法涉及到的。
用戶 -> 頁面 ->瀏覽器 是前端專業涉及到的,例如埋點。
頁面涉及的是UI專業涉及到的。
后端服務器開發,是后端專業涉及到的。
在我們學習的過程中,我們的側重點要找好。
5、數據采集用途
數據采集后可以做BI報表,BI報表也就是將企業中現有數據進行整合并提供出的報表。BI報表是現在行業用的最廣泛的、成熟的,一個公司報表是必須有的。
- BI報表統計出來最先給PM(產品),PM可以通過報表推測出哪些策略行哪些效果不行,如果哪些產品通過數據發現是bad,就直接砍掉不做。
- 運營人員是對產品進行一些推廣,哪類用戶用哪樣策略,通過報表看看這批用戶能不能達到推廣的預期,不行就換用戶,這樣通過報表就減少損失。
- leader/Boss決策,大佬通過報表進行決策,看經過一段時間的效益有沒有達到期待,沒有就改變策略。
數據分析:數據分析師通過報表進行數據分析,用SQL、Excel進行。
機器學習:數據挖掘,算法工程師通過報表數據,經過測試看哪些數據是有價值,哪些沒價值。
最基本的數據收集,是為了統計最核心的產品指標:
- 常規數據指標的監測:用戶量,新用戶量,UGC(社交產品),銷量,付費量,推廣期間各種數據等;
- 渠道分析/流量分析:分析/監控引流渠道優劣;
- 用戶的核心轉化率:統計付費率,購買率;
- 用戶使用時長的監測:用戶活躍度,產品驗證 ;
- 用戶流失情況:監控用戶的流失率(1,3,7,30;
- 活躍用戶動態:關注活躍用戶動態。
這些指標有什么用?
了解指標是最基本的數據采集需求:1、業績的衡量;2、對接業務的核心點;3、知道經過你手的數據最終有什么用。
報表統計作用:1、為了監控產品的健康狀況;2、為了對外展示公司實力(拉投資)。
5.1 數據分析
- 數據分析是比較常見的數據采集需求;
- 對比報表統計的區別:不但需要知道產品是否健康,還需要知道為什么健康、為什么不健康,做對了什么事情、做錯了什么事情,要從數據中去找到根本原因。
- 驅動了很多多維分析軟件應運而生。
- 數據分析工作,最后要產出的是比較簡明清晰直觀的結論,這是數據分析師綜合自己的智慧加工出來的,是由人產生的。
- 主要用于產品設計、指導商業推廣、指導開發方式。
- 實打實的數據驅動產品。
5.2 機器學習
- 收集數據為了機器學習應用,更廣泛地說人工智能應用;
- 區別于數據分析:主要在消化數據的角色是算法、是計算機,而不是人;
- 在采集的維度(字段),樣本數量都希望越多越好;
- 注意:這里的數據是否適合分析,數據是否易于可視化地操作并不是核心內容;
- 指標舉例:用戶(物品)特征描述:算法建模上,和產品上使用,用戶(物品) 生命周期的監測:在建模上需要考慮。
6、數據采集日志
6.1 數據模型
- 數據模型,其實就是把數據歸類。產品越負責,業務線越多,產生的日志就越復雜。
- 不同業務關心的數據不一樣,就推薦系統業務來說,關心的是人與物之間的連接,需要依賴已經有的人與物的連接,以及人和物的屬性(詳細描述)。
- 數據模型有助于梳理日志、歸類存儲,以方便在使用時獲取。
- 數據可以看。
6.2 數據的產生
主要來自兩種:
1、SDK埋點。 這是最古老的埋點方法,就是在開發APP和網站,嵌入第三方統計,第三方統計得到數據后再進一步分析展示。
2、可視化埋點。 在SDK埋點基礎上組做了進一步工作,埋點工作可通過可視化配置。就是在APP或者網站嵌入可視化埋點套件的SDK。
3、無埋點。 謂無埋點不是不埋點收集數據,而是盡可能多自動收集所有數據,但是使用方按照自己的 需求去使用部分數據。
埋點位置可以分為前端埋點和后端埋點。兩者區別在于:
對于推薦業務來說,數據基本上可以從后端收集,采集成本較低(為什么?)
-
后端數據需要有兩個要求:
1、要求所有的時間都需要和后端交互;
2、要求所有業務響應都要有日志記錄。 -
后端收集日志有很多好處,比如:
1、實時性。由于業務響應是實時的,所以日志打印也是實時的,因此可以做到實時收集;
2、可及時更新。由于日志記錄都發生在后端,所以需要更新時可以及時更新,而不用重新發布客戶端版本;
3、開發簡單。不需要單獨維護一套SDK。 -
Event事件類別的數據從后端各個業務服務器產生的日志來,Item和User類型數據,從業務數據庫來,還有一些特殊的數據就是Relation類別從業務數據庫來。
6.3 數據源的劃分
- 穩定的網絡服務器日志:Nginx或者Apache產生的日志。在PC互聯網時代,有一種事件收集方式是,放一個一像素的圖片在某個要采集數據的位置。這個圖片被點擊時,向服務端發送一個不做什么事情的請求,只是為了在服務端的網絡服務器哪里產生一條系統日志。這類日志用Logstash收集。
- 業務服務器:這類服務器會處理具體場景的具體業務,自不同的日志記錄方式。例如Java是Log4j,Python是Logging等等,還有RPC服務。這些業務服務器通常會分布在多臺機器上,產生的日志需要用Flume匯總。
- Kafka是一個分布式消息隊列,按照Topic組織隊列,訂閱消息模式,可以橫向水平擴展,非常適合作為日志清洗計算層和日志收集之間的緩沖區。不論是Logstash還是Flume,都會發送到Kafka指定的topic中。
- 處理完采集到的數據,會送往分布式的文件系統中永久存儲,一般是HDFS,為了后續抽取方便快速,一般要把日志按照日期分區。
6.4 數據采集的質量檢測
6.5 日志傳輸
- 無線端產生日志,不是產生一條日志上傳一條,而是先存儲在客戶端(手機), 然后再伺機上傳(會有機制) ;
- 客戶端數據上傳:
1、向服務器發送POST請求;
2、服務器端處理上傳請求,做相關校驗;
3、將數據追加到本地文件中進行存儲;
4、存儲方式使用Nginx的access_log;
5、access_log的切分維度為天。
通過文章我們了解:
總結
以上是生活随笔為你收集整理的大数据:数据的日志采集与用途的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十二省联考题解 - JLOI2019 题
- 下一篇: 提取source引擎.mdl模型,并转u