大數據時代這個詞被提出已有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集群,數據倉庫建設,數據分析流程規范化等等都需要很多工作,想了解更多的讀者歡迎留言,或者關注公眾號后添加我微信一起探討。