Flink(十二):Task与算子链简介

目录

一、简介

二、算子链简介

三、 算子链配置

四、例子


一、简介

Flink 将算子的 subtasks 链接tasks。每个 task 由一个线程执行。默认情况下,Flink 允许 subtask 共享 slot,即便它们是不同的 task 的 subtask,只要是来自于同一作业即可,将算子链接成 task 是个有用的优化:它减少线程间切换、缓冲的开销,并且减少延迟的同时增加整体吞吐量。

Flink(十二):Task与算子链简介_第1张图片

二、算子链简介

默认情况下,Flink 允许 subtask 共享 slot,即便它们是不同的 task 的 subtask,只要是来自于同一作业即可。允许 slot 共享有两个主要优点:

1、Flink 集群所需的 task slot 和作业中使用的最大并行度恰好一样。无需计算程序总共包含多少个 task(具有不同并行度)。

2、容易获得更好的资源利用。如果没有 slot 共享,非密集 subtask(source/map())将阻塞和密集型 subtask(window) 一样多的资源。通过 slot 共享,我们示例中的基本并行度从 2 增加到 6,可以充分利用分配的资源,同时确保繁重的 subtask 在 TaskManager 之间公平分配。

Flink(十二):Task与算子链简介_第2张图片

三、 算子链配置

     默认情况下算子链是开启的,配置关闭

      1、执行配置,所有算子关闭算子链

          getExecutionEnvironment().disableOperatorChaining()

     2、算子关闭算子链

          addSource(consumer).disableChaining()

四、例子

        

Flink(十二):Task与算子链简介_第3张图片

Flink(十二):Task与算子链简介_第4张图片 

 

   source、sink 分别36个并行度,默认开启了算子链,一台task manager 设置6个slot,需要6个task manager,只要是来自于同一作业即可,将算子链接成 task 是个有用的优化,它减少线程间切换、缓冲的开销,并且减少延迟的同时增加整体吞吐量。

 

你可能感兴趣的:(Flink入门,flink,大数据)