apacheflink中数据流/运算符与线程之间的关联

ff29svar  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(307)

当处理多个数据流和每个数据流有多个操作符时,我试图理解flink的运行时方面。
用例:在一个flink作业中有n个数据流(每个数据流代表一个设备-具有不同的时间延迟),每个数据流被分成两个流,其中一个进入一组cep操作符,另一个进入一个进程函数。
问题:
在运行时,引擎会为每个数据流创建一个线程吗?或者每个操作符一个线程?
当作业启动时,是否可以在运行时动态创建数据流(i、 e.如果在作业开始时从文件中读取n,则需要创建相应的n个流)
当创建大量流(n~10000个)时,相对于单个流中的n个分区,是否有任何特定的性能影响?

zqry0prt

zqry0prt1#

问题1:在运行时,引擎是否会为每个数据流创建一个线程?或者每个操作符一个线程?
在我看来,流和操作符之间没有直接的关系。您需要查看执行计划,以了解流是如何连接到运算符的。它还依赖于平行性,在Flink中也有各种类型的平行性
问题#2:作业启动时,是否可以在运行时动态创建数据流?
是的,这是可能的。简单的方法是创建一个流生成器,它实现 RichParallelSourceFunction 函数并以一定速率发送流。
问题#3:当创建大量流(n~10000个)时,相对于单个流中的n个分区,是否有任何特定的性能影响?
是的,我认为会有一些性能影响,您可以通过生成多个流,然后比较处理延迟来证实这一点

相关问题