Flink的状态是否支持任务间共享

这篇具有很好参考价值的文章主要介绍了Flink的状态是否支持任务间共享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

在日常编写代码的过程中,我们经常会在方法内部new很多的其他类对象来进行编码工作,那么对于这种情况怎么让new出来的对象是一个我们特意创建出来的一个mock实例,从而让我们能完全控制new出来的对象的所有行为呢?本文就来讲解下如何在powermock中mock类的构造函数。

原理追踪:

首先对于flink来说,对于算子的每个并行任务,每个任务也就是每个task都有存储有一份自己的状态,也就是Flink的状态是基于task的本地存储的,是保存在本地内存中的一份数据,同一个算子的多个并行task之间是没有跨 task 通讯。

其实对于下游的算子来说,收到广播元素的顺序有可能是不一样的,如下图所示:下游算子任务1收到元素的顺序是先A后B,而下游算子任务2收到元素的顺序是先B后A,
Flink的状态是否支持任务间共享,flink,flink,大数据

敏感的你是不是意识到了什么?是不是意味着有一个时刻,下游算子任务1的广播状态包含A,而下游算子任务2的广播状态包含的是B,这两个并行算子的广播状态是不一致?顺着推理假设此时有其他非广播流的元素关联广播状态,意味着有可能在算子任务1上得到的结果和算子任务2上得到的结果是不一样的?进一步引申,如果故障恢复后,下一次运行时,下游算子任务1和下游算子任务2都先收到A,假设此时同样是非广播流过来connect,是不是就会导致此时得到的结果和之前故障前那一次运行得到的结果是不一致的?也就是意味这个结果不具有确定性!!

最后,你一定好奇,那广播状态保证的语义是什么?答案是最终一致性,还是用上面的图作为例子,当保存到checkpoint检查点时,算子任务1和算子任务2肯定都收到了A和B两个元素,只是一个顺序是AB,一个顺序是BA,但是他们再不理会顺序的前提下保存到checkpoint保存点的内容是一样的。所以当从故障中恢复时,他能保证每个并行算子任务的广播状态的一致性.

总结:

算子的并行task之间是没有跨task通信的,所以所有的状态都是存放在本地机器的本地内存中,是单机级别的,他们能实现所谓的广播状态号称多个并行task之间状态一致性的前提是他们只保证最终一致性,也就是通过map的实现,他们保证元素在不区分到达顺序的情况下多个算子任务的状态是可以保持最终一致的.文章来源地址https://www.toymoban.com/news/detail-534323.html

到了这里,关于Flink的状态是否支持任务间共享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据-玩转数据-Flink状态后端(下)

    每传入一条数据,有状态的算子任务都会读取和更新状态。由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务(子任务)都会在本地维护其状态,以确保快速的状态访问。 状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(

    2024年02月09日
    浏览(44)
  • 4.3、Flink任务怎样读取Kafka中的数据

    目录 1、添加pom依赖 2、API使用说明 3、这是一个完整的入门案例 4、Kafka消息应该如何解析 4.1、只获取Kafka消息的value部分 ​4.2、获取完整Kafka消息(key、value、Metadata) 4.3、自定义Kafka消息解析器 5、起始消费位点应该如何设置 ​5.1、earliest() 5.2、latest() 5.3、timestamp() 6、Kafka分区

    2024年02月13日
    浏览(41)
  • 4.2、Flink任务怎样读取文件中的数据

    目录 1、前言 2、readTextFile(已过时,不推荐使用) 3、readFile(已过时,不推荐使用) 4、fromSource(FileSource) 推荐使用 思考: 读取文件时可以设置哪些规则呢?          1. 文件的格式(txt、csv、二进制...)                  2. 文件的分隔符(按n 分割)          3. 是否需

    2024年02月13日
    浏览(39)
  • 4.1、Flink任务怎样读取集合中的数据

    非并行数据源:         def fromElements [T: TypeInformation](data: T*): DataStream[T]         def fromCollection [T: TypeInformation](data: Seq[T]): DataStream[T]          def fromCollection [T: TypeInformation] (data: Iterator[T]): DataStream[T]  并行数据源:         def fromParallelCollection [T: TypeInformation] (dat

    2024年02月13日
    浏览(43)
  • flink如何利用checkpoint保证数据状态一致性

    这本质上是一『尽力而为』的方法。保证数据或事件最多由应用程序中的所有算子处理一次。 这意味着如果数据在被流应用程序完全处理之前发生丢失,则不会进行其他重试或者重新发送。下图中的例子说明了这种情况。 应用程序中的所有算子都保证数据或事件至少被处理

    2024年02月21日
    浏览(49)
  • flink state原理,TTL,状态后端,数据倾斜一文全

    拿五个字做比喻:“铁锅炖大鹅”,铁锅是状态后端,大鹅是状态,Checkpoint 是炖的动作。 状态 :本质来说就是数据,在 Flink 中,其实就是 Flink 提供给用户的状态编程接口。比如 flink 中的 MapState,ValueState,ListState。 状态后端 :Flink 提供的用于管理状态的组件,状态后端决

    2024年02月22日
    浏览(49)
  • Flink系列之:使用Flink CDC从数据库采集数据,设置checkpoint支持数据采集中断恢复,保证数据不丢失

    博主相关技术博客: Flink系列之:Debezium采集Mysql数据库表数据到Kafka Topic,同步kafka topic数据到StarRocks数据库 Flink系列之:使用Flink Mysql CDC基于Flink SQL同步mysql数据到StarRocks数据库

    2024年02月11日
    浏览(71)
  • Idea本地跑flink任务时,总是重复消费kafka的数据(kafka->mysql)

    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Idea中执行任务时,没法看到JobManager的错误,以至于我以为是什么特殊的原因导致任务总是反复消费。在close方法中,增加日志,发现jdbc连接被关闭了。 重新消费,jdbc连接又启动了。 注意,在Flink的函数中,open和close方法

    2024年02月07日
    浏览(37)
  • 数睿通2.0功能更新:支持多版本 Flink 切换,新增数据标签模块

    小伙伴们,大家好,数睿通 2.0 数据中台迎来了 12 月份的更新,由于年底工作繁忙,所以本次更新内容稍微少了点,还望理解,本次更新内容主要包括: 数据开发多版本 Flink 支持,执行任务的时候可以动态切换 Flink 版本,目前支持的版本有 1.14 和 1.16 新增数据标签模块,包

    2024年02月01日
    浏览(42)
  • 二次开发Flink-coGroup算子支持迟到数据通过测输出流提取

    目录 1.背景 2.coGroup算子源码分析 2.1完整的coGroup算子调用流程 2.2coGroup方法入口 2.3 CoGroupedStreams对象分析 2.4WithWindow内部类分析 2.5CoGroupWindowFunction函数分析 3.修改源码支持获取迟到数据测输出流 3.1复制CoGroupedStreams 3.2新增WithWindow.sideOutputLateData方法 3.3新增WithWindow构造方法 3

    2024年04月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包