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