計算框架選型與對比
- 一、大數據平臺
- 二、計算框架分類
- 1.批處理架構
- 2.實時流處理架構
- 3.流批一體處理架構
- 三、計算框架關鍵指標
- 1.處理模式
- 2.可伸縮性
- 3.消息傳遞
- 3.1 至少一次(at least once)
- 3.2 至多一次(ai most once)
- 3.3 恰好一次(exactly once)
- 4.中間結果存儲
- 5.迭代計算
- 6.吞吐量
- 7.容錯
- 8.狀態管理
- 四、計算框架對比
- 總結
- 參考鏈接
一、大數據平臺
針對大數據的應用每個企業都有自己特定的需求和情況,所以都需要針對需求成本技術等搭建自己的大數據平臺。大數據平臺是一個對海量數據從采集、存儲、計算、應用、管理、運維的多方位、多維度的組合研究設計,從而建設合理高效滿足企業需求的大數據平臺架構。
二、計算框架分類
為了應對數據量的激增、分析需求時效性的要求,計算框架逐步從早期的批處理轉變到現在的實時流處理的轉變,按照對數據處理方式計算框架可以分類如下:
1.批處理架構
批處理指的是將數據按照批次進行收集、存儲和處理分析。批處理是一種離線數據處理方式、數據被收集完畢后才會進行處理,因此需要等待一段時間。早期大數據平臺基本都是采用批處理對數據進行計算。Apache Hadoop就是一個批處理框架,包括存儲組件HDFS和計算組件MapReduce。
優點:
- 適用于離線數據處理,特別是對歷史數據進行分析和挖掘 (例如日志數據、數據庫數據等)
- 高吞吐量、能夠處理大規模數據、適合大數據分析
- 處理的數據規模比較大,通常數百萬或數千萬條數據
缺點:
- 不能實現實時分析,數據處理延時比較高
- 不適合低延遲場景
2.實時流處理架構
實時流處理就是數據生產之后立刻進行處理,數據以流的形式產生后即可進行處理和分析,可以實現更低的延遲和更高的即可性。實時流是一種在線數據處理方式,Apache Storm和Apache Samza是實時流處理架構。
優點:
- 實時性更強
- 低延遲、適合一些即時場景(例如金融交易、物聯網等)
- 一般是實時小規模數據流
缺點:
- 針對離線數據處理吞吐量低于批處理
- 可能無法支持復雜邏輯處理
3.流批一體處理架構
隨著需求發展,大數據需要提供更全面的數據處理能力,也就是需要同時支持批處理和實時處理。所以一個架構將批處理和流處理結合成為一種趨勢,將實時流數據存儲下來,然后在批量任務中進行深入分析和挖掘。Apache Spark和Apache Flink是典型的流批一體處理架構。
優點:
- 可以充分發揮批處理和實時處理的優勢,滿足不同的業務需求。
- 可以減少實時流處理的壓力,將部分處理轉移到批處理中進行。
缺點:
- 增加了系統復雜性,需要同時維護批處理和實時處理組件
- 數據一致性需要特別關注
三、計算框架關鍵指標
計算框架在對大數據處理過程中會遇到一些普遍存在和框架需要處理的問題,所以計算框架支持的功能和解決一些問題的處理方式可以看作關鍵指標和對比維度。主要維度如下:
1.處理模式
處理模式是指計算框架對批處理和實時處理支持與否。
2.可伸縮性
可伸縮性是指系統通過增加資源來應對不斷增加的負載的能力。由于大數據本地就存在負載不均衡或者不連續的情況,所以是大數據架構的基本指標。現有的大數據框架基本都是通過水平拓展來應對負載的增加。
3.消息傳遞
針對在處理過程中如果出現異常,每個框架對消息如何處理并不相同。按照處理類型分為
3.1 至少一次(at least once)
意味著會很多次嘗試對消息進行處理,并且至少處理成功一次。可能導致最終的處理結果中數據重復的情況。
3.2 至多一次(ai most once)
意味只會一次嘗試對消息進行處理,也就是最多成功一次。可能導致最終處理結果中數據缺失的情況
3.3 恰好一次(exactly once)
意味著該消息不會被重復處理,也不會不進行處理,只會被精確的處理一次。這種情況最終的處理結果中數據是精準的。
4.中間結果存儲
計算過程中中間的結果存儲介質,如果保存到磁盤、則計算速度慢、但是對內存需求會比較低;如果保存到內存、則計算速度快、但是需要較大的內存支持。
5.迭代計算
迭代計算是指迭代方法的實現,該迭代方法在沒有實際解的情況下或在實際解的成本過高的情況下估計近似解
6.吞吐量
7.容錯
分布式系統中,包含任務故障、節點故障、網絡故障等,框架應該能夠恢復,并且應該從它離線的位置再次開始處理,一般通過不時地檢查流式傳輸到某個持久存儲的狀態來實現
8.狀態管理
在狀態處理要求的情況下,我們需要維護某些狀態(例如記錄中看到的每個不同單詞的計數),框架應該能夠提供一些機制來保存和更新狀態信息。
四、計算框架對比
總結
以上對大數據平臺組成、計算框架需要提供哪些功能、常用計算框架對比。
參考鏈接
1.大數據處理平臺的架構演進:從批處理到實時流處理