1、并行度:
对于一个Flink任务是有Source、Transformation和Sink等任务组成,一个任务由多个并行实例来执行,一个任务的并行实例数目被称为该任务的并行度。
2、TaskManager和Solt
Flink是一个分布式流处理框架,它基于TaskManager和Slot来实现任务的执行。TaskManager是Flink中负责运行任务的工作进程,而Slot是TaskManager中可用的资源。
TaskManager在Flink集群中分布式运行,每个TaskManager可以运行多个Slot。Slot是TaskManager中的资源分配单位,每个Slot可以运行一个Flink任务。TaskManager会根据需要动态分配Slot,以满足任务执行的需求。
3、共享资源槽:
1、 对于一个Task solt负责执行一个task这种部署方式来说,产生的问题是资源的浪费,此时Flink就有就共享资源槽。
2、共享资源槽:Flink并不是将task合并,而是上游的task和下游的task可以共享一个槽位,所以Flink需要使用多少资源和task的数量没有关系,而是和节点的最大并行度有关系,因为有几个并行度就需要几个槽位。
4、并行度的设置的方式:
1、env.setParallelism(2),设置并行度为2(Execution Environment Level(执行环境级别))
2、可以在提交任务的时候指定并行度,通过-p来指定( Client Level(客户端级别))
flink run-application -t yarn-application -p 2 -c flink.core.Demo1WordCount flink-1.0.jar
3、可以对每一个算子都单独的设置并行度(Operator Level(算子级别))
4、System Level 一般不使用
在系统级可以通过设置flink-conf.yaml文件中的parallelism.default属性来指定所有执行环境的默认并行度。
三者的优先级是:3---1---2
flink任务需要的资源和task数量无关,和并行相关,一个并行度需要一个资源(slot)
并行度大小的设置与数据的吞吐量有关