人人都可以,從0到1建立大數據平臺

人人都可以,從0到1建立大數據平臺

大數據時代這個詞被提出已有10年左右了,越來越多的企業已經完成了數字化轉型,或在轉型中。其普及原因一是因為大數據價值在越來越多的場景中被挖掘,二是因為大數據平臺的搭建門檻也越來越低。藉助開源的力量,任何有基礎研發能力的組織完全可以搭建自己的大數據平臺,這裡和大家分享0到1搭建方案,以掃盲。

總覽

人人都可以,從0到1建立大數據平臺

整體大數據平臺可以分為存、管、用三部分:
存數據,主要指數據的採集和存儲;
管數據,主要指數據倉庫內數據模型的搭建和元數據管理;
用數據,主要指使用數據來優化決策是改善用戶體驗。
我們主要選擇Hadoop生態系統為基礎,來構建我們的數據平臺。

數據流程

人人都可以,從0到1建立大數據平臺

如上圖所示,從數據源到分析報告或系統應用的過程中,主要包括數據採集同步、數據倉庫存儲、ETL、統計分析、寫入上層DB等環節。這是一條主線,在實際的落地過程中,可能還會有分支的環節出現,比如特徵工程。

數據採集

日常的數據來源主要是兩塊:APP/web訪問日誌,各業務數據庫。這兩類數據採集同步到數據倉庫的方式有所不同,並且每種數據都分為實時和非實時兩種場景。

人人都可以,從0到1建立大數據平臺

APP/web訪問日誌採集

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

人人都可以,從0到1建立大數據平臺

對於非實時使用的數據,可以通過Flume直接導入到集群的HDFS文件系統中。而對於要實時使用的數據來說,則可以採用Flume+Kafka的框架。Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,簡單來說,可以理解為隊列。經過Kafka將數據傳遞給實時計算引擎進行處理。

人人都可以,從0到1建立大數據平臺

業務數據庫同步

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

數據存儲

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

人人都可以,從0到1建立大數據平臺

HDFS原理

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

ETL

ETL實際上也是建立維護參考內數據模型的過程。在這個部分,我們需要三樣東西:計算引擎、調度系統、元數據管理。

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

實時計算引擎方面,目前大體經過了四代,依次是:Java程序處理、storm、spark streaming、Flink。Flink已被阿里收購,目前的社區力量也很猛,非常看好其發展前景。

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

元數據管理主要用於管理數據本身,這個一般自己開發系統就行。

Hadoop套件安裝

目前已經有成熟的Hadoop的套件,能大大提高平臺搭建的便利性,類似python的anaconda。建議採用CDH的版本安裝,比獨立安裝Hadoop各組件方便很多。


http://cn.cloudera.com/downloads.html

人人都可以,從0到1建立大數據平臺

CDH6.0.1包含組件

如果你打算使用阿里雲的服務器,也可以直接選用阿里雲的E-MapReduce產品,裡面預裝了大數據開源生態的一系列組件,目前只收機器的費用比較划算。

報表系統

對於大多數公司來說,最主要的數據應用場景便是數據決策了,其產品載體便是數據報表系統。報表系統涉及幾塊內容:報表系統框架、權限管理系統、每個報表的前端製作。僅報表系統框架和權限管理系統,就需要前端工程師和產品經理至少投入上月時間來搭建,而且後續報表還需要前端開發的持續投入。

前端資源有限時,初期可以考慮採購成熟的數據可視化系統,這樣便於讓組織快速看到大數據決策的效果,利於大數據落地。同時這些產品本身商業化也已經比較成熟了,後續若要長期使用也是沒問題的。可選擇的有開源的R語言shiny拓展、Cboard,國外商業產品比較著名的Tableau,國內的則是帆軟等等。

結語

按上面的方案,相信初步搭建起大數據平臺是沒問題的。
不過這只是開始,後續的平臺維護、二次開發、數倉開發、數據價值產出等等才是大數據落地的重要組成,應儘早組建起專業的數據分析和數據工程師團隊。


分享到:


相關文章: