Flink的架构体系

Flink 中的重要角⾊

  • JobManager处理器

JobManager处理器也称之为 Master,用于协调分布式执行,它们用来调度task,协调检查点,协调失败时恢复等。Flink运行时至少存在一个master处理器,如果配置高可用模式则会存在多个master处理器,它们其中有一个是leader,而其他的都是standby。

  • TaskManager处理器

TaskManager处理器也称之为Worker ,用于执行一个dataflow的task (或者特殊的subtask)、数据缓冲和data stream的交换,Flink运行时至少会存在一个worker处理器。

  • Slot 任务执行槽位:

物理概念,一个TM(TaskManager)内会划分出多个Slot,1个Slot内最多可以运行1个Task(Subtask)或一组由Task(Subtask)组成的任务链。(类似于 Container)

多个Slot之间会共享平分当前TM的内存空间。Slot是对一个TM的资源进行固定分配的工具,每个Slot在TM启动后,可以获得固定的资源。比如1个TM是一个JVM进程,如果有6个Slot,那么这6个Slot平分这一个JVM进程的资源,但是因为在同一个进程内,所以线程之间共享TCP连接、内存数据等,效率更高(Slot之间交流方便)。

  • Task:

任务,每一个Flink的Job会根据情况(并行度、算子类型)将一个整体的Job划分为多个Task。

  • Subtask:

子任务,一个Task可以由一个或者多个Subtask组成。一个Task有多少个Subtask取决于这个Task的并行度,也就是,每一个Subtask就是当前Task任务并行的一个线程。如,当前Task并行度为8,那么这个Task会有8个Subtask(8个线程并行执行这个Task)。

一个 wordCount 是一个 job,每一个 job 根据算子,切成多个任务 Task ,而每一个 taks 都是并行执行的,有多少个并行度,就启动多少个子任务。

  • 并行度:

并行度就是一个Task可以分成多少个Subtask并行执行的一个参数。这个参数是动态的,可以在任务执行前进行分配,而非Slot分配,TM启动就固定了。

一个Task可以获得的最大并行度取决于整个Flink环境的可用Slot数量,也就是如果有8个Slot,那么最大并行度也就是8,设置的再大也没有意义(还报错)。

假如你只有6个槽,并行度设置为8,启动一会儿之后会报错,启动任务失败,报错如下:

集群中槽的数量虽然是手动设置的,但是也不能超过集群中的 CPU 总核数。

如下图:

  • 一个Job分为了3个Task来运行,分别是TaskA TaskB TaskC
  • 其中TaskA设置为了6个并行度,也就是TaskA可以有6个Subtask,如图可见,TaskA的6个Subtask各自在一个Slot内执行
  • 其中在Slot的时候说过,Slot可以运行由Task(或Subtask)组成的任务链,如图可见,最左边的Slot运行了TaskA TaskB TaskC 3个Task各自的1个Subtask组成的一个Subtask执行链

并行度是一个动态的概念,可以在多个地方设置并行度:【重要】

  • 配置文件默认并行度:conf/flink-conf.yaml的parallelism.default
  • 启动Flink任务,动态提交参数:比如:bin/flink run -p 3 xxx.jar
  • 在代码中设置全局并行度:env.setParallelism(3);
  • 针对每个算子进行单独设置:sum(1).setParallelism(3)

优先级:算子 > 代码全局 > 命令行参数 > 配置文件

相关推荐
计算机毕设定制辅导-无忧学长8 小时前
TDengine 权限管理与安全配置实战(二)
大数据·安全·tdengine
2401_897930068 小时前
Kibana 连接 Elasticsearch(8.11.3)教程
大数据·elasticsearch·jenkins
计算机毕设定制辅导-无忧学长8 小时前
TDengine 快速上手:安装部署与基础 SQL 实践(一)
大数据·sql·tdengine
塔能物联运维9 小时前
塔能科技:精准节能,擎动工厂可持续发展巨轮
大数据·运维
今天我又学废了9 小时前
Spark,HDFS概述
大数据·hdfs·spark
青云交10 小时前
Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)
大数据·迁移学习·图像识别·模型优化·deeplearning4j·机器学习模型·java 大数据
Yan-英杰11 小时前
DeepSeek-R1模型现已登录亚马逊云科技
java·大数据·人工智能·科技·机器学习·云计算·deepseek
黄雪超11 小时前
Flink介绍——实时计算核心论文之Storm论文总结
大数据·论文阅读·storm
TDengine (老段)11 小时前
TDengine 中的日志系统
java·大数据·数据库·物联网·时序数据库·tdengine·iotdb
蒋星熠13 小时前
在VMware下Hadoop分布式集群环境的配置--基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置
大数据·linux·hadoop·分布式·ubuntu·docker