Flink Parallelism 与 Slot 理解

what Parallelism Slot ?

parallelism 是并行的意思
slot 槽位的意思

先来看一张Flink官网中一张经典图
在这里插入图片描述
图中 TaskManager 是从 JobManager 处接收需要部署的 Task,任务能配置的最大并行度由 TaskManager 上可用的 Slot决定

Slot 和 Parallelism 的关系

1.Slot 是指 TaskManager 最大能并发执行的能力

Flink 配置文件中设置的一个 TaskManager 默认的Slot 是 1,
taskmanager.numberOfTaskSlots: 1 该参数可以根据实际情况做一定的修改。
在这里插入图片描述
如上图,如果设置的单个 TaskManager 的 Slot 个数为 3,启动 3 个 TaskManager 后,那么就一共有 9 个 Slot

2.parallelism 是指 TaskManager 实际使用的并发能力
  • 如果在你的 Flink Job 里面不设置任何 parallelism 的话,那么它也会有一个默认的 parallelism(默认为1),那也意味着可以修改这个配置文件的默认并行度来提高 Job 的执行效率。如果是使用命令行启动你的 Flink Job,那么你也可以这样设置并行度(使用-p n 参数 flink run -p 10)
  • 也可以通过 env.setParallelism(n) 来设置整个程序的并行度: env.setParallelism(10);
    这样设置的并行度是整个程序的并行度,那么后面如果每个算子不单独设置并行度覆盖的话,那么后面每个算子的并行度就都是以这里设置的并行度为准了
  • 给每个算子设置并行度
data.keyBy(new xxxKey())
    .flatMap(new XxxFlatMapFunction()).setParallelism(5)
    .map(new XxxMapFunction).setParallelism(5)
    .addSink(new XxxSink()).setParallelism(1)

如上就是给每个算子单独设置并行度,这样的话,就算程序设置了 env.setParallelism(10)
也是会被覆盖的。这也说明优先级是:算子设置并行度 > env 设置并行度 > 配置文件默认并行度

在这里插入图片描述
运行程序默认的并行度为 1,9 个 Slot 只用了 1 个,有 8 个处于空闲,设置合适的并行度才能提高 Job 计算效率。

parallelism 是可配置、可指定的在这里插入图片描述
上图中 example2 每个算子设置的并行度是 2, example3 每个算子设置的并行度是 9在这里插入图片描述
example4 除了 sink 是设置的并行度为 1,其他算子设置的并行度都是 9

总结

Slot 在Flink里面可以任务是资源组,Flink将每个热舞分成子任务并且将这些子任务分配到Slot中,这样就可以并行的执行程序
如果 TaskManager 有四个 Slot,那么它将为每个 Slot 分配 25% 的内存。 可以在一个 Slot 中运行一个或多个线程。 同一Slot 中的线程共享相同的 JVM。 同一 JVM 中的任务共享 TCP 连接和心跳消息。TaskManager 的一个 Slot代表一个可用线程,该线程具有固定的内存,注意 Slot 只对内存隔离,没有对 CPU 隔离。默认情况下,Flink 允许子任务共享 Slot,即使它们是不同Task 的 subtask,只要它们来自相同的 Job,这种共享模式可以大大的提高资源利用率

上图有两个TaskManager每个TM有3个Slot,这样我们的算子最大并行度就是6个,同一个Slot里面可以执行1至多个子任务。
图中 source/map/keyby/window/apply 算子可以设置最大6个并行度,sink只设置了1个并行度。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冬瓜螺旋雪碧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值