Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1

简介: Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1

文章目录


一、前言

二、什么是流式处理


三、流式处理的重点有哪些

3.1 交付保障

3.2 故障容错

3.3 状态管理

3.4 性能

3.5 成熟


四、流式处理的两种类型

4.1 Native流

4.2 小批量处理

4.3 两种类型都有一些优点和缺点


五、现有流处理框架介绍

5.1 Storm

5.2 Spark Streaming

5.3 Flink

5.4 Kafka Steams

5.5 Kafka Streams vs. Spark Streaming


六、流式框架比较


七、如何选择最好的/最适合的流失处理框架?

7.1 使用场景

7.2 未来的考虑

7.3 现有的技术堆栈


八、总结

8.1 延迟要求高

8.2 功能复杂度

8.3 现有技术堆栈

8.4 未来的考虑

Ref


一、前言


随着新设备,传感器和物联网技术的发展,数据增长率在不断加速,全世界的数据量都在井喷式的增长。


从技术上讲,这意味着我们通过大数据处理的手段将变得更加复杂和具有挑战性。许多用例(例如移动应用广告,欺诈检测,出租车预订,患者监控等)需要在数据到达时实时进行数据处理,以便做出快速可行的决策,这也就是分布式流处理在大数据世界中变得非常流行的原因。


目前我们所接触的比较流行的开源流式处理框架:Flink、Spark Streaming、Storm、Kafka Streams,接下来我会对以上几个框架的应用场景、优势、劣势、局限性一一做说明。


二、什么是流式处理


目前对信息高时效性、可操作性的需求不断增长,这要求软件系统在更少的时间内能处理更多的数据。传统的大数据处理模型将在线事务处理和离线分析从时序上将两者完全分割开来,但显然该架构目前已经越来越落后于人们对于大数据实时处理的需求。


实时计算的产生即来源于对于上述数据加工时效性的严苛需求。数据的业务价值随着时间的流失而迅速降低,因此在数据发生后必须尽快对其进行计算和处理。而传统的大数据处理模式对于数据加工均遵循传统日清日毕模式,即以小时甚至以天为计算周期对当前数据进行累计并处理,显然这类处理方式无法满足数据实时计算的需求。


在诸如实时大数据分析、风控预警、实时预测、金融交易等诸多业务场景领域,批量(或者说离线)处理对于上述对于数据处理时延要求苛刻的应用领域而言是完全无法胜任其业务需求的。而实时计算作为一类针对流数据的实时计算模型,可有效地缩短全链路数据流时延、实时化计算逻辑、平摊计算成本,最终有效满足实时处理大数据的业务需求。


三、流式处理的重点有哪些


为了理解任何 Streaming 框架的优点和局限性,我们应该注意与 Streams 处理相关的一些重要特征和术语:


3.1 交付保障


Atleast-once(即使在出现故障时也至少会被处理一次)


Atmost-once(在发生故障时可能不会被处理)


Exactly-once(即使出现故障,数据也将被处理一次且恰好一次)


从数据一致性的角度上看,完全一次是我们所希望的。但是在分布式系统中是比较难实现的,处于对性能以及数据安全一致性的考虑,都会从中权衡利弊作出响应的选择。


3.2 故障容错


分布式系统中,包含任务故障、节点故障、网络故障等,框架应该能够恢复,并且应该从它离线的位置再次开始处理,一般通过不时地检查流式传输到某个持久存储的状态来实现。


例如,在处理来自Kafka的数据时,检查点kafka在获得记录处理后会将offset存储到zookeeper。如果失败,请从检查点offset处重新开始。


3.3 状态管理


在状态处理要求的情况下,我们需要维护某些状态(例如记录中看到的每个不同单词的计数),框架应该能够提供一些机制来保存和更新状态信息。


3.4 性能


性能上我们考虑的有几个点:延迟、吞吐量和可伸缩性。理想的情况下,我们希望延迟尽可能小、吞吐量尽可能高,而实际上两者很难同时实现,只能努力做到两者之间的平衡。


高级功能(Event Time Processing, Watermarks, Windowing)


主要是应对复杂流处理的场景。


3.5 成熟


从企业技术应用的角度来看,这一点是非常重要的。记得起大公司的大规模验证和测试,框架的稳定性、可靠性也有一定的保障。成熟的框架,更有可能获得良好的社区支持和stackoverflow的帮助。


四、流式处理的两种类型


4.1 Native流


指每个传入的记录一到达就会被处理,而不必等待其他记录。


image.png


4.2 小批量处理


也称为快速批处理。这意味着每隔几秒就会将传入记录一起批处理,然后在一个小批量中处理,延迟几秒钟。


image.png


4.3 两种类型都有一些优点和缺点


Native流:每个记录在到达时都会被处理,从而允许框架实现最小的延迟。但这也意味着很难在不影响每个记录的吞吐量的情况下实现容错,我们需要在处理后跟踪和检查点。此外,状态管理很容易,因为有长时间运行的过程可以轻松地维持所需的状态。


微批处理:与Native流恰恰相反,容错是与生俱来的,因为它本质上是一个批处理,吞吐量也很高,因为处理和检查点将一次性完成一组记录。但它不像Native流一样,它有一定的延迟成本。此外,有效的状态管理也将是一项难以维持的挑战。

目录
相关文章
|
分布式计算 数据处理 Apache
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
1586 1
|
2月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
492 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
9月前
|
消息中间件 关系型数据库 MySQL
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
1014 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
973 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
10月前
|
消息中间件 关系型数据库 MySQL
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
本教程展示如何使用Flink CDC YAML快速构建从MySQL到Kafka的流式数据集成作业,涵盖整库同步和表结构变更同步。无需编写Java/Scala代码或安装IDE,所有操作在Flink CDC CLI中完成。首先准备Flink Standalone集群和Docker环境(包括MySQL、Kafka和Zookeeper),然后通过配置YAML文件提交任务,实现数据同步。教程还介绍了路由变更、写入多个分区、输出格式设置及上游表名到下游Topic的映射等功能,并提供详细的命令和示例。最后,包含环境清理步骤以确保资源释放。
817 2
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
|
SQL 流计算 关系型数据库
基于OpenLake的Flink+Paimon+EMR StarRocks流式湖仓分析
阿里云OpenLake解决方案建立在开放可控的OpenLake湖仓之上,提供大数据搜索与AI一体化服务。通过元数据管理平台DLF管理结构化、半结构化和非结构化数据,提供湖仓数据表和文件的安全访问及IO加速,并支持大数据、搜索和AI多引擎对接。本文为您介绍以Flink作为Openlake方案的核心计算引擎,通过流式数据湖仓Paimon(使用DLF 2.0存储)和EMR StarRocks搭建流式湖仓。
1112 5
基于OpenLake的Flink+Paimon+EMR StarRocks流式湖仓分析
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
369 1
|
SQL 分布式计算 数据处理
Structured Streaming和Flink实时计算框架的对比
本文对比了Structured Streaming和Flink两大流处理框架。Structured Streaming基于Spark SQL,具有良好的可扩展性和容错性,支持多种数据源和输出格式。Flink则以低延迟、高吞吐和一致性著称,适合毫秒级的流处理任务。文章详细分析了两者在编程模型、窗口操作、写入模式、时间语义、API和库、状态管理和生态系统等方面的优劣势。
|
分布式计算 流计算 Spark
【赵渝强老师】Spark Streaming中的DStream
本文介绍了Spark Streaming的核心概念DStream,即离散流。DStream通过时间间隔将连续的数据流转换为一系列不连续的RDD,再通过Transformation进行转换,实现流式数据的处理。文中以MyNetworkWordCount程序为例,展示了DStream生成RDD的过程,并附有视频讲解。
289 0
|
6月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
379 0

热门文章

最新文章