任务提交时的一些yarn设置(通用客户端模式)

指定并行度                        -p 5 \

指定yarn队列                     -Dyarn.application.queue=xxx \

指定JM总进程的大小        -Djobmanager.memory.process.size=1024mb \

指定每个TM的总进程大小,一般是 2-8g,yarn默认最大给8g    -Dtaskmanager.memory.process.size=1024mb \

指定每个TM的slot数         -Dtaskmanager.numberOfTaskSlots=2 \

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

flink 内存模型如下图:

1.flink框架内存使用了堆上内存和堆外内存,不计入slot资源

2、task执行的内存使用了堆上内存和堆外内存

3、网络缓冲内存:网络数据交换所使用的堆外内存大小,如网络数据交换缓冲区

4、框架堆外内存、task堆外内存、网络缓冲内存,都在堆外的直接内存里。

5、管理内存:flink管理的堆外内存。用于管理排序、哈希表、缓存中间结果及RocksDB State Backend 的本地内存

6、jvm特有内存:jvm本身占用的内存,包括元空间和执行开销

7、flink使用内存=框架堆内和堆外内+Task堆内和堆外内存+网络缓冲内存+管理内存

8、进程内存=Flink内存+jvm特有内存

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

内存模型详解:

jvm特定内存:jvm本身使用的内存,包含jvm的metaspace和over-head

①JVM metaspace:jvm元空间

taskmanager.memory.jvm-metaspace.size 默认256mb

②JVM over-head执行开销:JVM执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。

taskmanager.memory.jvm-overhead.fraction, 默认0.1

taskmanager.memory.jvm-overhead.min,      默认192mb

taskmanager.memory.jvm-overhead.max,     默认1gb

总进程内存*fraction,如果小于配置的min或大于配置的max,则使用min/max

框架内存:flink框架,即TaskManager本身所占用的内存,不计入slot的资源中。

堆内:taskmanager.memory.framework.heap.size, 默认128mb

堆外:taskmanager.memory.framework.off-heap.size,默认128mb

Task内存:Task执行用户代码时所使用的内存

堆内:taskmanager.memory.task.heap.size,默认none,由flinl内存口扣除掉其他部分的内存得到、

堆外:taskmanager.memory.task.off-size,默认0,表示不使用堆外内存

网络内存:网络数据交换所使用的堆外内存大小,如网络数据交换缓冲区 

堆外:taskmanager.memory.network.fraction,默认0.1

   taskmanager.memory.network,min,默认64mb

   taskmanager.memory.network.max,默认1gb

flink内存*fraction,如果小于配置的min或大于配置的max,则使用min/max

管理内存:用于RocksDB State Backend 的本地内存和批的排序、哈希表、缓存中间结果。

堆外:taskmanager.memory.managed.fraction,默认0.4

   taskmanager.memory.managed.size,默认none

如果size没指定,则等于flink内存*fraction

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

实际案例

基于yarn模式,一般参数指定的是总进程内存,taskmanager.memory.process.size,

如果该大小为4G,每一块内存得到大小如下:

①计算flink内存

jvm元空间256m

jvm执行开销:4g*0.1=409.6,在[192.1g]之间,最终结果409.6m

flink内存=4g-256m-409.6m=3430.4m

②网络内存=3430.4*0.1=343.04,在[64m,1g]之间,最终结果343.04m

③托管内存=3430.4m*0.4=1372.16m

④框架内存,堆内和堆外都是128m

⑤Task堆内内存=3430.4m-128m-128m-343.04m-1372.16m=1459.2m    堆内内存是总内存减去所有其他的内存。在总大小不变的情况小想调大堆内内存,就把其他内存调小。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

提交程序,查看flink ui结果。和计算的几乎一致

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

JVM参数与内存

jvm Options:

-Xmx1664299798

-Xms1664299798     jvm堆内内存大小(最大与最小)  约1587m=Task堆内+框架堆内

-XX:MaxDirectMemorySize=493921243 jvm堆外内存大小    约471m=Task堆外+框架堆外+网络内存

-XX:MaxMetaspaceSize=268435456   jvm元空间大小,约256m

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

调优原则,根据程序运行时每块内存的使用情况来调整。

flink内存模型详解与案例的更多相关文章

  1. 云时代架构阅读笔记六——Java内存模型详解(二)

    承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(At ...

  2. Java 内存模型详解

    概述 Java的内存模型(Java Memory Model )简称JMM.首先应该明白,Java内存模型是一个规范,主要规定了以下两点: 规定了一个线程如何以及何时可以看到其他线程修改过后的共享变量 ...

  3. 02-java性能调优-JVM内存模型详解

    JVM整体结构与内存模型之间的关系 JVM整体结构图如下: 先贴一个代码: package com.jvm.jvmCourse2; public class Math { public static ...

  4. Java虚拟机:内存模型详解

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 我们都知道,当虚拟机执行Java代码的时候,首先要把字节码文件加载到内存,那么这些类的信息都存放在内存中的哪个区域呢?当我们创建一个对象实 ...

  5. java内存模型详解

    对于本篇文章,将从四个概念来介绍:内存模型基础,重排序,顺序一致性和happens-before 1.内存模型基础 在并发编程中,有两个关键问题:线程之间如何通信和如何同步.由此而引出了两种并发模型: ...

  6. 深度历险:Redis 内存模型详解

    https://mp.weixin.qq.com/s/Gp6Ur7omGY6ZqDWygU2meQ Redis 是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说 Redi ...

  7. JVM内存模型详解

    内存模型 内存模型如下图所示 堆 堆是Java虚拟机所管理的内存最大一块.堆是所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域唯一的目的就是存放对象实例.所有的对象实例都在这里分配内存 Ja ...

  8. JMM内存模型详解(一)

    本文开始死磕JMM(Java内存模型)由于知识点较多,分来写 该文为JMM第一篇 技术往往是枯燥的,本文文字较多 1. JMM是什么? 其实JMM很好理解,我简单的解释一下,在Java多线程中我们经常 ...

  9. 云时代架构阅读笔记五——Java内存模型详解(一)

    什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致 ...

随机推荐

  1. 三大数据库 sequence 之华山论剑 (下篇)

    MySQL 5.7 MYISAM ENGINE 以下是 MySQL 5.7 MYISAM ENGINE 中的运行结果 mysql> CREATE TABLE tb_test5 ( -> t ...

  2. Shell脚本编写登陆小程序.sh

    转至:https://www.cnblogs.com/gaohongyu/articles/12072594.html #!/bin/bash #Author:GaoHongYu #QQ:106176 ...

  3. [炼丹术]基于SwinTransformer的目标检测训练模型学习总结

    基于SwinTransformer的目标检测训练模型学习总结 一.简要介绍 Swin Transformer是2021年提出的,是一种基于Transformer的一种深度学习网络结构,在目标检测.实例 ...

  4. 文件上传漏洞之MIME类型过滤

    上传的时候修改Content-Type为image/jpeg等程序指定的类型即可. 修改为: 使用蚁剑连接测试

  5. 原生JS实现拼图游戏

    最近无聊,练练原生JS:实现拼图游戏.两种玩法:第一种是单击元素进行交换位置:第二种是拖拽元素进行位置交换.首先需要上传图片并进行回显(需要用到FileReader):下面是部分截图: 可以自行设置切 ...

  6. WPF中Enter 焦点转移方法

    1.Set the TabIndex="16"2. private void detailGrid_Keydown(object sender, KeyEventArgs e) { ...

  7. [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑

    [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 1. 继承关系 1.1 角 ...

  8. JavaWeb 03_创建servlet项目(详细)

    一.创建web项目 1. File--New--Project 2. 设置项目相关信息 3. 设置项目名称及工作空间 4. web项目目录结构如下 二.Servlet的实现 1. 新建包---类    ...

  9. dotnet 6 使用 string.Create 提升字符串创建和拼接性能

    本文告诉大家,在 dotnet 6 或更高版本的 dotnet 里,如何使用 string.Create 提升字符串创建和拼接的性能,减少拼接字符串时,需要额外申请的内存,从而减少内存回收压力 本文也 ...

  10. Windows 7/8 64位系统 不能注册32位dll 文件的解决方案

    这几天碰到一个问题,运行一个易语言开发的软件出现以下错误.我的系统是 Windows7 64 位 专业版.在系统盘 windows/system32  下查找 dm.dll.但是没有这个文件.于是我到 ...