大資料-數倉學習總結與分享

itman_cx發表於2021-01-01

學習大資料的契機

原因

  在學習之前的是一直在幹java開發的,但是手頭上有個比較大的專案,本來是到9月底的樣子就應該結束的,但後面需求變更,導致系統需要大改,之前的那批人也都走的差不多了(幾個團隊一起開發),所以到後面系統的整體架構的任務就交到我手上來了。
  剛開始還好,慢慢改整體邏輯架構,其中從其他人程式碼中也學到了很多東西,可是過了一個來月的開發週期,11月的時候,也開發的差不多了,後面很多都是簡單的邏輯處理,而且寫得我很安逸,幾乎遇不到什麼問題了,這個感覺很不爽,然後優化完一些sql,寫了一些非同步編排介面,但是還是很安逸,嘗試優化程式碼架構,可是優化了部分覺得很多是重複工作,於是想學習一些新的東西了;

找資料階段

  所以我開始從晚上找資料,然後是在b站上面看到尚矽谷發了很多新的視訊,hive3.1.2、spark3、數倉3.0等,然後就下決心開了大資料學習, 我從朋友那裡借來穀粒學院的賬號(這裡面的視訊在b站上大多數都有,只是在b站上看容易分心去看彈幕,我是喜歡開彈幕的那種),然後開始學習,從hadoop開始,大概學到一半,專案又進行迭代升級,我又又又去開發了,估計有三週左右的時間,天天加班,然後學習又停滯了,大概是快11月底的時候,我才狠下心來跟負責人說,我不想寫程式碼了,可以做做運維,然後就交給其他人去寫程式碼了,我只要複製指導一下就行;

學習週期

  首先是根據資料文件+視訊很快的過了一遍hadoop剩下的,把map、reduce那個階段的東西學習了一下,然後就開始學習hive,關於hive-sql那裡的很多東西跟sql語法很像,所以很多東西我沒看,然後看了下數倉需要的技術點,發現很多東西之前都聽過,所以直接開幹,搞起了數倉的專案。

數倉的概念

  數倉倉庫(data warehouse):是為企業所有決策制定過程,提供所有系統資料支援的戰略集合。通過資料倉儲的分析可以幫助企業,改進業務流程、控制成本、提高產品質量等。
  資料倉儲並不是所有資料的存放地,而是為資料最終最終目的地做準備,這些準備包括:清洗、轉義、分類、重組、合併、拆分、統計等等。
其大致流程:
在這裡插入圖片描述

專案的需求及架構

需求分析

整個數倉參考尚矽谷-穀粒學院的課程設計:

 1. 使用者行為的日誌採集(通過設定埋點的方式)
 2. 業務資料採集的平臺搭建(將mysql中的資料匯入到hdfs)
 3. 資料倉儲的維度建模(ods、dwd、dws、dwt、ads)
 4.  分析(裝置、使用者、地區)等電商的核心主題,需要有近100個指標支援
 5. 採用即席查詢工具,隨時進行指標分析(亞秒級、秒級的大資料量查詢)
 6. 整個叢集系統的任務排程(特定的任務不需要任務去每天重複操作)
 7. 叢集的整體效能監控,並在異常的時候進行報警。
 8. 後設資料管理

專案架構

一、技術選型

數倉技術選型

二、系統資料流程設計

系統資料流程設計

三、系統技術版本選擇

版本選擇

四、伺服器選型

伺服器選型

五、叢集規劃

在這裡插入圖片描述

資料來源

資料埋點

  1. 主流埋點方式(瞭解)

  目前主流的埋點方式,有程式碼埋點(前端/後端)、視覺化埋點、全埋點三種。
程式碼埋點是通過呼叫埋點 SDK 函式,在需要埋點的業務邏輯功能位置呼叫介面,上報埋點資料。例如,我們對頁面中的某個按鈕埋點後,當這個按鈕被點選時,可以在這個按鈕對應的 OnClick 函式裡面呼叫 SDK 提供的資料傳送介面,來傳送資料。
  視覺化埋點只需要研發人員整合採集 SDK,不需要寫埋點程式碼,業務人員就可以通過訪問分析平臺的“圈選”功能,來“圈”出需要對使用者行為進行捕捉的控制元件,並對該事件進行命名。圈選完畢後,這些配置會同步到各個使用者的終端上,由採集 SDK 按照圈選的配置自動進行使用者行為資料的採集和傳送。
  全埋點是通過在產品中嵌入 SDK,前端自動採集頁面上的全部使用者行為事件,上報埋點資料,相當於做了一個統一的埋點。然後再通過介面配置哪些資料需要在系統裡面進行分析。

  1. 埋點資料日誌結構

   我們的日誌結構大致可分為兩類,一是普通頁面埋點日誌,二是啟動日誌。
  普通頁面日誌結構如下,每條日誌包含了,當前頁面的頁面資訊,所有事件(動作)、所有曝光資訊以及錯誤資訊。除此之外,還包含了一系列公共資訊,包括裝置資訊,地理位置,應用資訊等,即下邊的 common 欄位。

  1. 埋點資料上報時機
      埋點資料上報時機包括兩種方式。
      方式一,在離開該頁面時,上傳在這個頁面發生的所有事情(頁面、事件、曝光、錯誤等)。優點,批處理,減少了伺服器接收資料壓力。缺點,不是特別及時。
      方式二,每個事件、動作、錯誤等,產生後,立即傳送。優點,響應及時。缺點,對伺服器接收資料壓力比較大

業務資料

一般就是資料庫裡面的資料

總結

上面是整個資料倉儲的設計,從概念、需求、技術選型等著手考慮,完全適用於中小型企業的實際生產,接下來幾篇部落格會詳細講解整個數倉搭建過程;


感謝大家閱、互相學習;
感謝尚矽谷提供的學習資料;
有問題評論或者發郵箱;
gitee:很多程式碼倉庫;
1449697757@qq.com

相關文章