Flink处理大型离线任务稳定性与性能调优探索

Apache Flink在处理大型离线任务时,通过调整TaskManager的CPU和slot数、资源配置,以及优化内存使用,可以提高任务稳定性并降低资源消耗。文章分析了IO密集型任务的特性,提出了TaskManager配置不宜过大的观点,并通过测试对比,探讨了不同配置下的任务运行速度和稳定性。最终,建议通过适当减小TaskManager资源和调整slot与CPU的关系来优化离线任务的性能。

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

Apache Flink作为分布式处理引擎,用于对无界和有界数据流进行状态计算。其中实时任务用于处理无界数据流,离线任务用于处理有界数据。

通过本文你将掌握让大型离线任务运行稳定的能力,同时能够通过分析离线任务运行特点,降低任务运行资源消耗,减少任务成本。

下面我们进入正题:

01

离线任务情况说明

对于平台处理的离线任务,任务大都是处理:从HDFS到HIVE的数据清洗任务。这类任务的特点是数据来一条处理一条,所以任务大都是没有状态的。

看一个任务

source: 301个文件,每个文件9.6G(压缩后的大小),总共大约240亿条数据

trans:对于每条数据通过正则去获取目标数据。

资源配置:301并发、tm:<10core、10slots、15G>、jm: 10core、8G内存。那将会产生32个container(运行在yarn中)。

任务运行的速度大概在1.2亿/min,运行2小时50多分钟。但是任务会偶发的报hadoop集群的问题,如下报错

connection reset by peer
EOFException: End of File Exception

以至于后面这个任务少了几天数据,任务都跑不下去。但其他类似的任务运行的很稳定,“事出反常必有妖”:

本文尝试从内存、并发的角度分析任务的稳定性及任务运行速度等问题。

02


相关理论

1. Task Slots and Resources


cbcfdba53da46e4ee5130cdccb7c33c6.png

通过阅读官网,我们可以了解到:

1. taskmanager是一个jvm进程,一个taskmanager可能执行一个或多个subtask在各自的线程(slot)中。

2. taskmanager的(托管)内存资源会根据slot的数量而分开,但是tm中的 TCP(通过多路复用)连接、心跳消息、共享数据集、数据结构和cpu资源各slot会共享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值