我有一个特定的监控系统,每个受监控的服务器上都有数千个本地保存的文件(没有HDFS)。我想用flink来查询这些文件。如果我在每台机器上创建一个工作节点并且它们查询特定文件,主节点将如何知道将此任务发送到相关文件所在的节点?我推荐的一个方法是最小化网络流量并避免在节点之间移动数据。有没有办法以某种方式“暗示”它?
我不确定你的意思是“......使用Flink来查询文件”。您可以创建一个自定义SourceFunction,它知道如何从本地文件读取,然后使用Flink解析/处理本地文件,并通过可查询状态公开结果。如果此流中没有分区,则所有这些链式运算符将在任务管理器上的相同插槽中运行,从而最小化网络流量。
您希望将SourceFunction的并行度设置为等于节点数(以及任务管理器的数量)。但是你仍然需要确保Flink不会在同一个任务管理器上运行两个相同的SourceFunction,因此在相同的节点上运行,这对你不起作用。
通常,Flink不会为精确放置任务提供太多支持。我认为如果你将taskmanager.numberOfTaskSlots设置为1,那么这可能会迫使它为每个任务管理器部署一个单独的SourceFunction(以及跟随它的链式运算符),但是你必须尝试一下。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。