簡介
hadoop
- 是一個檔案系統,外加一個離線處理框架(map-reduce執行框架),主要用于海量資料檔案的保存、非實時的海量資料的計算,
- 提供的上層api不太友好,且mapreduce處理框架比較慢,現在基本上只拿它來作為檔案系統使用,
spark
- 是一個執行引擎,本身不保存資料,需要外部的檔案系統來保存資料,很多時候會基于hadoop來保存資料,
- spark計算時盡可能把資料放到記憶體中(基于記憶體),還提供了很好的上層用戶使用的介面,包括spl陳述句(spark sql),處理資料十分方便,它比map-reduce處理框架(基于磁盤)要快很多倍,現在基本上用它來做離線資料處理,
storm
- 是一個實時資料處理框架,只提供最基本的資料流傳輸框架元素和基本的資料流介面,用戶需要自己撰寫處理程序和處理邏輯,
flink
- 是實時資料處理系統,自己有一套完整的生態,上層提供了很多資料處理算子(介面函式)供用戶使用,對用戶更加友好,方便使用,現在很多公司都用它來進行實時資料處理,
Hadoop、Spark、Flink
其他網址
Hadoop對比:Hadoop、Spark、Flink三大框架對比 - 知乎
1、資料處理對比
Hadoop專為批處理而生,一次將大量資料集輸入到輸入中,進行處理并產生結果,
Spark:定義是一個批處理系統,但也支持流處理,
Flink:支持批處理和流處理,兩者可以單獨運行,也可以流批一體地運行,
2、流引擎對比
Hadoop:Hadoop默認的MapReduce,僅面向于批處理,
Spark:Spark Streaming以微批處理資料流,實作準實時的批處理和流處理,
Flink:Flink是真正的實時流引擎,使用流來處理作業負載,包括流,SQL,微批處理和批處理,
3、資料流對比
Hadoop:MapReduce計算資料流沒有任何回圈,每個階段使用上一階段的輸出,并為下一階段產生輸入,
Spark:盡管機器學習演算法是回圈資料流,但Spark將其表示為(DAG)直接非回圈圖或有向無環圖,
Flink:Flink在運行時支持受控回圈依賴圖,支持機器學習演算法非常有效,
4、計算模型對比
Hadoop:MapReduce采用了面向批處理的模型,批處理靜態資料,
Spark:Spark采用了微批處理,微批處理本質上是一種“先收集再處理”的計算模型,
Flink:Flink采用連續流式流傳輸模型,實時對資料進行處理,而不會在收集資料或處理資料時出現任何延遲,
5、性能對比
Hadoop:Hadoop僅支持批處理,不支持處理流資料,與Spark和Flink相比,性能會降低,
Spark:支持微批處理,但流處理效率不如Apache Flink,
Flink: 性能很強,Flink使用本機倍訓迭代運算子,尤其在支持機器學習和圖形處理方面,表現優異,
6、記憶體管理對比
Hadoop:提供可配置的記憶體管理,可以動態或靜態地執行此操作,
Spark:提供可配置的記憶體管理,從Spark 1.6開始已朝著自動進行記憶體管理的方向發展,
Flink:有自己的記憶體管理系統,提供自動記憶體管理,
Spark VS Storm
其他網址
spark與storm的對比 - 呢喃的歌聲 - 博客園
| 對比點 | Spark Streaming | Storm |
| 實時計算模型 | 準實時,對一個時間段內的資料收集起來,作為一個RDD,再處理 | 純實時,來一條資料,處理一條資料 |
| 實時計算延遲度 | 秒級 | 毫秒級 |
| 吞吐量 | 高 | 低 |
| 事務機制 | 支持,但不夠完善 | 支持完善 |
| 健壯性 / 容錯性 | Checkpoint,WAL,一般 | ZooKeeper,Acker,非常強 |
| 動態調整并行度 | 不支持 | 支持 |
Storm使用場景
1、建議在那種需要純實時,不能忍受1秒以上延遲的場景下使用,比如實時金融系統,要求純實時進行金融交易和分析
2、此外,如果對于實時計算的功能中,要求可靠的事務機制和可靠性機制,即資料的處理完全精準,一條也不能多,一條也不能少,也可以考慮使用Storm
3、如果還需要針對高峰低峰時間段,動態調整實時計算程式的并行度,以最大限度利用集群資源(通常是在小型公司,集群資源緊張的情況),也可以考慮用Storm
4、如果一個大資料應用系統,它就是純粹的實時計算,不需要在中間執行SQL互動式查詢、復雜的transformation算子等,那么用Storm是比較好的選擇
Spark Streaming使用場景
1、如果對上述適用于Storm的三點,一條都不滿足的實時場景,即,不要求純實時,不要求強大可靠的事務機制,不要求動態調整并行度,那么可以考慮使用Spark Streaming
2、考慮使用Spark Streaming最主要的一個因素,應該是針對整個專案進行宏觀的考慮,即,如果一個專案除了實時計算之外,還包括了離線批處理、互動式查詢等業務功能,而且實時計算中,可能還會牽扯到高延遲批處理、互動式查詢等功能,那么就應該首選Spark生態,用Spark Core開發離線批處理,用Spark SQL開發互動式查詢,用Spark Streaming開發實時計算,三者可以無縫整合,給系統提供非常高的可擴展性
Spark Streaming與Storm的優劣分析
Spark Streaming絕對談不上比Storm優秀,這兩個框架在實時計算領域中,都很優秀,只是擅長的細分場景并不相同,
Spark Streaming僅僅在吞吐量上比Storm要優秀,而吞吐量這一點,也是歷來挺Spark Streaming,貶Storm的人著重強調的,但是問題是,是不是在所有的實時計算場景下,都那么注重吞吐量?不盡然,因此,通過吞吐量說Spark Streaming強于Storm,不靠譜,
Storm在實時延遲度上,比Spark Streaming就好多了,前者是純實時,后者是準實時,而且,Storm的事務機制、健壯性 / 容錯性、動態調整并行度等特性,都要比Spark Streaming更加優秀,
Spark Streaming,有一點是Storm絕對比不上的,就是:它位于Spark生態技術堆疊中,因此Spark Streaming可以和Spark Core、Spark SQL無縫整合,也就意味著,我們可以對實時處理出來的中間資料,立即在程式中無縫進行延遲批處理、互動式查詢等操作,這個特點大大增強了Spark Streaming的優勢和功能,
Spark VS Flink
其他網址
spark與flink比較?在國內的現狀如何? - 知乎
| 項 | Spark | Flink |
| 成熟度 | 高(因為起步早) | 低 |
| 側重點 | 批處理 | 流處理 |
| 實時性 | 準實時 | 真正實時 |
| 流行度 | 使用的公司較多, | 較少(因為起步晚) |
| 性能 | 弱于Flink | 強于Spark |
| 發展趨勢 | 發展趨勢不如Flink | 發展趨勢好于Spark |
| 好用的地方 | 批處理 | 時間機制、狀態管理、流批一體 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262889.html
標籤:其他
