对比Flink、Storm、Spark Streaming 的反压机制

分析&回答

Flink 如何处理反压?

Storm 反压机制

Storm反压机制

Storm 在每一个 Bolt 都会有一个监测反压的线程(Backpressure Thread),这个线程一但检测到 Bolt 里的接收队列(recv queue)出现了严重阻塞就会把这个情况写到 ZooKeeper 里,ZooKeeper 会一直被 Spout 监听,监听到有反压的情况就会停止发送。因此,通过这样的方式匹配上下游的发送接收速率。

Storm 提供的最基本的处理 stream 的原语是 spout 和 bolt。

spout 是流的源头。 通常 spout 从外部数据源(队列、数据库等)读取数据,然后封装成Tuple形式,之后发送到Stream中。

bolt 处理输入的Stream,并产生新的输出Stream。bolt 可以执行Filter、Map、Join等操作。bolt 是一个被动的 角色,其接口中有一个execute(Tuple input)方法,在接收到消息之后会调用此函数,用户可以在此方法中执行自己的处理逻辑。

Spark Streaming 反压机制

Spark streaming反压机制

组件 RateController 监听负责监听"OnBatchCompleted"事件,然后从中抽取processingDelay 及schedulingDelay信息。RateEstimator 依据这些信息估算出最大处理速度(rate),最后由基于Receiver的Input Stream 将 rate 转发给 Executor 的 BlockGenerator,并更新RateLimiter

对比Flink、Storm、Spark Streaming 的反压机制

Flink、Storm、Spark Streaming 的反压机制都采用动态反馈/自动反压原理,可以动态反映节点限流情况,进而实现自动的动态反压。

Flink、Storm、Spark Streaming 反压机制的区别

Flink 是天然的流处理引擎,数据传输的过程相当于提供了反压,类似管道里的水(下游流动慢自然导致下游也慢),所以不需要一种特殊的机制来处理反压。

Storm 利用 Zookeeper 组件和流量监控的线程实现反压机制 ,其中存在的问题有实现复杂、bolt 接收队列暴涨导致OOM、反压慢

Spark Streaming 是微批处理,可以根据前一批次数据的处理情况,动态、自动的调整后续数据的摄入量 ,其中存在的问题有实现复杂、时效性较差。

喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 喵呜面试助手 或关注 喵呜刷题 -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

相关推荐
starzy19901 小时前
Flink高级之Pattern API代码实现:序列语义、循环约束与匹配策略
大数据·flink
Q26433650232 小时前
【有源码】基于机器学习的商场商铺运营分群与可视化分析研究 基于Spark的商场商铺经营效率分析与可视化
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·毕业设计
木圭的AI时代指南14 小时前
Spark-X2.5 长输入 Agent 实测:全量读取陷阱与解释器寻找死循环复盘,附可复现任务
大数据·分布式·spark
starzy199017 小时前
Flink高级之CEP深度剖析:Pattern API、NFA引擎与风控实战
大数据·flink
用户36105886261221 小时前
Flink高级之函数类深度剖析:生命周期、状态访问与定时器全解析
大数据·flink
Q26433650231 天前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
Q26433650231 天前
【有源码】基于 Hadoop 的强化学习智能体轨迹数据挖掘与可视化分析系统大数据毕设项目
大数据·hadoop·机器学习·数据挖掘·spark·课程设计·数据可视化
starzy19901 天前
Flink TimeWindow 详解及代码实现:从三种时间语义到滚动与滑动窗口
java·服务器·flink
Q26433650231 天前
【有源码】基于大数据的药品多维度属性分析可视化系统 基于Spark的药品属性聚类与关联规则可视化分析系统
hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计·大数据项目
clz13145211 天前
风险特征平台架构设计与实现
java·flink