当前位置: 首页 > 知识库问答 >
问题:

如何在我的闪光工作之间共享状态?

云和同
2023-03-14

我从我的. jar文件运行多个作业。我想在我的工作之间共享状态。但所有输入在每个工作中消耗(来自kafka)并生成重复输出。我看到我的闪烁面板。所有的工作“记录发送”是3。我认为必须将数字拆分到我的工作。

我使用此命令创建作业

bin/flink run app.jar

我怎样才能修复它?

共有1个答案

欧阳子石
2023-03-14

由于其对可扩展性和高性能的关注,Flink state是本地的。Flink并没有真正提供一种在作业之间共享状态的机制。

然而,Flink确实支持在一队工人中分配一份大工作。Flink集群能够使用一个或多个多核CPU的资源并行运行单个作业。一些Flink作业运行在数千个内核上,只是为了了解其可扩展性。

当与Kafka一起使用时,每个Kafka分区都可以由Flink中的不同子任务读取,并由其自己的管道并行实例处理。

您可以首先通过以下方式运行作业的单个并行实例

bin/flink运行--并行性

要使这项工作成功,您的集群必须至少具有与您请求的并行性相同的可用插槽数。并行度应小于或等于正在使用的Kafka主题中的分区数。Flink Kafka消费者将在他们之间进行协调,每个人都从一个或多个分区读取数据。

 类似资料:
  • 我在AWS中使用Terraform部署了一个基础设施。这个基础设施可以部署到不同的环境中,我使用的是工作区。 部署中的大多数组件应该为每个工作区分别创建,但我有几个关键组件希望在它们之间共享,主要是: IAM角色和权限 例如: 第一个资源是一个IAM角色,应该在该Lambda的所有实例中共享,并且不应该重新创建多次。 第二个资源是Lambda函数,其名称取决于当前工作区,因此每个工作区将部署并跟踪

  • 设置容器要使用的卷数组。可以使用卷在服务或作业中的其他步骤之间共享数据。可以在主机上指定命名Docker卷、匿名Docker卷或绑定挂载。 工作流程 第一个作业(build)有一个build目录,但当第二个作业(deploy)运行时,它没有,只包含源代码。 这个项目是一个mono repo,我试图部署的代码位于路径,因此所有标志。

  • 这个问题在这里已经被问到了,但是两年过去了,我想知道是否有什么改变。 我有一个用例,我希望在两个Flink操作符之间共享状态: > A流是主流,它连续流动 流B只是富集数据的数据集。它很大(几个GBs),因此不能作为广播流。 流B有一个与之相关联的运算符(FlatMap,但可以是任何实际的),它充当状态加载器,并将浓缩数据作为列表状态加载到RocksDB中。 null

  • 问题内容: 是否有个好方法可以在Gunicorn工人之间共享多处理锁?我正在尝试用Flask写一个json API。一些API调用将与管理正在运行的进程的python类交互(例如用于视频转换的ffmpeg)。当我将网络工作者的数量增加到超过1个时,如何确保只有1个工作者同时与班级互动? 我最初的想法是使用multiprocessing.Lock,以便start()函数可以是原子的。我认为我没有找到

  • 问题内容: 在不使用服务或在父控制器中构造观察器的情况下,如何使子状态访问主控制器的。 我无法在子状态下访问mainController范围-而是正在获取该范围的另一个实例- 不是我想要的。我觉得我缺少一些简单的东西。在状态对象中有一个共享的数据配置选项,但是我不确定是否应该将其用于这样的事情。 问题答案: 我创建了工作的插件,展示了如何使用和UI- Router。 状态定义未更改: 但是每个状态

  • 问题内容: 我有2个需要共享状态的React组件,react- router显示了组件A,该组件接受一些输入并将其添加到其状态,在状态成功更新后,我想重定向到组件B,用户在其中添加在我向我的api提交发布请求以保存来自组件A和B的数据之前,使用一些更多的输入并更新与组件A相同的状态以使用来自A和B的输入来构建对象。如何做到这一点,使用react- router的方式,还是我必须在组件之间设置父/子