开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink写hudi的时候很慢

Flink写hudi任务,任务checkpoint的时候会进行commit,导致任务爆红busy100%,如下图所示,怎么样可以避免任务阻塞呢?是加大资源还是修改配置,希望大家多多提供建议

image.png

展开
收起
飞行砖家 2024-02-06 15:43:36 210 0
1 条回答
写回答
取消 提交回答
  • 在 Apache Flink + Hudi 集成的场景下,当执行 checkpoint 时,由于 Hudi 的写操作(尤其是 commit 操作)涉及大量的文件系统交互(如 HDFS),可能会消耗大量 I/O 资源,从而使得整个 Flink 任务出现瓶颈甚至阻塞,表现为 CPU 使用率很高或者 Busy 状态达到 100%。

    针对这种情况,可以从以下几个方面来考虑优化和避免任务阻塞:

    1. 资源分配调整

      • 增加 TaskManager 的并发度:确保有足够的并发 slot 来分散 I/O 压力,避免单个 TaskManager 过于繁忙。
      • 增大 TaskManager 的内存和 CPU 资源:特别是对于存储密集型的操作,适当增加 TaskManager 的内存有助于缓存更多的数据,减少磁盘 I/O;同时,增加 CPU 可能帮助更快地完成计算和文件系统操作。
    2. Flink 配置调整

      • 异步 checkpoint:启用异步 checkpoint(checkpointing.mode 设置为 async),这样 checkpoint 的触发和 commit 不会阻塞数据流处理,而是并发执行。
      • 调整 checkpoint 间隔:适当增大 checkpoint 之间的间隔,减少 checkpoint 的频率,从而降低频繁 commit 对系统的影响。
      • 分桶策略与并行度对齐:确保 Flink 作业并行度与 Hudi 的分区策略能够有效利用多核优势,避免单个 bucket 写入成为瓶颈。
    3. Hudi 配置优化

      • 批量写入:设置 Hudi 相关配置以优化写入性能,如批量合并小文件,合理设置 hoodie.bulk.insert.shuffle.parallelismhoodie.write.concurrency.mode 等参数。
      • 压缩选项:启用数据压缩以减少 I/O 量和存储空间。
      • 预写缓冲:如果 Hudi 提供了预写缓冲机制,则可以适当调整缓冲大小以适应系统的吞吐和延迟要求。
    4. 硬件优化

      • 提升底层存储性能:如升级 HDFS 集群的硬件设备,提高磁盘 IOPS 或采用 SSD 存储等。
    5. 集群调度策略

      • 如果是在 YARN 或 Kubernetes 上运行,可以考虑优化容器的调度策略,使其尽量均匀分布在不同的物理节点上,减少节点间的竞争。

    综上所述,解决问题的方法不仅仅是单一的加大资源,更应该从整体架构和配置层面进行综合优化,找到适合当前工作负载的最佳实践。同时,监控和分析作业运行状态至关重要,通过日志和指标来定位问题根源,并针对性地采取措施。

    2024-02-06 16:10:36
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载