flink 并行度。

1. 可以在4个地方设置

环境,

客户端

job

操作后面。

优先级 自下而上

2.最大并行度。可以在Job操作两个地方

默认的最大并行度等于将 operatorParallelism + (operatorParallelism / 2) 值四舍五入到大于等于该值的一个整型值,并且这个整型值是 2 的幂次方,注意默认最大并行度下限为 128,上限为 32768

3. 特殊操作

1.不能并行度

本地 和cpu 有关的。

并行度的概念

Flink 运行时包括两类进程:
● JobManager(又称为 JobMaster):协调 Task 的分布式执行,包括调度 Task、协调创建checkpoint 以及当 job failover 时协调各个 Task checkpoint 恢复等。
● TaskManager(又称为 Worker):执行 dataflow 中的 Tasks,包括内存 buffer 的分配、Data Stream 的传递等。

slot 一个taskmanger 共享 cup 内存是分开

共享草 可以可以共享心跳和tpc  和数据集和数据结构。减少负担。


原文链接:https://blog.youkuaiyun.com/weixin_44519468/article/details/105909688

### 设置 Apache Flink 作业并行度的方法 Apache Flink 提供了多层级的配置方式来设置作业的并行度,以适应不同场景下的性能调优需求。默认情况下,Flink 会使用 `flink-conf.yaml` 中定义的并行度值,通常为: ```yaml parallelism.default: 1 ``` 该配置决定了在没有显式设置的情况下所有算子和作业的默认并行度[^1]。 #### 一、全局系统级别设置 在 Flink 配置文件 `flink-conf.yaml` 中设置全局默认并行度是最基础的方式。此配置适用于整个 Flink 集群的所有作业: ```yaml parallelism.default: 4 ``` 该设置作为集群级别的兜底策略,在其他更细粒度的设置未指定时生效[^3]。 #### 二、执行环境级别设置 可以在程序中通过 `StreamExecutionEnvironment` 设置默认并行度,覆盖配置文件中的全局设置: ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); ``` 这种方式适用于希望在整个作业中统一使用相同并行度的情况,同时可以被更细粒度的算子级设置覆盖[^3]。 #### 三、算子级别设置 为了实现更精细的资源控制和性能优化,Flink 支持在单个算子上设置并行度。例如: ```java env.fromElements("a", "b", "c") .map(x -> x) .setParallelism(2) .print(); ``` 这种设置方式优先级最高,适合用于对关键路径上的算子进行针对性优化,如 Kafka Source 的并行度建议设置为与 Kafka Topic 分区数一致,Keyed Window Aggregation 可适当提高并行度以提升吞吐量。 #### 四、客户端提交时动态设置 Flink 还支持在提交作业时通过命令行参数动态设置并行度,适用于多环境部署(开发、测试、生产): ```bash flink run -p 8 -c com.example.MyJob ./myjob.jar ``` 该方式在运行时决定并行度,常用于临时调整或自动化运维流程中。 #### 五、Flink SQL 中设置并行度 对于使用 Flink SQL 的用户,虽然 SQL 层本身不直接提供并行度设置语法,但可以通过底层 Table API 或者执行环境来控制。例如在 Java 中创建表环境时设置执行并行度: ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); ``` 这样可以确保 SQL 查询中的各个操作符继承该并行度设置[^2]。 #### 六、调优建议 - **Kafka Source**:建议并行度等于 Kafka Topic 的分区数; - **Map / FlatMap**:根据 CPU 利用率合理设置; - **Keyed Window Aggregation**:可适当提高并行度以提升吞吐; - **Join / CoGroup**:视数据分布情况决定是否提高并行度; - **Sink**:若写入性能成为瓶颈,可适当增加 Sink 并行度; 此外,确保总并行度不超过集群总 Slot 数量,以避免资源争抢和调度开销过大。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手把手教你学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值