工作节点 - 文件系统与 Apache Flink 的关联



我有一个特定的监控系统,每个受监控的服务器上都有数千个文件保存在本地(没有HDFS(。我想使用 flink 来查询这些文件。如果我在每台机器上创建一个工作节点,并且它们查询一个特定的文件,主节点如何知道将此任务发送到相关文件所在的节点?我的退休之一是尽量减少网络流量并避免在节点之间移动数据。有没有办法以某种方式"暗示"它?

我不确定你说的"...使用 Flink 查询文件"。你可以创建一个自定义的 SourceFunction,它知道如何从本地文件中读取,然后使用 Flink 解析/处理这些文件,并通过 Queryable State 公开结果。如果此流中没有分区,则所有这些链接运算符都将在任务管理器上的同一插槽中运行,从而最大程度地减少网络流量。

您需要将SourceFunction的并行度设置为等于节点数(从而等于任务管理器的数量(。但是你仍然需要确保 Flink 不会在同一个任务管理器上运行两个相同的 SourceFunction,从而在同一个节点上运行,这对你不起作用。

一般来说,Flink 并没有为任务的精确放置提供太多支持。我认为如果您将taskmanager.numberOfTaskSlots设置为1,那么这可能会迫使它为每个任务管理器部署一个单独的SourceFunction(以及其后面的链式运算符(,但您必须尝试一下。

问候

--眼界

最新更新