2014-06-09 157 views
270

Apache SparkApache Storm有什麼區別?每個適合的用例是什麼?Apache Spark與Apache Storm

+10

@ MC110:實時處理兩者都支持。雖然Storm支持數據運動,但Spark支持靜態數據。還有什麼? – anhldbk

+4

這個鏈接總結得很好https://dzone.com/articles/streaming-big-data-storm-spark –

回答

421

Apache Spark是一個內存分佈式數據分析平臺 - 主要針對加快批量分析作業,迭代機器學習作業,交互式查詢和圖形處理。

Spark的主要區別之一是其使用RDD或彈性分佈式數據集。 RDD對於流水線並行運算符的計算非常有用,並且根據定義,它是不可變的,這使得Spark能夠根據血統信息提供獨特的容錯形式。例如,如果您對加快執行Hadoop MapReduce作業感興趣,Spark是一個不錯的選擇(儘管必須考慮內存要求)。

Apache Storm專注於流處理或者一些所謂的複雜事件處理。 Storm實現了一種容錯方法,用於在事件流入系統時執行計算或流水線化多個事件。有人可能會使用Storm將非結構化數據轉換爲所需的格式。

Storm和Spark關注於相當不同的用例。更多的「蘋果對蘋果」比較將在Storm TridentSpark Streaming之間。由於Spark的RDD本質上是不可變的,因此Spark Streaming實現了一種在用戶定義的時間間隔中「批量」傳入更新的方法,該時間間隔將轉換爲其自己的RDD。然後Spark的並行運算符可以對這些RDD執行計算。這與Storm分別處理每個事件是不同的。

這兩種技術的一個主要區別是Spark執行Data-Parallel computations而Storm執行Task-Parallel computations。任何一種設計都會做出值得認識的折衷。我會建議查看這些鏈接。

編輯:發現this今天

+4

好解釋。提到的文章很好http://xinhstechblog.blogspot.in/2014/06/storm-vs -spark-streaming-side-by-side.html – minhas23

+0

鏈接不響應我。下面是谷歌緩存:http://webcache.googleusercontent.com/search?q=cache:yl9B_lZ5u9EJ:xinhstechblog.blogspot.com/2014/06/storm-vs-spark-streaming-side-by-side.html+ &cd = 1&hl = ru&ct = clnk&gl = ru – asdfasdfads

+0

極好的並排比較鏈接。關注Scala開發者:Storm在Closure中實現,而Spark在Scala中實現。 –