我在读Apache·Flink的医生:https://ci.apache.org/projects/flink/flink-docs-stable/concepts/runtime.html.
正如医生所说,
对于分布式执行,flink将操作符子任务链接到一个任务中。每个任务由一个线程执行。将操作符链接到任务中是一种有用的优化:它减少了线程到线程的切换和缓冲的开销,并在减少延迟的同时提高了总体吞吐量。
因此,据我所知,知道哪些操作符可以链接是很重要的。但我们怎么知道呢?我的意思是,我们怎么知道哪些运算符可以链接,哪些运算符不能链接?
例如,在wordcount的例子中,
当我们开始编写代码时,我们怎么知道呢 Source
以及 map()
可以被锁起来,那 map()
以及 keyBy()/window()/apply()
不能被锁住?
1条答案
按热度按时间brccelvz1#
只要两个操作员通过转发数据连接进行连接,就可以将它们链接起来。换言之,keyby、rebalance或更改并行性(这也是一个rebalance)会强制网络通信,并使操作符链接不可能。