在Flink,全球各州有多个工人吗?

时间:2018-01-31 08:48:10

标签: apache-flink

在Flink文档中的任何地方,我都看到状态是地图功能和工人的个体。这在独立方法中似乎很强大,但如果Flink在群集中运行会怎么样? Flink可以处理全局状态,所有工作人员都可以添加数据并进行查询吗?

来自Flink关于州的文章:

  

对于此设置中的高吞吐量和低延迟,必须最小化任务之间的网络通信。在Flink中,流处理的网络通信仅发生在作业运算符图中的逻辑边缘(垂直),以便流数据可以从上游传输到下游运营商。

     

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

1 个答案:

答案 0 :(得分:2)

我认为Flink只支持state on operatorsstate on Keyed streams,如果你需要某种全局状态,你必须将数据存储和恢复到某种数据库/文件系统/共享内存中并混合您的信息流中的数据。

无论如何,在我的经验中,通过良好的处理流程设计和以正确的方式划分数据,在大多数情况下,您应该能够应用分而治之的算法或MapReduce策略来存档您的需求

如果你在你的系统中引入某种全球状态,那么全球状态可能是一个很大的瓶颈。所以尽量避免它。