Flink重要的概念

Flink的数据流处理涉及DataFlowGraph、JobGraph、ExecutionGraph和PhysicalGraph四个阶段,从代码到执行的转化和优化。算子包括source、transform和sink,算子链合并one-to-one算子。并行度可通过配置文件、任务提交、全局代码和算子层面设置,影响任务执行。Flink的宽窄依赖定义了数据流中上下游算子的关系。TaskManager上的槽用于任务执行,支持槽共享,保证并行度小于等于可用槽数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flink的四张图

  • DataFlow Graph(数据流图)

是代码写完之后,根据API就生成了。

  • Job Graph(任务图)

是客户端根据数据流图优化后的图。

  • Execution Graph(执行图)

是客户端把任务图(Job Graph)提交给集群后,集群的JobManager根据任务图解析,转换成了Execution Graph。

  • Physical Graph(物理图)

是JobManager把Executor Graph调度给TaskManager执行,TaskManager收到Execution Graph后,把执行图解析,转换成了能够具体执行任务的物理图。

算子&算子链

算子:每一个Flink程序的方法。Flink的算子分为三类:

  • source算子

  • transform算子

  • sink算子

算子链:把one-to-one算子进行合并后,形成多个算子在一起的情况,叫做算子链。

槽&槽共享

槽:也是slot,是TaskManager上的固定的资源。任务必须在slot里运行。

槽共享:一个槽,可以运行多个不同Task的SubTask。

并行度

Flink提供了四种设置并行度的方式:

  • 配置文件(默认的,优先级最低)

  • 任务提交(-p 3)

  • 代码全局层面(env.setParallelism(3))

  • 算子层面(map.setParallelism(3),优先级最高)

优先级的高低顺序如下:

算子层面 -> 代码全局层面 -> 任务提交 -> 配置文件

宽窄依赖

Spark的宽窄依赖如下:

Narrow Dependency,窄依赖

Shuffle Dependency,宽依赖

Flink的宽窄依赖如下:

One-to-One Dependency,窄依赖,数据流中上下游算子的依赖是一对一的。

Redistribution Dependency,宽依赖,数据流中上下游算子的依赖是一对多的。

Flink的层级关系

Flink集群 -> Job(作业) -> Task(任务,根据宽依赖算子) -> SubTask(子任务,并行度)

备注:

Slot(槽) 固定的静态资源

并行度:动态的任务执行参数

并行度 <= 可用槽数量

比如说:slot,只有4个

但是,并行度设置为5

Standalone集群,执行失败的。

Yarn集群,可以正常执行。因为Yarn可以动态开启Container(TaskManager)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值