为什么需要flink(Storm,Spark,Flink对比)

2025-11-28 20:15:01 :0

为什么需要flink(Storm,Spark,Flink对比)

这篇文章给大家聊聊关于为什么需要flink,以及Storm,Spark,Flink对比对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

Storm,Spark,Flink对比

一、容错性(Fault Tolerance)

spark依赖checkpoint机制来进行容错,只要batch执行到doCheckpoint操作前挂了,那么该batch就会被完整的重新计算。spark可以保证计算过程的exactly once(不包含sink的exactly once)。

storm的容错通过ack机制实现,每个bolt或spout处理完成一条data后会发送一条ack消息给acker bolt。当该条data被所有节点都处理过后,它会收到来自所有节点ack, 这样一条data处理就是成功的。storm可以保证数据不丢失,但是只能达到at least once语义。此外,因为需要每条data都做ack,所以容错的开销很大。storm trident是基于micro¬batched实现了exactly once语义。

flink使用Chandy-Chandy-Lamport Algorithm 来做Asynchronous Distributed Snapshots(异步分布式快照),其本质也是checkpoint。如下图,flink定时往流里插入一个barrier(隔栏),这些barriers把数据分割成若干个小的部分,当barrier流到某个operator时,operator立即会对barrier对应的一小部分数据做checkpoint并且把barrier传给下游(checkpoint操作是异步的,并不会打断数据的处理),直到所有的sink operator做完自己checkpoint后,一个完整的checkpoint才算完成。当出现failure时,flink会从最新完整的checkpoint点开始恢复。

flink的checkpoint机制非常轻量,barrier不会打断streaming的流动,而且做checkpoint操作也是异步的。其次,相比storm需要ack每条data,flink做的是small batch的checkpoint,容错的代价相对要低很多。最重要的是flink的checkpoint机制能保证exactly once。

二、吞吐量和延迟(Throughputs& Latency)

01 吞吐量(throughputs)

spark是mirco-batch级别的计算,各种优化做的也很好,它的throughputs是最大的。但是需要提一下,有状态计算(如updateStateByKey算子)需要通过额外的rdd来维护状态,导致开销较大,对吞吐量影响也较大。

storm的容错机制需要对每条data进行ack,因此容错开销对throughputs影响巨大,throughputs下降甚至可以达到70%。storm trident是基于micro-batch实现的,throughput中等。

flink的容错机制较为轻量,对throughputs影响较小,而且拥有图和调度上的一些优化机制,使得flink可以达到很高 throughputs。

下图是flink官网给出的storm和flink的benchmark,我们可以看出storm在打开ack容错机制后,throughputs下降非常明显。而flink在开启checkpoint和关闭的情况下throughputs变化不大,说明flink的容错机制确实代价不高。对比官网的benchmark,我们也进行了throughputs的测试,实测结果是flink throughputs是storm的3.5倍,而且在解除了kafka集群和flink集群的带宽瓶颈后,flink自身又提高了1.6倍。

02 延迟(latency)

spark基于micro-batch实现,提高了throughputs,但是付出了latency的代价。一般spark的latency是秒级别的。

storm是native streaming实现,可以轻松的达到几十毫秒级别的latency,在几款框架中它的latency是最低的。storm trident是基于micro-batch实现的,latency较高。

flink也是native streaming实现,也可以达到百毫秒级别的latency。

下图是flink官网给出的和storm的latency对比benchmark。storm可以达到平均5毫秒以内的latency,而flink的平均latency也在30毫秒以内。两者的99%的data都在55毫秒latency内处理完成,表现都很优秀。

三、 总 结

综合对比spark、storm和flink的功能、容错和性能(总结如下图)

flink 并行度

Flink 作为一套分布式执行框架,计算资源可以不断的扩展。
不同的任务类型,可以控制需要的计算资源。在flink整个runtime的模型中
并行度是一个很重要的概念,通过设置并行度可以为认为分配合理的计算资源,
做到资源的合理配置。

整个flink的架构简单的说是 中心控制(jobManager)+ 多点分布执行(taskManager)
弹性的资源分配主要来自于taskManager的有效管理和配置。

在启动flink 之前,在核心的配置文件里面,需要指定两个参数。
taskmanager.numberOfTaskSlots 和 parallelism.default。

首先需要明白slot的概念。对于 taskManager,他其实是一个 JVM 程序。
这个JVM 可以同时执行多个task,每个task 需要使用本机的硬件资源。
slot 的属于 jvm 管理的 一些列资源卡槽。 每个slot 只能执行一个task。
每个slot分配有固定的内存资源,但是不做cpu的隔离。 JVM管理一个 slot的pool,
用来执行相应的task。taskmanager.numberOfTaskSlots = 10,则理论上可以同时执行10个子任务。

那么对于1个5节点,numberOfTaskSlots= 6的集群来说,那么就有30个slot可以使用。
对于具体的一个job来说,他会贪婪的使用所有的 slot吗?
使用多少slot 是由parallelism.default 决定的。如果是 5, 那么对于一个job 他最多同时使用5个slot。
这个配置对于多job平台的集群是很有必要的。

那么给定一个stream api 编写的flink 程序,被分解的task是否和map 到slot 上执行的呢?
flink 有几个经典的graph, stream-api对应的stream_graph-》 job_graph-》execution_graph-》物理执行图。
execution_graph 基本就决定了如何分布执行。
我们知道一个 stream-api, 主要有 source, operate, sink 这几部分。那么我们可以从source开始看 并行的控制。

source 有并行source和 非并行。我们主要看并行,想类似与kafka 这种生成消费者模式的数据源,能够 并行消费source是非常重要的。
所以可以看到kafka,FlinkKafkaConsumerBase《T》 extends RichParallelSourceFunction《T》,可以充分利用并行度,大大提高吞吐量。
对应到具体的物理执行上,就是多个 source task 任务执行,他们属于一个kafka group同时消费 不同的partition。
对于parallelSource,默认使用cpu 核心做并行度。我们可以通过api进行设置。

接下来是 operate,每个operate都可以设置parallel,如果没有设置将会使用其他层次的设置,比如env,flink.conf中的配置,parallelism.default。
比如 source. map1().map2().grouby(key).sink()
这样一个程序,默认,source和 map1,map2有同样的parallel,上游的output 可以直接one-one forwarding.
在flink 的 优化中,甚至可以把这些 one-one 的operate 合成一个,避免转发,线程切换,网络通信开销。
对于groupby 这样的算子,则属于另外的一类。上游的output 需要 partion 到下游的不同的节点,而不能做位一个chain。

由于operate可以设置独自的parallel,如果与上游不一致。上游的output必然需要某种partion策略来 rebalnce数据。kafka有很多策略来处理这个细节。
对于partion放在专门的章节来说明。
对于sink,则可以理解位一个特定的operate,目前看没什么特殊处理逻辑。

如果你还想了解更多这方面的信息,记得收藏关注本站。

为什么需要flink(Storm,Spark,Flink对比)

本文编辑:admin

更多文章:


五步蛇颜色有几种(陕西汉中常见的蛇)

五步蛇颜色有几种(陕西汉中常见的蛇)

大家好,五步蛇颜色有几种相信很多的网友都不是很明白,包括陕西汉中常见的蛇也是一样,不过没有关系,接下来就来为大家分享关于五步蛇颜色有几种和陕西汉中常见的蛇的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录陕西汉中常

2026年1月7日 12:45

汽车仪表盘 source(我的汽车仪表盘上有几个键是啥意思啊mirror auto main sourcepower band menu title ipod mode mute fun)

汽车仪表盘 source(我的汽车仪表盘上有几个键是啥意思啊mirror auto main sourcepower band menu title ipod mode mute fun)

大家好,汽车仪表盘 source相信很多的网友都不是很明白,包括我的汽车仪表盘上有几个键是啥意思啊mirror auto main sourcepower band menu title ipod mode mute fun也是一样,不过没

2025年12月25日 03:30

imagination固定搭配(请问,是“imagine sb. to do sth. ”还是“imagine sb. doing sth.”)

imagination固定搭配(请问,是“imagine sb. to do sth. ”还是“imagine sb. doing sth.”)

今天给各位分享请问,是“imagine sb. to do sth. ”还是“imagine sb. doing sth.”的知识,其中也会对请问,是“imagine sb. to do sth. ”还是“imagine sb. doing

2026年4月18日 14:00

java外包用的比较多技术(java后端程序员最常用的技术有哪些,重点技术有哪些)

java外包用的比较多技术(java后端程序员最常用的技术有哪些,重点技术有哪些)

“java外包用的比较多技术”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看java外包用的比较多技术(java后端程序员最常用的技术有哪些,重点技术有哪些)!本文目录java后端程序员最常用的技术有哪些,重点技术有哪些中国

2026年5月22日 18:30

clip converter(用ClipConverter下载的youku视频在电脑哪个文件夹)

clip converter(用ClipConverter下载的youku视频在电脑哪个文件夹)

其实clip converter的问题并不复杂,但是又很多的朋友都不太了解用ClipConverter下载的youku视频在电脑哪个文件夹,因此呢,今天小编就来为大家分享clip converter的一些知识,希望可以帮助到大家,下面我们一

2026年8月24日 21:15

chmod修改权限(ubuntu linux下使用 chmod 修改文件权限,命令后提示【缺少操作数】,求解决方法)

chmod修改权限(ubuntu linux下使用 chmod 修改文件权限,命令后提示【缺少操作数】,求解决方法)

各位老铁们,大家好,今天由我来为大家分享chmod修改权限,以及ubuntu linux下使用 chmod 修改文件权限,命令后提示【缺少操作数】,求解决方法的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支

2025年8月3日 09:30

neighborhood在哪买(香港潮牌店铺推荐去香港买什么好)

neighborhood在哪买(香港潮牌店铺推荐去香港买什么好)

大家好,今天小编来为大家解答以下的问题,关于neighborhood在哪买,香港潮牌店铺推荐去香港买什么好这个很多人还不知道,现在让我们一起来看看吧!本文目录香港潮牌店铺推荐去香港买什么好香港街头小店推荐去香港买什么香港潮牌店铺推荐去香港买

2026年6月6日 23:00

数据架构师一般在哪个部门?架构师需要掌握哪些知识

数据架构师一般在哪个部门?架构师需要掌握哪些知识

今天给各位分享数据架构师一般在哪个部门的知识,其中也会对数据架构师一般在哪个部门进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录数据架构师一般在哪个部门架构师需要掌握哪些知识上海银行总行应用架构师怎么样数据架构

2025年8月10日 01:15

richtextbox用法(怎样使用C#的RichTextBox控件)

richtextbox用法(怎样使用C#的RichTextBox控件)

这篇文章给大家聊聊关于richtextbox用法,以及怎样使用C#的RichTextBox控件对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录怎样使用C#的RichTextBox控件C# richtextboxRichText

2026年2月13日 20:45

程序设计基础8473试卷(初级程序员考试内容)

程序设计基础8473试卷(初级程序员考试内容)

这篇文章给大家聊聊关于程序设计基础8473试卷,以及初级程序员考试内容对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录初级程序员考试内容软考程序员基础知识考什么全国计算机二级大约考多少分能过c语言,程序设计题,如图c++程序设

2025年10月5日 12:15

js replace 正则表达式(求一个js正则表达式:替换html内容中除了标签外的特定字符为另外一个字符.)

js replace 正则表达式(求一个js正则表达式:替换html内容中除了标签外的特定字符为另外一个字符.)

各位老铁们好,相信很多人对js replace 正则表达式都不是特别的了解,因此呢,今天就来为大家分享下关于js replace 正则表达式以及求一个js正则表达式:替换html内容中除了标签外的特定字符为另外一个字符.的问题知识,还望可以

2025年9月5日 03:00

rock什么意思中文意思(rock是什么意思 rock的中文翻译、读音、例句)

rock什么意思中文意思(rock是什么意思 rock的中文翻译、读音、例句)

其实rock什么意思中文意思的问题并不复杂,但是又很多的朋友都不太了解rock是什么意思 rock的中文翻译、读音、例句,因此呢,今天小编就来为大家分享rock什么意思中文意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析

2026年9月6日 10:30

衣香丽影同档次的品牌(太平鸟,伊芙丽,衣香丽影,红袖三彩哪家好)

衣香丽影同档次的品牌(太平鸟,伊芙丽,衣香丽影,红袖三彩哪家好)

这篇文章给大家聊聊关于衣香丽影同档次的品牌,以及太平鸟,伊芙丽,衣香丽影,红袖三彩哪家好对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录太平鸟,伊芙丽,衣香丽影,红袖三彩哪家好艾凸和衣香丽影哪个高档些和衣香丽影、秋水伊人、佳人

2026年8月15日 07:15

c语言打印输入所有数组(C语言中,如何正确打印字符串数组)

c语言打印输入所有数组(C语言中,如何正确打印字符串数组)

大家好,今天小编来为大家解答以下的问题,关于c语言打印输入所有数组,C语言中,如何正确打印字符串数组这个很多人还不知道,现在让我们一起来看看吧!本文目录C语言中,如何正确打印字符串数组C语言编程:通过指针变量来输入,输出数组的全部元素C语言

2026年8月24日 21:00

conduct现在进行时(bedoing表示将来吗)

conduct现在进行时(bedoing表示将来吗)

“conduct现在进行时”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看conduct现在进行时(bedoing表示将来吗)!本文目录bedoing表示将来吗learn to do和learn doing有什么区别bedo

2026年8月27日 18:15

视酷源代码买了有什么好处(谷歌浏览器的作用是什么)

视酷源代码买了有什么好处(谷歌浏览器的作用是什么)

今天给各位分享谷歌浏览器的作用是什么的知识,其中也会对谷歌浏览器的作用是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录谷歌浏览器的作用是什么买上市公司股票对上市公司有什么好处学习配音有哪些好处新股申购有啥

2025年12月16日 09:00

excel怎么用round保留一位小数(excel如何保留一位小数)

excel怎么用round保留一位小数(excel如何保留一位小数)

各位老铁们,大家好,今天由我来为大家分享excel怎么用round保留一位小数,以及excel如何保留一位小数的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2025年12月21日 16:45

动态进度条怎么做(ppt圆形百分比动态进度条怎么制作)

动态进度条怎么做(ppt圆形百分比动态进度条怎么制作)

各位老铁们,大家好,今天由我来为大家分享动态进度条怎么做,以及ppt圆形百分比动态进度条怎么制作的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录pp

2025年11月1日 13:45

leaflet love story下载(translate:I swear my love for you guys would remain^_^)

leaflet love story下载(translate:I swear my love for you guys would remain^_^)

今天给各位分享translate:I swear my love for you guys would remain^_^的知识,其中也会对translate:I swear my love for you guys would remai

2025年12月5日 00:00

c语言数组元素求和(c语言求数组元素的总和!求助各位大佬!)

c语言数组元素求和(c语言求数组元素的总和!求助各位大佬!)

各位老铁们,大家好,今天由我来为大家分享c语言数组元素求和,以及c语言求数组元素的总和!求助各位大佬!的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目

2025年9月7日 00:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索