flink任务内存调优,TaskManager、JobManager内存配置

这篇具有很好参考价值的文章主要介绍了flink任务内存调优,TaskManager、JobManager内存配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        Flink是基于java的JVM运行,拥有高效的数据处理能力,但是考虑到用户在 Flink 上运行的应用的多样性,尽管flink框架已经为所有配置项提供合理的默认值,仍无法满足所有情况下的需求。 为了给用户生产提供最大化的价值, Flink 允许用户在整体上以及细粒度上对集群的内存分配进行调整。(本文介绍的内存配置方法适用于 1.11 及以上版本)

一、flink任务的总内存

flink任务内存调优,TaskManager、JobManager内存配置

 

        Flink JVM 进程的 进程总内存(Total Process Memory)包含了: Flink 任务和框架本身使用的内存(Total Flink Memory)和运行 Flink 的 JVM 本身使用的内存。 

        Flink 总内存(Total Flink Memory)包括 JVM 堆内存(Heap Memory)和堆外内存(Off-Heap Memory)。 其中堆外内存包括直接内存(Direct Memory)和本地内存(Native Memory)。

配置 Flink 进程内存最简单的方法是指定以下两个配置项中的任意一个:

  配置项  TaskManager 配置参数    JobManager 配置参数  
Total Flink Memory taskmanager.memory.flink.size jobmanager.memory.flink.size
Total Process Memory taskmanager.memory.process.size jobmanager.memory.process.size

二、TaskManager任务内存配置

        TaskManager负责执行用户代码。 根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用,增强作业运行的稳定性。

        与 JobManager 相比,TaskManager 具有相似但更加复杂的内存模型。

TaskManager内存详细模型:

flink任务内存调优,TaskManager、JobManager内存配置

 如上图所示,下表中列出了 Flink TaskManager 内存模型的所有组成部分,以及影响其大小的相关配置参数。

组成部分 配置参数 描述
框架堆内存(Framework Heap Memory) taskmanager.memory.framework.heap.size 用于 Flink 框架的 JVM 堆内存(进阶配置)
任务堆内存(Task Heap Memory) taskmanager.memory.task.heap.size 用于 Flink 应用的算子及用户代码的 JVM 堆内存
托管内存(Managed memory) taskmanager.memory.managed.size
taskmanager.memory.managed.fraction
由 Flink 管理的用于排序、哈希表、缓存中间结果及 RocksDB State Backend 的本地内存
框架堆外内存(Framework Off-heap Memory) taskmanager.memory.framework.off-heap.size 用于 Flink 框架的堆外内存(直接内存或本地内存)(进阶配置)
任务堆外内存(Task Off-heap Memory) taskmanager.memory.task.off-heap.size 用于 Flink 应用的算子及用户代码的堆外内存(直接内存或本地内存)
网络内存(Network Memory) taskmanager.memory.network.min
taskmanager.memory.network.max
taskmanager.memory.network.fraction
用于任务之间数据传输的直接内存(例如网络传输缓冲)。该内存部分为基于 Flink 总内存的受限的等比内存部分。这块内存被用于分配网络缓冲
JVM Metaspace taskmanager.memory.jvm-metaspace.size     Flink JVM 进程的 Metaspace
JVM开销 taskmanager.memory.jvm-overhead.min
taskmanager.memory.jvm-overhead.max
taskmanager.memory.jvm-overhead.fraction
用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存的受限的等比内存部分

        以上有些内存部分的大小可以直接通过一个配置参数进行设置,有些则需要根据多个参数进行调整。

        通常情况下,不建议对框架堆内存和框架堆外内存进行调整。 除非非常肯定 Flink 的内部数据结构及操作需要更多的内存。 这可能与具体的部署环境及作业结构有关,例如非常高的并发度。 此外,Flink 的部分依赖(例如 Hadoop)在某些特定的情况下也可能会需要更多的直接内存或本地内存。

本地配置:

        如果你是将 Flink 作为一个单独的 Java 程序运行在你的电脑本地而非创建一个集群(例如在 IDE 中),那么只有下列配置会生效,其他配置参数则不会起到任何效果:

 组成部分  配置参数   本地执行时的默认值 
任务堆内存 taskmanager.memory.task.heap.size 无穷大
任务堆外内存 taskmanager.memory.task.off-heap.size 无穷大
托管内存 taskmanager.memory.managed.size 128Mb
网络内存

taskmanager.memory.network.min

taskmanager.memory.network.max

64Mb

三、JobManager内存配置

        JobManager 是 Flink 集群的控制单元。 它由三种不同的组件组成:ResourceManager、Dispatcher 和每个正在运行作业的 JobMaster。

        配置 JobManager 内存最简单的方法就是进程的配置总内存。本地执行模式下不需要为 JobManager 进行内存配置,配置参数将不会生效。

JobManager内存详细模型:

flink任务内存调优,TaskManager、JobManager内存配置

         如上图所示,下表中列出了 Flink JobManager 内存模型的所有组成部分,以及影响其大小的相关配置参数。

组成部分 配置参数 描述
JVM 堆内存 jobmanager.memory.heap.size JobManager 的 JVM 堆内存
堆外内存 jobmanager.memory.off-heap.size     JobManager 的堆外内存(直接内存或本地内存)
JVM Metaspace jobmanager.memory.jvm-metaspace.size Flink JVM 进程的 Metaspace
JVM 开销    

jobmanager.memory.jvm-overhead.min

jobmanager.memory.jvm-overhead.max
jobmanager.memory.jvm-overhead.fraction文章来源地址https://www.toymoban.com/news/detail-455177.html

用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存的受限的等比内存部分

到了这里,关于flink任务内存调优,TaskManager、JobManager内存配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink|《Flink 官方文档 - 部署 - 内存配置 - 网络缓冲调优》学习笔记

    学习文档:《Flink 官方文档 - 部署 - 内存配置 - 网络缓冲调优》 学习笔记如下: Flink 中每条消息都会被放到网络缓冲(network buffer) 中,并以此为最小单位发送到下一个 subtask。 Flink 在传输过程的输入端和输出端使用了网络缓冲队列,即每个 subtask 都有一个输入队列来接收

    2024年01月21日
    浏览(44)
  • Flink|《Flink 官方文档 - 部署 - 内存配置 - 调优指南 & 常见问题》学习笔记

    学习文档: 《Flink 官方文档 - 部署 - 内存配置 - 调优指南》 《Flink 官方文档 - 部署 - 内存配置 - 常见问题》 学习笔记如下: 独立部署模式(Standalone Deployment)下的内存配置 通常无需配置进程总内存,因为不管是 Flink 还是部署环境都不会对 JVM 开销进行限制,它只与机器的

    2024年02月19日
    浏览(33)
  • Flink JobManager的高可用配置

    在flink执行中,jobManager是一个负责执行流式应用执行和检查点生成的组件,一旦发生故障,那么其负责的所有应用都会被取消,所以我们需要对JobManager配置高可用的模式 配置JobManager的高可用需要使用到zookeeper,一方面zookeeper可以进行领导的选举工作,这样备用jobmanager就可以

    2024年02月09日
    浏览(30)
  • cdh6.3.2 Flink On Yarn taskmanager任务分配倾斜问题的解决办法

    Flink On Yarn任务启动 CDH:6.3.2 Flink:1.13.2 Hadoop:3.0.0 在使用FLink on Yarn调度过程中,发现taskmanager总是分配在集中的几个节点上,集群有11个节点,但每个任务启动,只用到两三个节点,导致这几台服务器负载过高,其他节点又比较空闲。 1、yarn.scheduler.fair.assignmultiple 2、yarn.s

    2024年02月12日
    浏览(32)
  • Flink实时任务性能调优

    通常我们在开发完Flink任务提交运行后,需要对任务的参数进行一些调整,通常需要调整的情况是任务消费速度跟不上数据写入速度,从而导致实时任务出现反压、内存GC频繁(FullGC)频繁、内存溢出导致TaskManager被Kill。 今天讲一下Flink任务中常见的性能场景及解决思路。 在

    2024年02月16日
    浏览(33)
  • 【性能调优】local模式下flink处理离线任务能力分析

    本文相关讨论 flink内存对任务性能的影响:通过了解内存模型,了解这些模型都负责那些工作,比如用户代码使用堆,数据通讯使用直接内存等,以便能够根据任务特点针对性调整任务内存; 并发与带宽之间的关系,local模式下怎么根据带宽,设置最佳线程数; 内存监控相关

    2024年01月18日
    浏览(53)
  • Flink源码之JobManager启动流程

    从启动命令flink-daemon.sh中可以看出StandaloneSession入口类为org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint, 从该类的main方法会进入ClusterEntrypoint::runCluster中, 该方法中会创建出主要服务和组件。 可以看出关键代码是调用initializeServices以及创建Cluster Component。 在initializeSer

    2024年02月13日
    浏览(30)
  • 怎么计算flink任务需要多少cpu和内存

    Flink任务需要的CPU和内存取决于任务的具体实现和数据规模。以下是一些常见的方法来评估Flink任务需要多少CPU和内存: 数据规模:Flink任务需要的CPU和内存与数据规模成正比。如果数据规模较大,那么任务需要更多的CPU和内存来处理数据。可以通过以下几种方式来估算数据规

    2024年02月09日
    浏览(31)
  • Flink源码之TaskManager启动流程

    从启动命令flink-daemon.sh可以看出TaskManger入口类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner 在TaskManagerRunner构造函数中,可以看出与JobManger类似,也是先构造出一些公共服务: 这些服务在构造TaskExecutor时作为构造函数参数传入 构造TaskExecutor前会先构造TaskManagerServices辅助Task

    2024年02月13日
    浏览(24)
  • flink sql checkpoint 调优配置

    - `execution.checkpointing.interval`: 检查点之间的时间间隔(以毫秒为单位)。在此间隔内,系统将生成新的检查点 SET execution.checkpointing.interval = 6000; - `execution.checkpointing.tolerable-failed-checkpoints`: 允许的连续失败检查点的最大数量。如果连续失败的检查点数量超过此值,作业将失败

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包