如何從0到1搭建大數據平臺

大數據時代這個詞被提出已有10年了吧,越來越多的企業已經完成了大數據平臺的搭建。隨着移動互聯網和物聯網的爆發,大數據價值在越來越多的場景中被挖掘,隨着大家都在使用歐冠大數據,大數據平臺的搭建門檻也越來越低。藉助開源的力量,任何有基礎研發能力的組織完全可以搭建自己的大數據平臺。但是對於沒有了解過大數據平臺、數據倉庫、數據挖掘概念的同學可能還是無法順利完成搭建,因爲你去百度查的時候會發現太多的東西,和架構,你不知道如何去選擇。今天給大家分享下大數據平臺是怎麼玩的。

架構總覽

通常大數據平臺的架構如上,從外部採集數據到數據處理,數據顯現,應用等模塊。

數據採集

用戶訪問我們的產品會產生大量的行爲日誌,因此我們需要特定的日誌採集系統來採集並輸送這些日誌。Flume是目前常用的開源選擇,Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方的能力。

對於非實時使用的數據,可以通過Flume直接落文件到集羣的HDFS上。而對於要實時使用的數據來說,則可以採用Flume+Kafka,數據直接進入消息隊列,經過Kafka將數據傳遞給實時計算引擎進行處理。

業務數據庫的數據量相比訪問日誌來說小很多。對於非實時的數據,一般定時導入到HDFS/Hive中。一個常用的工具是Sqoop,Sqoop是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,可以將一個關係型數據庫(例如 :MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。而對於實時的數據庫同步,可以採用Canal作爲中間件,處理數據庫日誌(如binlog),將其計算後實時同步到大數據平臺的數據存儲中。

數據存儲

無論上層採用何種的大規模數據計算引擎,底層的數據存儲系統基本還是以HDFS爲主。HDFS(Hadoop Distributed File System)是Hadoop項目的核心子項目,是分佈式計算中數據存儲管理的基礎。具備高容錯性、高可靠、高吞吐等特點。

HDFS存儲的是一個個的文本,而我們在做分析統計時,結構化會方便需要。因此,在HDFS的基礎上,會使用Hive來將數據文件映射爲結構化的表結構,以便後續對數據進行類SQL的查詢和管理。

數據處理

數據處理就是我們常說的ETL。在這部分,我們需要三樣東西:計算引擎、調度系統、元數據管理。

對於大規模的非實時數據計算來講,目前一樣採用Hive和spark引擎。Hive是基於MapReduce的架構,穩定可靠,但是計算速度較慢;Spark則是基於內存型的計算,一般認爲比MapReduce的速度快很多,但是其對內存性能的要求較高,且存在內存溢出的風險。Spark同時兼容hive數據源。
從穩定的角度考慮,一般建議以Hive作爲日常ETL的主要計算引擎,特別是對於一些實時要求不高的數據。Spark等其他引擎根據場景搭配使用。

實時計算引擎方面,目前大體經過了三代,依次是:storm、spark streaming、Flink。Flink已被阿里收購,大廠一直在推,社區活躍度很好,國內也有很多資源。

調度系統上,建議採用輕量級的Azkaban,Azkaban是由Linkedin開源的一個批量工作流任務調度器。https://azkaban.github.io/

一般需要自己開發一套元數據管理系統,用來規劃數據倉庫和ETL流程中的元數據。元數據分爲業務元數據和技術元數據。

  • 業務元數據,主要用於支撐數據服務平臺Web UI上面的各種業務條件選項,比如,常用的有如下一些:移動設備機型、品牌、運營商、網絡、價格範圍、設備物理特性、應用名稱等。這些元數據,有些來自於基礎數據部門提供的標準庫,比如品牌、價格範圍等,可以從對應的數據表中同步或直接讀取;而有些具有時間含義的元數據,需要每天通過ETL處理生成,比如應用信息。爲支撐應用計算使用,被存儲在MySQL數據庫中;而對於填充頁面上對應的條件選擇的數據,則使用Redis存儲,每天/月會根據MySQL中的數據進行加工處理,生成易於快速查詢的鍵值對類數據,存儲到Redis中。

  • 技術元數據,主要包括數據倉庫中的模型說明、血緣關係、變更記錄、需求來源、模型字段信息等,詳細的可以查看數據分析師應該瞭解的數據倉庫(3)

數據流轉

通過上面一張圖瞭解數據採集,數據處理,到數據展現的數據流轉。通常我們在實際工作中,從數據源到分析報告或系統應用的過程中,主要包括數據採集同步、數據倉庫存儲、ETL、統計分析、寫入上層應用數據庫進行指標展示。這是最基礎的一條線,現在還有基於數據倉庫進行的數據分析挖掘工作,會基於機器學習和深度學習對已有模型數據進一步挖掘分析,形成更深層的數據應用產品。

數據應用

俗話說的好,“酒香也怕巷子深”。數據應用前面我們做了那麼多工作爲了什麼,對於企業來說,我們做的每一件事情都需要體現出價值,而此時的數據應用就是大數據的價值體現。數據應用包括輔助經營分析的一些報表指標,商城上基於用戶畫像的個性化推送,還有各種數據分析報告等等。

好的數據應用一定要藉助可視化顯現,比如很多傳統企業買的帆軟。開源界推薦一款可視化工具Superset,可視化種類很多,支持數據源也不少,使用方便。最近數磚收購的redash,也爲了自己能一統大數據處理平臺。可以看出可視化對於企業數據價值體現是很重要的。

結尾

通過本文,可以對大數據平臺處理做初步瞭解,知道包含哪些技術棧,數據怎麼流轉,想要真正從0到1搭建起自己的大數據平臺,還是不夠的。瞭解了流程,你還需要真正的上手搭建Hadoop集羣,Spark集羣,數據倉庫建設,數據分析流程規範化等等都需要很多工作,想了解更多的讀者歡迎留言,或者關注公衆號後添加我微信一起探討。

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