【问题标题】:Correlation between data streams/operators and threads in Apache flinkApache flink 中数据流/算子和线程之间的相关性
【发布时间】:2017-11-09 19:15:55
【问题描述】:

在处理多个数据流和每个数据流的多个运算符时,我试图了解 Flink 的运行时方面。

用例:单个 flink 作业中的 N 个数据流(每个数据流代表 1 个设备 - 具有不同的时间延迟),每个数据流被分成两个流,其中一个进入一堆 CEP 算子, 和一个过程函数。

问题:

  1. 在运行时,引擎会为每个数据流创建一个线程吗?还是每个操作员一个线程?
  2. 是否可以在作业开始时在运行时动态创建数据流? (即如果在作业开始时从文件中读取 N 并且需要创建相应的 N 个流)
  3. 创建大量流 (N ~ 10000) 时,与单个流中的 N 个分区相比,是否会对性能产生任何特定影响?

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    问题 #1: 在运行时,引擎会为每个数据流创建一个线程吗?还是每个操作员一个线程?

    在我看来,流和操作符之间没有直接关系。您需要查看execution plans 以了解流如何连接到运算符。也取决于并行度,还有various types of parallelisms in flink

    问题#2:是否可以在作业开始时在运行时动态创建数据流?

    是的,这是可能的。简单的方法是创建一个流生成器,它实现RichParallelSourceFunction 函数并以某种速率发送流。

    问题 #3:当创建大量流(N ~ 10000)而不是单个流中的 N 个分区时,是否会对性能产生任何特定影响?

    是的,我想是的,会有一些性能影响,您可以通过生成多个流然后比较处理延迟来证实这一点

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多