大數據平臺核心架構圖鑑,建議收藏!

我們先來看看這張圖,這是某公司使用的大數據平臺架構圖,大部分公司應該都差不多:

從這張大數據的整體架構圖上看來,大數據的核心層應該是:數據採集層、數據存儲與分析層、數據共享層、數據應用層,可能叫法有所不同,本質上的角色都大同小異。

所以我下面就按這張架構圖上的線索,慢慢來剖析一下,大數據的核心技術都包括什麼。

01

數據採集

數據採集的任務就是把數據從各種數據源中採集和存儲到數據存儲上,期間有可能會做一些簡單的清洗。

數據源的種類比較多:

02

數據存儲與分析

毋庸置疑,HDFS 是大數據環境下數據倉庫 / 數據平臺最完美的數據存儲解決方案。

離線數據分析與計算,也就是對實時性要求不高的部分,在筆者看來,Hive 還是首當其衝的選擇,豐富的數據類型、內置函數;壓縮比非常高的 ORC 文件存儲格式;非常方便的 SQL 支持,使得 Hive 在基於結構化數據上的統計分析遠遠比 MapReduce 要高效的多,一句 SQL 可以完成的需求,開發 MR 可能需要上百行代碼。

當然,使用 Hadoop 框架自然而然也提供了 MapReduce 接口,如果真的很樂意開發 Java,或者對 SQL 不熟,那麼也可以使用 MapReduce 來做分析與計算。

Spark 是這兩年非常火的,經過實踐,它的性能的確比 MapReduce 要好很多,而且和 Hive、Yarn 結合的越來越好,因此,必須支持使用 Spark 和 SparkSQL 來做分析和計算。因爲已經有 Hadoop Yarn,使用 Spark 其實是非常容易的,不用單獨部署 Spark 集羣。

03

數據共享

這裏的數據共享,其實指的是前面數據分析與計算後的結果存放的地方,其實就是關係型數據庫和 NOSQL 數據庫;前面使用 Hive、MR、Spark、SparkSQL 分析和計算的結果,還是在 HDFS 上,但大多業務和應用不可能直接從 HDFS 上獲取數據,那麼就需要一個數據共享的地方,使得各業務和產品能方便的獲取數據;和數據採集層到 HDFS 剛好相反,這裏需要一個從 HDFS 將數據同步至其他目標數據源的工具,同樣,DataX 也可以滿足。

另外,一些實時計算的結果數據可能由實時計算模塊直接寫入數據共享。

04

數據應用

05

實時計算

現在業務對數據倉庫實時性的需求越來越多,比如:實時的瞭解網站的整體流量;實時的獲取一個廣告的曝光和點擊;在海量數據下,依靠傳統數據庫和傳統實現方法基本完成不了,需要的是一種分佈式的、高吞吐量的、延時低的、高可靠的實時計算框架;Storm 在這塊是比較成熟了,但我選擇 Spark Streaming,原因很簡單,不想多引入一個框架到平臺中,另外,Spark Streaming 比 Storm 延時性高那麼一點點,那對於我們的需要可以忽略。

我們目前使用 Spark Streaming 實現了實時的網站流量統計、實時的廣告效果統計兩塊功能。

做法也很簡單,由 Flume 在前端日誌服務器上收集網站日誌和廣告日誌,實時的發送給 Spark Streaming,由 Spark Streaming 完成統計,將數據存儲至 Redis,業務通過訪問 Redis 實時獲取。

06

任務調度與監控

在數據倉庫 / 數據平臺中,有各種各樣非常多的程序和任務,比如:數據採集任務、數據同步任務、數據分析任務等;

這些任務除了定時調度,還存在非常複雜的任務依賴關係,比如:數據分析任務必須等相應的數據採集任務完成後才能開始;數據同步任務需要等數據分析任務完成後才能開始;

這就需要一個非常完善的任務調度與監控系統,它作爲數據倉庫 / 數據平臺的中樞,負責調度和監控所有任務的分配與運行。

來源:http://lxw1234.com/archives/2015/08/471.htm

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/7NAq4c32wXys0gsnA28Paw