• JobManager 内存简介


    一、简介

    JobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从失败中恢复等等。这个进程由三个不同的组件组成ResourceManager、Dispatcher、JobMaster。需对JobManager 内存详细了解,以及内存在整体上以及细粒度上的配置方法。

    二、JobManager 内存模型简介

    参数设置:

    • jobmanager.memory.process.size:对应到图中的 Total Process Memory 。对应到 -yjm。
    • jobmanager.memory.flink.size:对应到图中的Total Flink Memory,作业管理器的总Flink内存大小。这包括JobManager消耗的所有内存,除了JVM元空间和JVM开销,它由JVM堆内存和堆外内存组成。
    • jobmanager.memory.heap.size :对应到图中的JVM Head:JobManager的JVM堆内存大小。
    • jobmanager.memory.off-heap.size:默认值:128mb,对应到图中的Off-Heap Memory。JobManager的堆外内存。
    • jobmanager.memory.jvm-metaspace.size:默认值:256mb ,对应到图中的JVM Metaspace。JobManager JVM 进程的 Metaspace。
    • JVM Overhead,是用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等,JVM开销的大小是为了弥补总进程内存中配置的部分。
      • jobmanager.memory.jvm-overhead.fraction:默认值 0.1(Total Process Memory的0.1)。
      • jobmanager.memory.jvm-overhead.min:默认值192mb
      • jobmanager.memory.jvm-overhead.max:默认值1gb
      • 按照比例算,如果内存大小小于或大于配置的最小或最大大小,则将使用最小或最大大小。可以通过将最小和最大大小设置为相同的值,可以显式指定JVM开销的确切大小。

    那么如果设置了 -yjm 1024 ,JobManager的JVM的堆内存大小是多少呢?

    首先,在没有显示的设置其它内存的情况下,所有的内存组成部分都用默认值

    • JVM Metaspace:256mb
    • JVM Overhead:1024 * 0.1 = 102.4 由于102.4 < 192 所以JVM Overhead的大小为192mb
    • Total Flink Memory:1024 - 256 - 192 = 576
    • Off-Heap Memory:128mb
    • JVM Overhead:576 - 128 = 448mb

    有点时候,我们会希望运用到JVM Head的内存更多一点,那么就可以尝试着把其它的部分调低,来给到JVM Head更多的内存。

    Flink JobManager 内存模型相关配置参数说明。

    组成部分  配置参数  描述  
    JVM 堆内存jobmanager.memory.heap.size    JVM 堆内存
    堆外内存jobmanager.memory.off-heap.sizeJobManager 的堆外内存(直接内存或本地内存)默认值:128MB
    JVM Metaspacejobmanager.memory.jvm-metaspace.size

    Flink JVM 进程的 Metaspace

    默认值256mb

    JVM 开销

    jobmanager.memory.jvm-overhead.min

    jobmanager.memory.jvm-overhead.max

    jobmanager.memory.jvm-overhead.fraction

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

    三、JobManager 内存运用场景

    • Flink 框架
    • 在作业提交时(例如一些特殊的批处理 Source)及 Checkpoint 完成的回调函数中执行的用户代码

      程序运行指定jobmanager内存,参数配置 -Djobmanager.memory.process.size=8g,页面实际分配,刚好8g

  • 相关阅读:
    部署LVS—NAT模式集群
    C/C++预定义宏、 #line 、#error、 #pragma和泛型选择
    数据处理及跳转
    手机和WINDOWS电脑蓝牙连接后怎样放歌,无法选择媒体音频 蓝牙媒体音频勾选不上
    uniapp 在父组件中使用ref属性调用子组件中的方法 报错undefined
    java-net-php-python-jsp人事管理系统计算机毕业设计程序
    JavaFX:控件边框设置
    通过工作组在DAO中展开更有效的治理
    java毕业设计基于的电商平台的设计与实现Mybatis+系统+数据库+调试部署
    540 - Team Queue (UVA)
  • 原文地址:https://blog.csdn.net/m0_57320261/article/details/126750277