Storm與Spark Streaming比較
Storm風暴和Spark Streaming火花流都是分散式流處理的開源框架。這裡將它們進行比較並指出它們的重要的區別。
處理模型,延遲
雖然這兩個框架都提供可擴充套件性和容錯性,它們根本的區別在於他們的處理模型。而Storm處理的是每次傳入的一個事件,而Spark Streaming是處理某個時間段視窗內的事件流。因此,Storm處理一個事件可以達到秒內的延遲,而Spark Streaming則有幾秒鐘的延遲。
容錯、資料保證
在容錯資料保證方面的權衡是,Spark Streaming提供了更好的支援容錯狀態計算。在Storm中,每個單獨的記錄當它透過系統時必須被跟蹤,所以Storm能夠至少保證每個記錄將被處理一次,但是在從錯誤中恢復過來時候允許出現重複記錄。這意味著可變狀態可能不正確地被更新兩次。
另一方面,Spark Streaming只需要在批級別進行跟蹤處理,因此可以有效地保證每個mini-batch將完全被處理一次,即便一個節點發生故障。(實際上,Storm的 Trident library庫也提供了完全一次處理。但是,它依賴於事務更新狀態,這比較慢,通常必須由使用者實現。)
簡而言之,如果你需要秒內的延遲,Storm是一個不錯的選擇,而且沒有資料丟失。如果你需要有狀態的計算,而且要完全保證每個事件只被處理一次,Spark Streaming則更好。Spark Streaming程式設計邏輯也可能更容易,因為它類似於批處理程式(Hadoop),特別是在你使用批次(儘管是很小的)時。
實現,程式設計api
Storm初次是由Clojure實現,而 Spark Streaming是使用Scala. 如果你想看看程式碼還是讓自己的定製時需要注意的地方,這樣以便發現每個系統是如何工作的。Storm是由BackType和Twitter開發; Spark Streaming是在加州大學伯克利分校開發的。
Storm 有一個Java API, 也支援其他語言,而Spark Streaming是以Scala程式設計,當然也支援Java
Spark Streaming一個好的特性是其執行在Spark上. 這樣你能夠你編寫批處理的同樣程式碼,這就不需要編寫單獨的程式碼來處理實時流資料和歷史資料。
產品支援
Storm已經發布幾年了,在Twitter從2011年執行至今,同時也有其他公司使用,而Spark Streaming是一個新的專案,它從2013年在Sharethrough有一個專案執行。
Hadoop支援
Storm是一個 Hortonworks Hadoop資料平臺上的流解決方案,而Spark Streaming有 MapR的版本還有Cloudera的企業資料平臺,Databricks也提供Spark支援。
叢集管理整合
儘管兩個系統都執行在它們自己的叢集上,Storm也能執行在Mesos, 而Spark Streaming能執行在YARN 和 Mesos上。
相關文章
- 實時計算框架特點及對比:Flink、Spark Streaming、Storm框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(1)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(2)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(一)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(二)Apache框架SparkORM
- Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何選擇流處理框架SparkORMKafka框架
- Spark Streaming的PIDRateEstimator與backpressureSpark
- 大資料框架對比 - Hadoop、Spark、Storm、Samza、Spark、Flink大資料框架HadoopSparkORM
- Spark Streaming(六):快取與持久化Spark快取持久化
- Spark學習進度11-Spark Streaming&Structured StreamingSparkStruct
- Spark Streaming VS FlinkSpark
- Spark Streaming入門Spark
- spark學習筆記-- Spark StreamingSpark筆記
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- Spark 系列(十五)—— Spark Streaming 整合 FlumeSpark
- Spark學習筆記(三)-Spark StreamingSpark筆記
- spark-streaming之 socketTextStreamSpark
- Spark Streaming學習——DStreamSpark
- Spark Streaming 流式處理Spark
- Spark Streaming :基本工作原理Spark
- Spark Structured Streaming 解析 JSONSparkStructJSON
- Spark Streaming Failed to read checSparkAI
- Spark 以及 spark streaming 核心原理及實踐Spark
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- Cris 的 Spark Streaming 筆記Spark筆記
- Spark Streaming中的Window操作Spark
- Spark Streaming監聽HDFS檔案(Spark-shell)Spark
- ==與equals比較
- Spark-Streaming的學習使用Spark
- Spark Streaming 的容錯機制Spark
- Spark Streaming和Flink的區別Spark
- spark structed streaming 寫入hudi表SparkStruct
- 實戰|使用Spark Streaming寫入HudiSpark
- Spark Streaming--開窗函式over()Spark函式
- Spark Streaming 之 Kafka 偏移量管理SparkKafka
- Spark Streaming 生產、消費流程梳理Spark
- Spark Streaming簡單入門(示例+原理)Spark
- Hibernate與mybatis比較MyBatis
- yarn 與 npm 比較YarnNPM