前幾次內容分享,我們逐步搭建了傳統hadoop大資料平臺、zookeeper、kafka叢集等。
假設現在一個場景是:今天產品經理提了1個優先順序極高的需求:應用系統前端埋點資料都需要被採集到大資料平臺hadoop上。
“前端埋點資料的採集系列”,主要分為以下5個部分:
二、mock應用系統10萬條前端埋點資料
三、Flume採集資料
四、Flume消費Kafka資料到HDFS
五. 前端埋點資料採集總結
一、明確專案目標設計方案
這個需求意味著公司專案開始由javaweb端的資料走向大資料平臺,再到數倉平臺,最終由報表系統、使用者畫像系統、推薦系統等展示資料分析平臺,來監控經營決策和衡量公司業績。
1、明確專案目標
- 首先,我們要明確專案目標:前端埋點資料需要從javaweb端上傳採集到大資料平臺HDFS端。
- 其次,前端APP、H5、PC、小程式等產生的資料分為兩大類:一類是業務資料,比如使用者的交易、下單、支付、退單等在應用系統的資料庫儲存;
- 第二類是埋點資料,比如使用者的手機型號、位置、點選螢幕、購買路徑等行為會由應用系統寫到日誌檔案log中。
- 需要採用不用的採集方法。
2、設計方案
-
前端埋點的採集我們有很多方案:
- 可以透過自行編寫java程式碼來模擬實現生成資料到本地檔案;
- 也可以透過第三方工具,埋點系統工具來實現日誌的生成。比如:友盟和talking data、神策平臺、後裔採集器等等。
- 梳理本地資料被採集到HDFS上的過程
- flume採集資料到kafka
- Kafka生產和消費資料
- flume消費kafka資料到HDFS上
二、應用系統架構設計
我們首先需要了解應用系統涉及架構以及資料的流向。
1、前端
大前端資料來源包括:APP、PC、小程式、H5、爬蟲等資料;
2、CDN
主要組成部件是:防火牆、網路安全設施、F5、負載均衡等。我們關注的點是資料來源,其實這層對企業來說非常重要涉及網路資訊保安、負載等等。
3、後端
後端這裡分成兩大類:主要是根據資料結構來分。
1)業務資料系統
- 單體架構單nginx,單tomcat,基於SpringBoot,單資料庫Oracle;
- 分散式架構多負載均衡多個nginx,下掛多個tomcat的,基於SpringCloud,分散式資料庫mysql、非關係型資料庫redis;
- 其他架構:如:基於ASPnet Core、net、php、sqlserver資料庫的;
2)日誌埋點資料系統
基於SpringBoot生成log到伺服器。前端埋點的日誌會被系統採集到log資料夾裡面存放在伺服器。
三、採集系統整體架構設計
採集系統的架構設計:
-
從底層資料業務型別來看分為兩大類:埋點日誌和業務系統資料
- 邏輯分層來看:分為三層
- 資料來源層
- 資料採集層
- 資料儲存層
1、資料來源層
- 業務資料
- 關係型資料庫資料
常用常見的如:傳統型Oracle、網際網路公司Mysql、PGsql、OceanBase來自阿里系已經獨立奧星貝斯公司。屬於國產化資料庫,工行目前對公理財已經使用,部分中小型銀行中原銀行等也已經使用。對於金融行業近年來一直要求新創,未來應該會成為主流資料庫。
非關係型資料庫Not Only Sql資料基於鍵值儲存的redis;基於文件資料庫mongoDB;基於圖形儲存的Neo4j
基於寬列儲存的Cassandra; - 日誌資料作為一種非結構化資料,如:log、video、picture等。
2、資料採集層
- 業務資料採集 業務系統資料庫產生的資料,需要透過分散式元件Sqoop來採集。sqoop主要用於在Hadoop(Hive)與傳統的資料庫(mysql)間進行資料的傳遞,可以將一個關係型資料庫(例如:MySQL ,Oracle 等)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料導進到關係型資料庫中。
- 日誌資料採集日誌作為一種非結構化資料,如:log、video、picture等。採集到HDFS平臺,需要透過flume、kafka等元件完成。涉及到伺服器採集的選型通道的建立等等。
3、資料儲存層
Hadoop叢集資料儲存主要是資料存在分散式檔案系統HFDS上,後面會使用hive儲存。
4、註冊中心zookeeper
它提供的服務包括:統一命名服務、統一配置管理、統一叢集管理、伺服器節點動態上下線、軟負載均衡等。
總結:
- 先了解應用程式簡單基本架構
- 瞭解大資料平臺資料採集架構
- 涉及到專案管理知識,當你拿到一個專案首先要明確PM給你的專案目標是什麼?你需要交付什麼?然後拆分專案目標,拆分梳理實現專案目標的流程步驟,設計整體方案。