操作指南

 

流式计算框架对比分析

更新时间 2020-12-01

注意

Storm 支持 Storm Core 和 Storm Trident 两种编程模式。

Flink Spark Streaming Storm Kafka Stream 说明
架构模式 主从 主从,依赖 Spark,每个 batch 处理都依赖主 主从,依赖 Zookeeper,处理过程中对主的依赖不大 安装 Kafka,Kafka 依赖 Zookeeper
容错 基于 distributed snapshots checkpoint 机制 基于 HDFS 做 checkpoint Records Ack 高可用分区,状态存储和对乱序数据的处理能力
处理模型与延迟 单条事件处理,毫秒级延迟 一个事件窗口的所有事件,秒级延迟 Storm Core 单条事件处理,毫秒级延迟,Storm Trident 为批处理,秒级延迟 单条事件处理,毫秒级延迟
吞吐 Storm Core 低吞吐,Storm Trident 高吞吐
数据处理保证 exactly once exactly once Storm Core保证 at least once,Storm Trident 保证 exactly once 0.11.0版本后 exactly once
易用性 支持 SQL Streaming,Batch 和 Streaming 采用的统一编程框架 支持 SQL Streaming,Batch 和 Streaming 采用的统一编程框架 sql on Storm 发展中,还不成熟 自己的一套编程模型,KSQL 支持(Confluent 平台支持)
成熟性 处于发展阶段,比较成熟 发展了很长时间,非常成熟 发展了很长时间,非常成熟 处于发展阶段,比较成熟
分布式 RPC 不支持 不支持 支持 不支持

Flink 和 Kafka Stream 目前在生产环境中比较少见,主要针对 Storm 和 Spark Streaming 选型建议如下所示。

Storm 场景

  • 需要很低延迟的,比如实时金融系统,要求纯实时进行金融交易和分析。
  • 要求可靠的事务机制和可靠性机制,即数据的处理完全精准无误的。
  • 需要针对高峰低峰时间段,动态调整实时计算程序的并行度,以最大限度利用集群资源(通常是在小型公司,集群资源紧张的情况),也可以考虑用 Storm。
  • 如果一个大数据应用系统,它就是纯粹的实时计算,不需要在中间执行 SQL 交互式查询、复杂的 transformation 算子等,那么用 Storm 是比较好的选择。
  • 分布式 RPC 服务场景。

Kafka Stream 场景

输入源为 Kafka,轻量级 ETL 场景

Spark Streaming 场景

  • 不要求纯实时,不要求强大可靠的事务机制,不需要动态调整并行度,那么可以考虑使用 Spark Streaming。

  • 如果一个项目除了实时计算之外,还包括了离线批处理、交互式查询等业务功能,而且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,那么可以选择 Spark 生态,用 Spark Core 开发离线批处理,用 Spark SQL 开发交互式查询,用 Spark Streaming 开发实时计算,三者可以无缝整合,给系统提供非常高的可扩展性。

  • 吞吐量很大,海量数据场景。

注意

同时建议大数据场景下,使用混合架构可以更好的满足各种业务需求。

在使用过程中如果遇到问题可以通过 提交工单 来获取帮助。

这篇文档解决了您的问题吗?
0
0