Storm与Spark Streaming比较

解道jdon 2021-05-04 18:52:55
spark 比较 storm 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上。

版权声明
本文为[解道jdon]所创,转载请带上原文链接,感谢
https://www.jdon.com/46591

  1. Prototype与JQuery对比
  2. Three ways of data transmission between threads in Java and source code display
  3. Jdon causes 99% of CPU and Tomcat dies -- banq replies
  4. docker 原理之 user namespace(下)
  5. Simulating AOP injection with domain events
  6. Spring 3.1 finally adds cache support
  7. Comparison between prototype and jquery
  8. User namespace of docker principle (2)
  9. The way to learn java IO stream and XML
  10. Why does a seemingly correct code cause the Dubbo thread pool to be full
  11. 0 基础 Java 自学之路(2021年最新版)
  12. 0 basic Java self study road (latest version in 2021)
  13. c#—基础拾遗(1) 面向对象
  14. C - basic information (1) object oriented
  15. 技术分享|SQL和 NoSQL数据库之间的差异:MySQL(VS)MongoDB
  16. Technology sharing differences between SQL and NoSQL databases: MySQL (VS) mongodb
  17. PHP教程/面向对象-3~构造函数和析构函数
  18. Spring Cloud的Feign客户端入门
  19. 优化Spring Boot应用的Docker打包速度
  20. PHP tutorial / object oriented - 3 ~ constructor and destructor
  21. Introduction to feign client of spring cloud
  22. Optimizing docker packaging speed of spring boot application
  23. 尚硅谷宋红康Java基础教程2019版
  24. 尚硅谷宋红康Java基础教程2019版
  25. Song Hongkang Java foundation course 2019
  26. Song Hongkang Java foundation course 2019
  27. Redis 6 的多线程
  28. Multithreading of redis 6
  29. SpringCloud-微服务架构编码构建
  30. SpringCloud-微服务架构编码构建
  31. Linux作业控制
  32. Coding construction of springcloud microservice architecture
  33. Java中几个常用并发队列比较 | Baeldung
  34. 为什么Java后端在创业企业中并不流行? -reddit
  35. Coding construction of springcloud microservice architecture
  36. Linux job control
  37. Comparison of several common concurrent queues in Java
  38. Why is java backend not popular in start-ups- reddit
  39. docker 资源限制之 cgroup
  40. 大数据环境: hadoop和jdk部署
  41. CGroup of docker resource limitation
  42. Big data environment: Hadoop and JDK deployment
  43. Spring与Hibernate与JPA的整合(详细配置和源码)
  44. Integration of spring, hibernate and JPA (detailed configuration and source code)
  45. 《精通JPA与Hibernate:Java对象持久化技术详解》的源代码下载
  46. 《精通JPA与Hibernate:Java对象持久化技术详解》的源代码下载
  47. "Proficient in JPA and Hibernate: Java Object Persistence technology" source code download
  48. "Proficient in JPA and Hibernate: Java Object Persistence technology" source code download
  49. Redis、Kafka或RabbitMQ:选择哪个作为微服务消息代理? - otonomo
  50. Java Stream和Collection比较:何时以及如何从Java API返回Stream而不是集合Collection? - TomaszKiełbowicz
  51. 如何在SpringBoot中使用Hibernate @NaturalId?
  52. RPC框架设计----NIO编程通道(Channel)
  53. The use of jquery
  54. Redis, Kafka or rabbitmq: which one to choose as the micro service message broker- otonomo
  55. Comparison of Java stream and collection: when and how to return stream instead of collection from Java API- TomaszKie ł bowicz
  56. How to use hibernate @ naturalid in springboot?
  57. RPC framework design -- NiO programming channel
  58. RPC框架设计----NIO编程Selector (选择器)
  59. RPC framework design -- NiO programming selector
  60. Linux centos重启命令