1. 五種主流的大數據架構
1.1 傳統大數據架構
之所以叫傳統大數據架構,是因為其定位是為了解決傳統BI的問題,簡單來說,數據分析的業務沒有發生任何變化,但是因為數據量、性能等問題導致系統無法正常使用,需要進行升級改造,那么此類架構便是為了解決這個問題。可以看到,其依然保留了ETL的動作,將數據經過ETL動作進入數據存儲。
優點:簡單,易懂,對於BI系統來說,基本思想沒有發生變化,變化的僅僅是技術選型,用大數據架構替換掉BI的組件。
缺點:對於大數據來說,沒有BI下如此完備的Cube架構,雖然目前有kylin,但是kylin的局限性非常明顯,遠遠沒有BI下的Cube的靈活度和穩定度,因此對業務支撐靈活度不夠,所以對於存在大量報表,或者復雜的鑽取的場景,需要太多的手工定制化,同時該架構依舊以批處理為主,缺乏實時的支撐。
適用場景:數據分析需求依舊以BI場景為主,但是因為數據量、性能等問題無法滿足日常使用。
1.2 流式架構
在傳統大數據架構的基礎上,流式架構非常激進,直接拔掉了批處理,數據全程以流的形式處理,所以在數據接入端沒有了ETL,轉而替換為數據通道。經過流處理加工后的數據,以消息的形式直接推送給了消費者。雖然有一個存儲部分,但是該存儲更多的以窗口的形式進行存儲,所以該存儲並非發生在數據湖,而是在外圍系統。
優點:沒有臃腫的ETL過程,數據的實效性非常高。
缺點:對於流式架構來說,不存在批處理,因此對於數據的重播和歷史統計無法很好的支撐。對於離線分析僅僅支撐窗口之內的分析。
適用場景:預警,監控,對數據有有效期要求的情況
1.3 Lambda架構
Lambda架構算是大數據系統里面舉足輕重的架構,大多數架構基本都是Lambda架構或者基於其變種的架構。Lambda的數據通道分為兩條分支:實時流和離線。實時流依照流式架構,保障了其實時性,而離線則以批處理方式為主,保證了最終一致性。流式通道處理為保障實效性更多的以增量計算為主輔助參考,而批處理層則對數據進行全量運算,保障其最終的一致性,因此Lambda最外層有一個實時層和離線層合並的動作,此動作是Lambda里非常重要的一個動作,大概的合並思路如下:
優點:既有實時又有離線,對於數據分析場景涵蓋的非常到位。
缺點:離線層和實時流雖然面臨的場景不同,但是其內部處理的邏輯卻是相同,因此有大量榮譽和重復的模塊存在。
適用場景:同時存在實時和離線需求的情況。
1.4 Kappa架構
Kappa架構在Lambda的基礎上進行了優化,將實時和流部分進行了合並,將數據通道以消息隊列進行替代。因此對於Kappa架構來說,依舊以流處理為主,但是數據卻在數據湖層面進行了存儲,當需要進行離線分析或者再次計算的時候,則將數據湖的數據再次經過消息隊列重播一次即可。
優點:Kappa架構解決了Lambda架構里面的冗余部分,以數據可重播的超凡脫俗的思想進行了設計,整個架構非常簡潔。
缺點:雖然Kappa架構看起來簡潔,但是實施難度相對較高,尤其是對於數據重播部分。
使用場景:和Lambda類似,改架構是針對Lambda的優化。
1.5 Unifield架構
以上的種種架構都圍繞海量數據處理為主,Unifield架構則更激進,將機器學習和數據處理揉為一體,從核心上來說,Unifield依舊以Lambda為主,不過對其進行了改造,在流處理層新增了機器學習層。可以看到數據在經過數據通道進入數據湖后,新增了模型訓練部分,並且將其在流式層進行使用。同時流式層不單使用模型,也包含着對模型的持續訓練。
優點:Unifield架構提供了一套數據分析和機器學習結合的架構方案,非常好的解決了機器學習如何與數據平台進行結合的問題。
缺點:Unifield架構實施復雜度更高,對於機器學習架構來說,從軟件包到硬件部署都和數據分析平台有着非常大的差別,因此在實施過程中的難度系數更高。
適用場景:有着大量數據需要分析,同時對機器學習方便又有着非常大的需求或者有規划。
2. 收集各大互聯網公司大數據平台架構
1. 酷狗音樂的大數據平台架構:
https://www.infoq.cn/article/kugou-big-data-platform-restructure
2. 滴滴大數據離線和實時平台架構和實踐:
https://myslide.cn/slides/15307
3. 美圖大數據平台lamda架構:
https://www.infoq.cn/article/QycsTZSz0REAFTgmh_J0
持續更新中......
【參考資料】
https://blog.csdn.net/scgyus/article/details/82259316