盛兴彩票网-Apache Storm和Apache Spark流之间的比较

本教程介绍了Apache Storm和Apache Spark流之间的区别。盛兴彩票Apache Storm是用于处理实时流数据的流处理引擎,而 是通用计算引擎,它提供Spark流,能够处理流数据以近乎实时地处理流数据。让我们来了解一场Storm vs Spark的比赛,这个比较好。

2.1。处理模型

  • Storm:它通过核心风暴层支持真正的流处理模式。
  • Spark Streaming:是Spark批处理的封装。

2.2。基元

  • Storm:  它提供了一组非常丰富的基元,以流的间隔执行元组级过程(过滤器,函数)。通过语义分组可以对流中消息进行聚合。它支持跨流的左连接,右连接,内连接(默认)。
  • Spark Streaming:它提供了2种广泛的运营商。首先是   将一个  DStream  转换为另一个DStream其次是   将信息写入外部系统的输出操作员前者包括无状态操作符(过滤器,映射,mapPartitions,union,不同于on)仍然是有状态的窗口操作符(countByWindow,reduceByWindow接着)。

2.3。国家管理

  • Storm:默认情况下Core Storm不提供任何框架级盛兴彩票支持来将任何中间螺栓输出(用户操作的结果)作为状态存储。因此,任何应用程序必须根据需要创建/更新自己的状态。
  • Spark Streaming: 默认的Spark默认将每个操作的输出视为中间状态。它将其存储为RDD。Spark Streaming允许通过updateStateByKey API 维护和更改状态  无法找到可插拔的方法在外部系统中实现状态。

2.4。消息传递保证(处理消息级别失败)

  • Storm:  它支持3个消息处理保证: 至少一次,  最多一次  ,  恰好一次Storm的可靠性机制是分布式的,可扩展的和容错的。
  • Spark Streaming: Apache  Spark Streaming定义了它的 语义,即接收者和输出运营商提供的保证。按照传入数据将在不同的Spark执行程序节点中读取和复制。这会生成收到的故障情景数据,但可能不会反映出来。它在处理员故障和驱动器故障的情况下以不同的方式处理容错。

2.5。容错(处理过程/节点级故障)

  • 风暴:风暴的核心是容错。Storm守护进程(Nimbus和Supervisor)被设置为快速失败(这意味着在遇到任何突发情况时该方法会自毁),并且无状态(Zookeeper或磁盘上的所有状态都不中断)。
  • Spark Streaming:驱动程序节点(相当于JT)是  SPOF如果驱动程序节点发生故障,则所有执行程序都将丢失收到并复制的内存信息。因此,Spark Streaming使用  数据检查点来解决驱动程序故障。

2.6。可调性和监控

  • Storm:  Apache Storm UI支持每个拓扑的图像; 随着内部喷嘴和螺栓的整个分解。UI额外提供了任务中出现错误的信息,以及有关正在运行的拓扑的每个部分的吞吐量和延迟的细粒度统计信息。它有助于高水平地调试问题。 基于指标的监控:  Storm的内置指标功能支持应用程序发布任何指标的框架级别,然后可以将其简单地与外部指标/监控系统集成。
  • Spark Streaming: Spark Web UI显示一个额外的Streaming选项卡,显示运行接收器的统计信息(接收器是否处于活动状态,接收到的记录种类,接收器错误等)和完成的批次(批处理时间,排队延迟等等上)。盛兴彩票观察应用程序的执行很有用。Spark Web UI中的以下2个信息对于批量大小的标准化非常必要:
  1. 处理时间  - 处理每批数据的时间。
  2. 计划延迟  - 批次保留在队列中的时间,以便前一批次完成。

2.7。Auto Scaling

  • Storm:  它提供了配置每个拓扑的各种级别的初始并行机制 - 各种工作进程,执行程序和任务。此外,它支持动态重新平衡,允许增加或减少重新启动集群或拓扑所需的工作进程和执行程序的数量。但是,设计的许多初始任务在拓扑的整个生命周期中保持不变。
    一旦所有监督节点完全饱和了工作进程,并且需要扩展,则只需开始替换监督节点并将其通知到群集的Zookeeper。
    有可能在一个非常Storm集群中的每个节点上转换监视当前资源消耗的逻辑,并动态地添加大量资源。STORM-594描述了采用反馈系统的这种自动缩放机制。
  • Spark Streaming:社区目前正在开发针对流式应用程序的动态扩展。目前,Spark流应用程序的弹性缩放不受支持。
    实质上,动态分配并不意味着在Spark(1.4或更早版本)流中使用。原因是目前接收拓扑是静态的。接收器的数量是固定的。每个DStream实例化一个接收器,它将使用集群内的一个内核。StreamingContext启动后,此拓扑无法修改。杀手接收器导致停止拓扑。

2.8。纱线整合

  • Storm:  通过Apache Slider推荐一起的Storm整合  滑块是一个YARN应用程序,它通过YARN群集部署非YARN分布式应用程序。它与  进行交互  以产生分布式应用程序的容器,然后管理这些容器的生命周期。Slider为Storm提供开箱即用的应用程序包。
  • Spark Streaming: Spark框架与YARN一起提供本地集成。作为Spark上层的Spark流只是利用集成。每个Spark流应用程序都可以作为单独的Yarn应用程序进行转载 ApplicationMaster 容器运行星火驱动器和初始化每个执行者  和接收者都在由ApplicationMaster管理的容器中运行ApplicationMaster然后定期向YARN容器上的每个微批处理提交一个作业。

2.9。隔离

  • Storm:每个员工流程运行特定拓扑的执行者。在支持拓扑级别运行时隔离的工作进程级别不允许混合使用各种拓扑任务。此外,每个执行程序线程都运行一个或多个相同元素(喷口或螺栓)的任务,这不会跨元素混合任务。
  • Spark Streaming: Spark应用程序是在YARN集群上运行的不同应用程序,无论每个执行程序在不同的YARN容器中运行。因此,Yarn提供JVM级别的隔离,因为2个完全不同的拓扑不能在相同的JVM中执行。此外,YARN提供资源级别隔离,盛兴彩票以便可以组织容器级资源约束(CPU,内存限制)。

2.11。开源的Apache社区

  • 风暴:  阿帕奇风暴由许多使用案例在生产中运行Storm的公司的页面健康清单组成。其中许多是大规模网络部署,正在推动性能和规模的界限。例如,雅虎阅读由两个300个运行Storm的节点组成,用于接近实时的事件处理,最大的拓扑跨越四百个节点。
  • Spark Streaming: Apache  Spark流式传输仍在不断上升,并限制了生产集群的专业知识。但是,Apache Spark社区的总体规划是所有最大的,因此也是当前最活跃的开放供应社区。鉴于庞大的开发者基础,总章程是空间发展。这可能会导致Spark Streaming在未来的成熟。

2.12。易于开发

  • Storm:  它提供了非常简单,丰富和直观的API,简单描述了流程流(拓扑)特性。动态地写入风暴元组,其中提供了在DAG内的节点之间流动的数据的抽象。这是为了简单使用而改变API的动机。一旦注册其Kryo串行器,任何新的自定义元组都可以插入开发人员将从编写拓扑开始并以本地集群模式运行它们。在本地模式下,线程用于模拟工作节点,允许开发人员设置断点,暂停执行,检查变量和配置文件,然后将其部署到分布式集群,无论哪种方式通常更加困难。
  • Spark Streaming:  它提供了 Java API,它们有很多实用的编程(数据转换)。结果,拓扑代码是很多椭圆的方式。盛兴彩票开发人员在市场上有一套高档的API文档和示例样本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.gdjxjy.com.cn/a/shengxingcaipiaowang/182.html