• Flink 任务Checkpoint 过短引起集群IO瓶颈问题


    背景

    最近部署在Yarn 集群的实时计算节点频繁的报警,出现了IO 过高的问题,调整了任务的checkpoint间隔之后,整个IO都下来了。

    tsar.io.await app=io;partition=io_vdb 251.3>200 AND tsar.io.qusize app=io;partition=io_vdb 26>10
    
    • 1

    在这里插入图片描述

    问题定位

    其实这个问题不难定位,Flink 涉及到磁盘相关的主要就是在checkpoint的时候需要进行IO操作,那这个问题肯定就是因为checkpoint的原因导致的IO瓶颈。

    然后去机器上通过 iotop 查看是那个进程IO过高,去定位一下具体的任务,通过iotop 查看发现这台机器上的几个进程是同一个任务的TaskManager,然后查看任务的配置发现checkpoint间隔设置的 10 s,而且是一个比较大状态的任务,这就不难定位到问题了,主要是以下几个原因:

    • 任务本身状态较大,设置的checkpoint间隔较短
    • 任务TaskManager的分布不够均衡

    问题解决

    • 调大checkpoint间隔
    • 重启任务重新分配任务

    其实在我们的实时任务中,对于绝大部分任务消费的是Kafka,checkpoint时会进行offset上报,如果checkpoint设置的过大,如果配置太长可能会造成容错时候较多数据重复消费,但是如果下游是可以保证幂等的情况下这些数据的重复消费是不会造成一定的影响的。同时checkpoint设置过长可能在容错时造成一定的数据延迟,因为要消费上一次上报的offset到容错的时间点的数据。因此checkpoint的设置需要考虑任务本身的数据延迟容忍度和数据重复消费的容忍度,如果再可接受的范围还是可以设置的大一点,不然还是度集群节点的IO有一定的挑战的。

  • 相关阅读:
    设计模式之装饰器模式
    操作系统MIT6.S081:P5->Isolation & system call entry/exit
    使用PyTorch解决多分类问题:构建、训练和评估深度学习模型
    如何开一家盈利的健身房?我用1年回本的经验告诉你,别谈恋爱
    【RocketMQ】设计理念与核心概念扫盲
    JavaScript课堂练习
    什么是博弈论?
    日志收集的方式和优点
    Log4j比较配置信息
    C# Onnx Yolov8 Detect 手势识别
  • 原文地址:https://blog.csdn.net/Hdu_lc14015312/article/details/126137560