Flink,Storm,SparkStreaming性能对比

简介: Flink,Storm,SparkStreaming性能对比

Yahoo 的 Storm 团队曾发表了一篇博客文章 ,并在其中展示了 Storm、Flink 和 Spark Streaming 的性能测试结果。该测试对于业界而言极 具价值,因为它是流处理领域的第一个基于真实应用程序的基准测试。

image.png

该应用程序从 Kafka 消费广告曝光消息,从 Redis 查找每个广告对应的广 告宣传活动,并按照广告宣传活动分组,以 10 秒为窗口计算广告浏览量。10 秒窗口的最终结果被存储在 Redis 中,这些窗口的状态也按照每秒记录 一次的频率被写入 Redis,以方便用户对它们进行实时查询。

在最初的性能 测评中,因为 Storm 是无状态流处理器(即它不能定义和维护状态),所以 Flink 作业也按照无状态模式编写。所有状态都被存储在 Redis 中。

image.png

在性能测评中,Spark Streaming 遇到了吞吐量和延迟性难 两全的问题。随着批处理作业规模的增加,延迟升高。如果为了降低延迟而缩减规模,吞吐量就会减少。Storm 和 Flink 则可以在吞吐量增加时维持低延迟。

image.png

为了进一步测试 Flink 的性能,测试人员设置了一系列不同的场景,并逐步测试。

最初的性能测评专注于在相对较低的吞吐量下,测量端到端的延迟,即 使在极限状态下,也不关注容错性。此外,应用程序中的 key 基数非常小 (100),这使得测试结果无法反映用户量大的情况,或者 key 空间随着时间增长的情况.

由于最初的测试结果显示 Spark Streaming 的性能欠佳,因此这次的测试对 象只有 Storm 和 Flink,它们在最初的测试中有着类似的表现。

第 1 个变化是利用 Flink 提供的状态容错特性重新实现应用程序,如图 5-15 所示。这使得应用程序能保证 exactly-once。

第 2 个变化是通过用每秒可以生成数百万事件的数据生成器来增加输入流 的数据量。

结果如下:

image.png

使用高吞吐数据生成器的结果:(A)当Storm 与 Kafka 一起使用时,应用程序可以保持每秒 40 万事件的处理速度,并且瓶颈在于 CPU;当 Flink 与 Kafka 一起使用时,应用程序可以保持每秒300 万事件的处理速度,并且瓶颈在于网络;

(B)当消除网络瓶颈时,Flink 应用程序可以保持每秒1500 万事件的处理速度;

(C)在额外的测试中,消息队列由MapR Streams 提供,并且采用10 个高性能网络节点(硬件与前两种情况中的不同);Flink 应用程序可以保持每秒1000 万事件的处理速度.

Storm 能够承受每秒 40 万事件,但受限于 CPU;Flink 则可以达到每秒 300 万事件(7.5 倍),但受限于 Kafka 集群和 Flink 集群之间的网络。

为了看看在没有网络瓶颈问题时 Flink 的性能如何,我们将数据生成器移到 Flink 应用程序的内部。在这样的条件下,Flink 可以保持每秒 1500 万事件的处理速度(这是 Storm 的 37.5 倍)

image.png

将数据生成器整合到 Flink 应用程序中,可以测试性能极限,但这种 做法并不现实,因为现实世界中的数据必须从应用程序的外部流入。

值得注意的是,这绝对不是 Kafka 的极限(Kafka 可以支撑比这更大的吞吐量),而仅仅是测试所用的硬件环境的极限——Kafka 集群和 Flink 集群 之间的网络连接太慢。

最后一个变化是增加 key 基数(广告宣传活动的数量)。在最初的测试中, key 基数只有 100。这些 key 每秒都会被写入 Redis,以供查询。当 key 基数 增加到 100 万时,系统的整体吞吐量减少到每秒 28 万事件,因为向 Redis写入成了系统瓶颈。使用 Flink 可查询状态的一个早期原型可以消除这种瓶颈,使系统的处理速度恢复到每秒 1500 万事件,并 且有 100 万个 key 可供查询.

image.png

通过将查询功能移入Flink 可查询状态的一个原型,系统甚至可以在key 基数非常大的情况下仍然维持每秒 1500 万事件的处理速度.

image.png

本例说明了什么呢?通过避免流处理瓶颈,同时利用 Flink 的有状态流处理 能力,可以使吞吐量达到Storm 的 30 倍左右,同时还能保证exactly-once 和高可用性。大致来说,这意味着与 Storm 相比,Flink 的硬件成本或云计算成本仅为前者的 1/30,同样的硬件能处理的数据量则是前者的 30 倍。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
分布式计算 Hadoop 大数据
一口气说完MR、Storm、Spark、SparkStreaming和Flink
一口气说完MR、Storm、Spark、SparkStreaming和Flink
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
263 0
|
消息中间件 大数据 Kafka
"Apache Flink:重塑大数据实时处理新纪元,卓越性能与灵活性的实时数据流处理王者"
【8月更文挑战第10天】Apache Flink以卓越性能和高度灵活性在大数据实时处理领域崭露头角。它打破批处理与流处理的传统界限,采用统一模型处理有界和无界数据流,提升了开发效率和系统灵活性。Flink支持毫秒级低延迟处理,通过时间窗口、状态管理和自动并行化等关键技术确保高性能与可靠性。示例代码展示了如何使用Flink从Kafka读取实时数据并进行处理,简明扼要地呈现了Flink的强大能力。随着技术进步,Flink将在更多场景中提供高效可靠的解决方案,持续引领大数据实时处理的发展趋势。
295 7
|
运维 监控 Java
面经:Storm实时计算框架原理与应用场景
【4月更文挑战第11天】本文是关于Apache Storm实时流处理框架的面试攻略和核心原理解析。文章分享了面试常见主题,包括Storm的架构与核心概念(如Spout、Bolt、Topology、Tuple和Ack机制),编程模型与API,部署与运维,以及应用场景与最佳实践。通过代码示例展示了如何构建一个简单的WordCountTopology,强调理解和运用Storm的关键知识点对于面试和实际工作的重要性。
885 4
面经:Storm实时计算框架原理与应用场景
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之性能下降是什么原因导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
数据处理 数据库 流计算
Flink-CDC 的性能与许多因素有关
【1月更文挑战第23天】【1月更文挑战第114篇】Flink-CDC 的性能与许多因素有关
319 6
|
监控 API 数据处理
Flink web ui不仅仅是一个监控指标性能的网站
Flink web ui不仅仅是一个监控指标性能的网站
650 3
|
Cloud Native 大数据 Java
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(1)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(1)
256 0
|
缓存 监控 Cloud Native
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(2)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(2)
241 0
|
分布式计算 Cloud Native 大数据
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(3)
带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(3)
180 0