Apache Flink 缓冲任务的传出,然后将其发送到下一个任务进行处理。缓冲会影响延迟,据我所知,即使缓冲区未填充,缓冲也会将数据发送到下一个任务。
- 如何更改缓冲超时?我在文档中找不到任何内容。
- 配置是按 Flink 集群还是按任务管理器?可以按任务/操作员配置吗?
- 据我所知,即使任务在同一个任务管理器上,Flink 缓冲区也是如此。在这种情况下,它将影响同一任务管理器中的任务/运算符。我说的对吗?
注意:我对这些数据/信息/问题的参考是O'Reilly的"使用Apache Flink进行流处理"和官方文档。
缓冲区超时是通过StreamExecutionEnvironment
配置的作业级参数。
val env: StreamExecutionEnvironment = ???
env.setBufferTimeout(50L) // configure 50 ms buffer timeout
它不能按操作员配置。此外,所有操作员的传出通道都多路复用为每个任务管理器的发送方-接收方对的单个物理连接。因此,所有运算符都将其输出写入需要传送到同一任务管理器的同一缓冲区。
文档中更详细地描述了该参数。