zoukankan      html  css  js  c++  java
  • Flink内存溢出

    Flink内存模型

    此图是基于flink1.12版本.

    一个taskmanager给了6g内存,可以有很清楚的看到各个部分占用的内存,还是实时变化的.

    名词解释

    组件 配置项 描述
    Framework Heap Memory taskmanager.memory.framework.heap.size (高级参数,一般不需要用户配置)分配给 Flink 框架的 JVM 堆内存(默认128MB)
    Task Heap Memory taskmanager.memory.task.heap.size 分配给 operator 和用户代码的 JVM 堆内存
    Managed memory taskmanager.memory.managed.size(默认none) taskmanager.memory.managed.fraction(默认0.4) 被 flink 管理的本地内存,用于 batch 作业的中间结果排序(sort)、散列表(hash)、缓存(caching )和 Streaming 作业的 RocksDB state backend
    Framework Off-heap Memory taskmanager.memory.framework.off-heap.size(默认128 mb) (高级参数)分配给 Flink 框架的 Off-heap direct 内存
    Task Off-heap Memory taskmanager.memory.task.off-heap.size 分配给 task operator 的 Off-heap direct 内存,默认(0 bytes)
    Network Memory taskmanager.memory.network.min(默认64 mb) taskmanager.memory.network.max(默认1 gb) taskmanager.memory.network.fraction(默认0.1) 为 tasks 之间的数据元素交换保留的 Off-heap direct(例如,通过网络进行传输的缓冲区),它是 Total Flink Memory 的一个有上下限的细分组件
    JVM metaspace taskmanager.memory.jvm-metaspace.size(默认96 mb) flink-1.10.0 为 96 mb flink-1.10.1及flink-1.11为256 mb 更改原因见 FLINK-16406 Flink JVM 进程的元数据空间大小,为本地内存
    JVM Overhead taskmanager.memory.jvm-overhead.min(默认192 mb) taskmanager.memory.jvm-overhead.max(默认1 gb) taskmanager.memory.jvm-overhead.fraction(默认0.1) 为 JVM 进程预留的其他本地内存,用于线程栈、代码缓存、垃圾收集。它是 Total Process Memory(整个进程) 的一个有上下限的细分组件

    如您所见,某些内存组件的大小可以通过相应的选项简单地设置。其他组件可以使用多个选项进行调优。

    中文名

    • 堆内存
      • 框架堆内存(Framework Heap Memory):用于 Flink 框架的 JVM 堆内存(进阶配置)。
      • 任务堆内存(Task Heap Memory):用于 Flink 应用的算子及用户代码的 JVM 堆内存。
    • 堆外内存
      • 托管内存(Managed memory):由 Flink 管理的用于排序、哈希表、缓存中间结果及 RocksDB State Backend 的本地内存。
      • 框架堆外内存(Framework Off-heap Memory):用于 Flink 框架的堆外内存(直接内存或本地内存)(进阶配置)。
      • 任务堆外内存(Task Off-heap Memory):用于 Flink 应用的算计及用户代码的堆外内存(直接内存或本地内存)。
      • 网络内存(Network Memory):用于任务之间数据传输的直接内存(例如网络传输缓冲)。该内存部分为基于 Flink 总内存的受限的等比内存部分。

    内存溢出发生在 Framework Heap Memory

    由于我的程序内存溢出Framework Heap Memory 满了,但是 Managed memory还有很多空余的,我这边的计算并不多, 我就把Managed memory 调小了,配置文件中taskmanager.memory.managed.size: 1g

  • 相关阅读:
    约瑟夫问题的JAVA实现(借鉴别人的代码+自己分析理解)
    ubuntu 与windows双系统记录
    重装windows7
    浏览器专题之缓存url请求
    js实现函数重载
    用python实现网上书店
    flex与bison应用实例
    前端小游戏之拼图功夫熊猫
    细说javascript的对象
    [LeetCode 1712] Ways to Split Array Into Three Subarrays
  • 原文地址:https://www.cnblogs.com/weijiqian/p/14157339.html
Copyright © 2011-2022 走看看