大数据—— Flink 的优化

本文详细探讨了Apache Flink的内存配置、进程参数调整、数据倾斜解决方案、Checkpoint优化以及作业问题定位。强调了TaskManager内存分配、并发度调整、数据分布均匀性和GC优化在性能提升中的关键作用,并提供了代码层面的去重与对象复用优化建议。

目录

一、Flink内存优化

1.1 Flink 内存配置

 二、配置进程参数

2.1 场景

2.2 操作步骤

三、解决数据倾斜

3.1 场景描述

 3.2 解决方式

3.2.1. 数据源的消费不均匀:调整并发度

3.2.2. 数据分布不均匀

四、Checkpoint 优化

五、Flink 作业的问题定位

六、Flink常见性能问题

七、Flink 代码调优

7.1 数据去重

7.2 代码中复用对象


一、Flink内存优化

1.1 Flink 内存配置

        Flink JVM 进程的进程总内存(Total Process Memory)包含了由 Flink 应用使用的内存(Flink 总内存)以及由运行 Flink 的 JVM 使用的内存。 Flink 总内存(Total Flink Memory)包括 JVM 堆内存(Heap Memory)和堆外内存(Off-Heap Memory)。 其中堆外内存包括直接内存(Direct Memory)和本地内存(Native Memory)。

TaskManager的内存划分

 

JobManager 的内存划分

 二、配置进程参数

2.1 场景

        Flink on Yarn 模式下,有 JobManager 和 TaskManager 两种进程。在任务调度和运行的过程中,JobManager 和 TaskManager 承担了很大的责任。

        因此,JobManager 和 TaskManager 的参数配置对 Flink 应用的执行有着很大的影响意义。用户可以通过如下操作对 Flink 集群性能做优化。

2.2 操作步骤

1. 配置 JobManager 内存

        JobManager 负责任务的调度,以及 TaskManager、RM之间的消息通信。当任务数变多,任务平行度增大时,JobManager 内存都需要相应增大。可以根据实际任务数,为 JobManager 设置一个合理的内存大小。

  • 在使用 yarn-session 命令时,添加“-jm MEM”参数设置内存  
  • 在使用 yarn-cluster 命令时,添加“-yjm MEM”参数设置内存      

2. 配置 TaskManager个数

        每个 TaskManager 每个核同时能跑1个 task,所以增加了 TaskManager 的个数相当于增大课任务的并发度。在资源充足的情况下,可以相应的增加 TaskManager 的个数,以提高运行效率。

  • 在使用 yarn-session 命令时,添加“-n NUM”参数设置 TaskManager 个数
  • 在使用 yarn-cluster 命令时,添加“-yn NUM”参数设置 TaskManager 个数

3. 配置 TaskManager Slot 个数

        每个 TaskManager 多个核同时能跑多个 task,相当于增大了任务的并发度。但是由于所有核共用 TaskManager 的内存,所以要在内存和核数之间做好平衡。

  • 在使用 yarn-session 命令时,添加“-s NUM”参数设置 SLOT 数
  • 在使用 yarn-cluster 命令时,添加“-ys NUM”参数
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vicky_Tang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值