日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数据:数据的日志采集与用途

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据:数据的日志采集与用途 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 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 數據的產生

主要來自兩種:

  • 業務運轉必須要存儲的記錄,如:用戶填寫的注冊信息,一般存儲在線上的業務數據庫 中,通常都是結構化存儲,Mysql。
  • 用戶在使用產品時順便記錄下來的,這叫埋點。埋點按照技術手段分有幾種:
    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 數據采集的質量檢測

  • 是否完整?事件數據至少要有用戶ID、物品ID、事件名稱三元素才算完整。
  • 是否一致?同一個事實的不同方面會表現不同數據,這些數據需要相互佐證。
  • 是否正確?該記錄的數據一定是取自對應的數據源,不能滿足則應該屬于Bug級別,記錄了錯誤的數據。
  • 是否及時?雖然一些客戶端埋點數據,為了降低網絡消耗,會積累一定時間打包上傳數據,但是數據的及時性直接關系到數據質量。
  • 6.5 日志傳輸

    • 無線端產生日志,不是產生一條日志上傳一條,而是先存儲在客戶端(手機), 然后再伺機上傳(會有機制) ;
    • 客戶端數據上傳:
      1、向服務器發送POST請求;
      2、服務器端處理上傳請求,做相關校驗;
      3、將數據追加到本地文件中進行存儲;
      4、存儲方式使用Nginx的access_log;
      5、access_log的切分維度為天。

    通過文章我們了解:

  • 系統的流程架構,通過架構的模塊可以知道職業主攻方向,有利于規劃未來。
  • 數據采集的用途,有數據分析、機器學習;
  • 了解數據的模型,日志產生的來源、數據源的劃分、質量檢查、日志傳輸等。
  • 總結

    以上是生活随笔為你收集整理的大数据:数据的日志采集与用途的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。