Apache flink 如何使用修改后的操作符放置强制Apache Flink?

Apache flink 如何使用修改后的操作符放置强制Apache Flink?,apache-flink,distributed-system,master-slave,stream-processing,Apache Flink,Distributed System,Master Slave,Stream Processing,ApacheFlink在JobManager(从机)上的可用空闲插槽上分发其操作符。如中所述,可以为执行中包含的每个运算符设置SlotSharingGroup。这意味着,两个操作符可以共享同一个插槽,稍后在该插槽中执行 不幸的是,此选项仅允许共享同一组,但不允许将流操作分配给特定插槽 因此,我的问题是:在Apache Flink中,手动将流媒体运营商分配给特定插槽/工作者的最佳(或至少一种)方法是什么?您可以通过(DisableChain())禁用链接,并启动一个新链,通过(startNewCh

ApacheFlink在JobManager(从机)上的可用空闲插槽上分发其操作符。如中所述,可以为执行中包含的每个运算符设置
SlotSharingGroup
。这意味着,两个操作符可以共享同一个插槽,稍后在该插槽中执行

不幸的是,此选项仅允许共享同一组,但不允许将流操作分配给特定插槽


因此,我的问题是:在Apache Flink中,手动将流媒体运营商分配给特定插槽/工作者的最佳(或至少一种)方法是什么?

您可以通过(
DisableChain()
)禁用链接,并启动一个新链,通过(
startNewChain()
)将其与其他链接隔离开来。您可以使用来查看您的计划是否有独立的运算符。这些修改器应用于操作符。例如:

  .map(...).startNewChain().slotSharingGroup("exceptional")
  // or
  .filter(...).startNewChain().slotSharingGroup("default")

你为什么要隔离它?好。。。在任何链的末尾,flink都会执行一个检查点(如果启用),并且应该确认检查点(持久化/序列化)。否则系统将回滚它并再次启动进程。对于这个Flink,需要事先确保它有足够的插槽。在您的情况下,有足够的
例外
插槽。否则,整个流将处于非活动状态。因此,您不能告诉flink,对于运算符x,您只需要使用插槽x,对于运算符Z,您只需要使用Y,因为对于flink,它只是一台计算机,可以为检查点(或直接为下一个运算符)生成中间结果。

这方面正在进行开发工作。具体请参见。我不知道这是否足以满足您的目标,但至少它带来的重构和扩展应该是有帮助的


有关更多详细信息,请参阅和相关问题。

请解释为什么要将操作员分配到特定插槽。对于一个研究项目,我想测量几种配置和操作员分配的性能。我不确定这些信息如何支持我的问题。你的问题似乎是一个“XY问题”(ref),因此我要求提供更多的上下文。简短的回答是不,Flink不支持特定的操作员位置,请参阅以了解更多详细信息。感谢提供信息和链接。因此,解决这个问题的一种方法是使用定制的
调度策略
修改Flinks调度程序。我试图进入代码,但这真的很难,所以我希望有一个更简单的方法。非常感谢你的回答。所以,如果我做对了,我可以调整哪些操作符可以放在一起,哪些操作符必须分开。但选择相应的插槽仍然是不可能的,对吗?没错。你说得对。