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


    分析&回答

    Flink 反压机制

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

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

  • 相关阅读:
    Django之序列化类的使用、form表单上传文件、其它request方法、CBV的写法
    笔记整理(安全)
    掌握Capture One 23 Pro,打造专业级图片编辑体验!
    Linux虚拟网络设备—Veth Pair
    Python3 基础语法
    中外人工智能专家共话大语言模型与 AI 创新
    计算机组成原理学习的目的是什么
    Redis Lua沙盒绕过命令执行(CVE-2022-0543)
    信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(十):有损传输线在时域中的表现
    SpringBoot 11 模板布局和员工功能的实现
  • 原文地址:https://blog.csdn.net/jjclove/article/details/127406648