运行时架构——Standalone会话模式为例
并行度
并行度是指在计算过程中同时执行多个任务或操作的能力。在 Apache Flink 中,并行度是指同时执行作业中的多个任务或算子的能力。
并行度的引入是为了解决以下问题:
- 提高计算速度:通过将任务拆分成多个子任务,并行执行它们,可以大大提高计算速度。每个子任务都可以在不同的计算资源上独立执行,从而充分利用计算资源的并行处理能力。
- 处理大规模数据:当需要处理大规模数据时,单个任务可能会面临内存不足或处理时间过长的问题。通过将任务分成多个并行任务,可以将负载均衡到多个计算资源上,提高处理大规模数据的效率和可扩展性。
- 提高系统的容错性:并行度还可以提高系统的容错性。如果一个任务或算子失败,其他并行任务仍然可以继续执行,从而减少了整体作业的影响。
总的来说,通过并行度,可以将任务分解成更小的单元并同时执行它们,提高计算速度、处理大规模数据和提高系统的容错性。这是为了更好地利用计算资源、提高系统性能和处理大规模数据而引入的概念。
一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。这样,包含并行子任务的数据流,就是并行数据流,它需要多个分区(stream partition)来分配并行任务。一般情况下,一个流程序的并行度,可以认为就是其所有算子中最大的并行度。一个程序中,不同的算子可能具有不同的并行度。
例如:如上图所示,当前数据流中有source、map、window、sink四个算子,其中sink算子的并行度为1,其他算子的并行度都为2。所以这段流处理程序的并行度就是2。