18級大數據專家,跟大家漫談大數據平臺架構,你能學到多少?上篇

前言

近年來,互聯網公司中大數據平臺的建設和安全一直是熱點。筆者計劃發兩篇文章參與一下討論,一篇架構+一篇安全。本文不依託於任何一家大廠的平臺架構,用通俗的語言介紹一下大數據平臺的整體架構。

下面用兩個問題開篇:

什麼是大數據平臺?是將互聯網產品和後臺的大數據系統整合起來,將應用系統產生的數據導入大數據平臺,經過計算後導出給應用系統使用。

爲什麼大數據平臺在互聯網行業非常重要?大數據平臺將互聯網應用和大數據產品整合起來,將實時數據和離線數據打通,使數據可以實現更大規模的關聯計算,挖掘出數據更大的價值,從而實現數據驅動業務。大數據平臺使得大數據技術產品可以落地應用,實現了自身價值。

總體來說:大數據平臺可以分爲四個部分:數據採集、數據處理、數據輸出和任務調度管理。

18級大數據專家,跟大家漫談大數據平臺架構,你能學到多少?上篇

 

一、數據採集

按照數據源可以分爲如下4點:

1、數據庫數據

目前比較常用的數據庫導入工具有Sqoop和Canal。

Sqoop 是一個數據庫批量導入導出工具,可以將關係數據庫的數據批量導入到 Hadoop,也可以將 Hadoop 的數據導出到關係數據庫。

Sqoop 適合關係數據庫數據的批量導入,如果想實時導入關係數據庫的數據,可以選擇Canal。Canal是阿里巴巴開源的一個 MySQLbinlog 獲取工具,binlog 是 MySQL 的事務日誌,可用於MySQL數據庫主從複製,Canal 將自己僞裝成 MySQL 從庫,從 MySQL 獲取binlog。

2、日誌數據

日誌是大數據平臺重要數據來源之一,應用程序日誌一方面記錄各種程序執行狀況,一方面記錄用戶的操作軌跡。Flume 是大數據日誌收集常用的工具。Flume 最早由 Cloudera 開發,後來捐贈給 Apache 基金會作爲開源項目運營。

3、前端程序埋點

所謂前端埋點,是應用前端爲了進行數據統計和分析採集數據。

用戶的某些前端行爲並不會產生後端請求,比如用戶頁面停留時間、用戶瀏覽速度、用戶點選又取消等等。這些信息對於分析用戶行爲等都很有價值。但是這些數據必須通過前端埋點獲得,有些互聯網公司會將前端埋點數據當作最主要的大數據來源,用戶所有前端行爲,都會埋點採集,再輔助結合其他的數據源,構建自己的大數據倉庫,進而進行數據分析和挖掘。

對於一個互聯網應用,當我們提到前端的時候,可能指的是如下幾類:

App 程序,比如一個 iOS 應用或者 Android 應用,安裝在用戶的手機或者平板上;

PC Web 前端,使用 PC 瀏覽器打開;

H5 前端,由移動設備瀏覽器打開;

微信小程序,在微信內打開。

這些不同的前端使用不同的開發語言開發,運行在不同的設備上,每一類前端都需要解決自己的埋點問題。

埋點的方式主要有手工埋點、自動化埋點和可視化埋點。

手工埋點就是前端開發者手動編程將需要採集的前端數據發送到後端的數據採集系統。通常公司會開發一些前端數據上報的 SDK,前端工程師在需要埋點的地方,調用 SDK,按照接口規範傳入相關參數,比如 ID、名稱、頁面、控件等通用參數,還有業務邏輯數據等,SDK 將這些數據通過 HTTP 的方式發送到後端服務器。

自動化埋點則是通過一個前端程序 SDK,自動收集全部用戶操作事件,然後全量上傳到後端服器。自動化埋點有時候也被稱作無埋點,意思是無需埋點,實際上是全埋點,即全部用戶操作都埋點採集。自動化埋點的好處是開發工作量小,數據規範統一。缺點是採集的數據量大,很多數據採集來也不知道有什麼用,白白浪費了計算資源,特別是對於流量敏感的移動端用戶而言,因爲自動化埋點採集上傳花費了大量的流量,可能因此成爲卸載應用的理由,這樣就得不償失了。在實踐中,有時候只是針對部分用戶做自動埋點,抽樣一部分數據做統計分析。

介於手工埋點和自動化埋點之間的,還有一種方案是可視化埋點。通過可視化的方式配置哪些前端操作需要埋點,根據配置採集數據。可視化埋點實際上是可以人工干預的自動化埋點。

4、爬蟲系統

通過網絡爬蟲獲取外部數據用於行業數據支撐,管理決策等。由於涉及到敏感內容,不做更多的展開。

二、數據處理

大數據平臺的核心,分爲離線計算和實時計算兩類。

1、離線計算

由MapReduce、Hive、Spark 等進行的計算處理。

2、實時計算

由Storm、SparkSteaming 等流式大數據引擎完成,可以在秒級甚至毫秒級時間內完成計算。

三、數據輸出

大數據處理與計算產生的數據寫入到 HDFS 中,但應用程序不會到 HDFS 中讀取數據,所以必須要將 HDFS 中的數據導出到數據庫中。除了給用戶提供數據,大數據平臺還需要在一些後臺系統中給運營和決策層提供各種統計數據,這些數據也寫入數據庫,被相應的後臺系統訪問。

四、任務調度管理

將上面三個部分有效整合和運轉起來的是任務調度管理系統,它的主要作用是:

合理調度各種 MapReduce、Spark 任務使資源利用最合理

儘快執行臨時的重要任務

對作業提交、進度跟蹤、數據查看等功能

簡單的大數據平臺任務調度管理系統其實就是一個類似 Crontab 的定時任務系統,按預設時間啓動不同的大數據作業腳本。複雜的大數據平臺任務調度還要考慮不同作業之間的依賴關係。開源的大數據調度系統有 Oozie,也可以在此基礎進行擴展。

感謝大家的支持,本文來自freebuf,superhuawei,,FreeBuf.COM,多多轉發,關注不迷路~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章