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

在Flink,是否可能有多个工人的全球国家?

茹轩昂
2023-03-14

在Flink文档中的任何地方,我都看到一个状态对map函数和工作人员来说都是单独的。这在独立方法中似乎很强大,但是如果Flink在集群中运行呢?Flink可以处理所有工作人员都可以添加数据并查询它的全局状态吗?

来自Flink关于国家的文章:

为了在此设置中实现高吞吐量和低延迟,必须最小化任务之间的网络通信。在Flink中,流处理的网络通信仅沿作业操作符图中的逻辑边(垂直)进行,因此流数据可以从上游操作符传输到下游操作符。

但是,操作符的并行实例之间没有通信(水平)。为了避免这种网络通信,数据局部性是Flink中的一个关键原则,并强烈影响状态的存储和访问方式。

共有1个答案

秦经义
2023-03-14

我认为Flink只支持操作符上的状态和键控流上的状态,如果需要某种全局状态,则必须将数据存储并恢复到某种数据库/文件系统/共享内存中,然后将这些数据与流混合。

无论如何,根据我的经验,通过良好的处理管道设计和以正确的方式对数据进行分区,在大多数情况下,您应该能够应用分而治之算法或MapReduce策略来存档您的需要

如果在系统中引入某种全局状态,那么这种全局状态可能会成为一个巨大的瓶颈。所以要不惜一切代价避免它。

 类似资料:
  • 我的问题是,如果我们有两个原始事件流,即烟雾和温度,并且我们想通过将运算符应用于原始流来找出复杂事件(即火灾)是否发生,我们可以在Flink中做到这一点吗? 我问这个问题是因为到目前为止,我所看到的Flink CEP的所有示例都只包括一个输入流。如果我错了,请纠正我。

  • 愣了好一会,陈董才很美国式地摊摊手说:“其实今天我是带了条件来的,之前我们已经开了董事会,给出了一个我认为非常优厚的条件,但既然你第一句话就这么说了,我觉得后面的都没意义了。” 绝影笑一笑:“我不知道是什么条件,当然现在告诉我也没什么意义。我只是想做一件我想做的事情。陈董,希望你能理解我。三年了,说心里话,只要我在公司,有什么事情我总是先想到公司。这次,我想为我自己想想,做一件我想做的事。” 陈董

  • 几天来,我一直在探索Apache Flink,我对任务槽的概念有些怀疑。虽然有人问了几个问题,但有一点我不明白。 我正在使用一个toy应用程序进行测试,运行一个本地集群。我已禁用操作员链接 我从文档中知道插槽允许内存隔离而不是CPU隔离。阅读文档,任务槽似乎是一个Java线程。 1)当我以并行度=1部署我的应用程序时,所有运算符的子任务都部署在同一个插槽中。但是,如果我从的方法打印当前线程ID,我

  • 因此,我可以像为TCP套接字一样为每个客户端创建一个不同的UDP套接字吗? 注意:如果可能,请使用类来解释,而不是类。 代码说明:我以为建立TCP连接(Connect/Accept)后可以在两边(客户机/服务器)绑定一个UDP套接字。对于服务器上只有一个客户机是很好的。对于新客户机,server会引发异常,因为它无法将多个套接字与一个localEndPoint绑定在一起。和客户端可以超过所有可用端

  • 我在Ubuntu 18.04上使用GraphDB 9.4免费版和Workbench web界面。 我有一个构造sparql查询,它在查询框下方的输出中显示所有正确的三元组,包括文本。当我点击“视觉”按钮显示图形时,文字和相关数据属性不会显示。有显示它们的设置吗? 谢谢!

  • 我使用键控进程函数来使用RocksDB状态后端。我想为同一把钥匙持有两种不同的状态; 状态1类型:ValueState[字符串] 状态2类型:MapState[String, Long] 在这种情况下,我必须在同一个键控进程函数中创建两个状态描述符。这在flink中可能吗?