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

Flink 在任务执行前我也不知道这个任务需要多少的内存,这个有什么解决方法吗?

Flink on yarn任务在执行的时候数据量太大容易jobmanager或者taskmanager内存不足,然后容器直接被kill掉,在任务执行前我也不知道这个任务需要多少的内存,这个有什么解决方法吗?

展开
收起
真的很搞笑 2023-11-30 13:07:14 52 0
2 条回答
写回答
取消 提交回答
  • 先按集群资源算算 按cpu和内存配比给,然后报溢出了再加,从ck恢复就行,此回答整理自钉群“【③群】Apache Flink China社区”

    2023-11-30 21:43:20
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    当 Flink 在 YARN 上运行时,由于数据量大而导致 JobManager 或 TaskManager 内存不足的情况是很常见的。以下是一些解决此类问题的方法:

    1. 增加资源

      • 增加每个 TaskManager 的内存大小:通过 yarn.application-master.vcoresyarn.container-vcores 设置来调整分配给任务的 CPU 核心数。
      • 增加 TaskManager 的数量:在提交作业时指定更多的并行度(如使用 -yn 参数)。
    2. 监控和调优

      • 使用 Flink Web UI 监控作业状态,包括 TaskManager 的资源使用情况、水位线等指标。
      • 调整 checkpoint 间隔和超时时间,以降低系统开销。
    3. 优化数据处理逻辑

      • 减少 state 的使用,或者使用更高效的状态存储方式(如 RocksDB)。
      • 对于高并发的数据流,考虑使用分桶、分区等技术来分散数据负载。
    4. 预估资源需求

      • 在实际部署前进行测试,根据测试结果估计所需资源。
      • 可以使用一些工具(如 Apache JMeter 等)模拟生产环境中的数据流量,以此来预估资源需求。
    5. 动态资源调整

      • 使用 Flink 自带的 dynamic scaling 功能,在作业运行过程中动态地添加或减少 TaskManagers。
      • 配合 YARN 的动态资源调整功能,自动扩展集群规模。
    6. 使用外部持久化存储

      • 如果可能,将部分计算过程产生的中间数据保存到外部持久化存储(如 HDFS),而不是全部保留在内存中。
    7. 升级硬件

      • 如果当前硬件资源不足以应对大数据量的处理,可以考虑升级服务器的硬件配置。
    8. 使用高效的序列化库

      • 使用高效的序列化库(如 Protobuf、Kryo 等)来降低数据传输和存储的成本。
    2023-11-30 13:17:17
    赞同 展开评论 打赏

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

相关产品

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

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