【大数据】Flink 内存管理(四):TaskManager 内存分配(实战篇)

Flink 内存管理》系列(已完结),共包含以下 4 篇文章:

  • Flink 内存管理(一):设置 Flink 进程内存
  • Flink 内存管理(二):JobManager 内存分配(含实际计算案例)
  • Flink 内存管理(三):TaskManager 内存分配(理论篇)
  • Flink 内存管理(四):TaskManager 内存分配(实战篇)

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

Flink 内存管理(四):TaskManager 内存分配(实战篇)

  • 1.单独分配 Total Process Size
  • 2.单独分配 Total Flink Size
  • 3.单独分配 Heap Size && Managed Memory
  • 4.分配 Total Process Size 和 Heap Size && Managed Memory
  • 5.分配 Total Flink Size 和 Heap Size && Managed Memory
  • 6.内存分配小结

在 《Flink 内存管理(一):设置 Flink 进程内存》中我们提到,必须使用下述三种方法之一配置 Flink 的内存(本地执行除外),否则 Flink 启动将失败。这意味着必须明确配置以下选项子集之一,这些子集没有默认值。

序号for TaskManagerfor JobManager
1️⃣taskmanager.memory.flink.sizejobmanager.memory.flink.size
2️⃣taskmanager.memory.process.sizejobmanager.memory.process.size
3️⃣taskmanager.memory.task.heap.sizetaskmanager.memory.managed.sizejobmanager.memory.heap.size

1.单独分配 Total Process Size

单独分配 Total Process Size,其它的组件都会自动分配。

taskmanager.memory.process.size: 2000m

在这里插入图片描述

内存分配步骤如下:

  • 首先 Total Process Size = 2000 M = 2000M =2000M
  • 因为没有显示分配组件中的任何参数,所以 JVM Overhead = 2000 M × 0.1 = 200 M = 2000M × 0.1 = 200M =2000M×0.1=200M
  • JVM Metaspace = 256 M = 256M =256M
  • ⭐ 所以 Native Memory = JVM Overhead + JVM Metaspace = 456 M = 456M =456M
  • Total Flink Size = 2000 M − 200 M − 256 M = 1544 M B = 1.508 G B = 2000M - 200M - 256M = 1544MB = 1.508GB =2000M200M256M=1544MB=1.508GB
  • Network Memory = 1544 × 0.1 = 154.4 M = 1544 × 0.1 = 154.4M =1544×0.1=154.4M
  • Task Off-Heap = = = 0 M B 0MB 0MB(默认)
  • Framework Off-Heap = = = 128 M 128M 128M(默认)
  • ⭐ 所以 Total Direct Memory = 154.4 M + 0 + 128 M = 282.4 M = 154.4M + 0 + 128M = 282.4M =154.4M+0+128M=282.4M
  • Managed Memory = 1544 M B × 0.4 = 617.6 M = 1544MB × 0.4 = 617.6M =1544MB×0.4=617.6M
  • Total JVM Heap Memory = 1544 M − 282.4 M − 617.6 M = 644 M B = 1544M - 282.4M - 617.6M = 644MB =1544M282.4M617.6M=644MB
  • Framework Heap = 128 M = 128M =128M
  • Task Heap = 644 M − 128 M = 516 M = 644M - 128M = 516M =644M128M=516M

可以与以下的日志进行对比,完全能对上,😁😁😁!

在这里插入图片描述

2.单独分配 Total Flink Size

taskmanager.memory.flink.size: 2000m

假如直接只分配 taskmanager.memory.flink.size: 2000m

  • Total Flink Size = 2000 M = 2000M =2000M
  • Managed Memory = 2000 M × 0.4 = 800 M = 2000M × 0.4 = 800M =2000M×0.4=800M
  • NetWork Memory = 2000 M × 0.1 = 200 M = 2000M × 0.1 = 200M =2000M×0.1=200M
  • Framework Off-Heap = 128 M = 128M =128M
  • Task Off-Heap = 0 B y t e = 0 M = 0Byte = 0M =0Byte=0M
  • ⭐ 所以 Total Direct Memory = 200 M + 128 M + 0 M = 328 M = 200M + 128M + 0M= 328M =200M+128M+0M=328M
  • Total Off-Heap Memory = 800 M + 328 M = 1128 M = 800M + 328M = 1128M =800M+328M=1128M
  • Total JVM Heap = 2000 M − 800 M − 328 M = 872 M = 2000M - 800M - 328M = 872M =2000M800M328M=872M
  • Framework Heap = 128 M = 128M =128M
  • Task Heap = 872 M − 128 M = 744 M = 872M - 128M = 744M =872M128M=744M
  • JVM MetaSpace = 256 M = 256M =256M(默认)
  • JVM Overhead = ( = ( =(JVM Overhead + 256 M +\ 256M + 256M Metaspace + 2000 M +\ 2000M + 2000M Total Flink Size ) × 0.1 ) × 0.1 )×0.1,求解 JVM Overhead = 250.667 M = 250.667M =250.667M 192 M B ~ 1 G B 192MB ~ 1GB 192MB1GB,生效
  • Total Process Size = 2000 M + 256 M + 250.667 M = 2506.667 M = 2.448 G B = 2000M + 256M + 250.667M = 2506.667M = 2.448GB =2000M+256M+250.667M=2506.667M=2.448GB

在这里插入图片描述

3.单独分配 Heap Size && Managed Memory

taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
  • Framework Heap = 128 M = 128M =128M(默认)
  • Task Heap = 1000 M = 1000M =1000M(配置)
  • Total JVM Heap = 1000 M + 128 M = 1128 M = 1.102 G B = 1000M + 128M = 1128M = 1.102GB =1000M+128M=1128M=1.102GB
  • Managed Memory = 1000 M = 1000M =1000M(配置)
  • Framework Off-Heap = 128 M = 128M =128M
  • Task Off-Heap = 0 M = 0M =0M
  • NetWork = = = Total Flink Size × 0.1 ×\ 0.1 × 0.1 = ( = ( =(NetWork + 1128 M + 1000 M + 128 M + 0 M ) × 0.1 +\ 1128M + 1000M + 128M + 0M) × 0.1 + 1128M+1000M+128M+0M)×0.1,计算得到 Network = 250.667 M B = 250.667MB =250.667MB,处于 64 M B ~ 1 G B 64MB ~ 1GB 64MB1GB,有效
  • ⭐ 所以 Total Direct Memory = 128 M + 250.667 M = 378.667 M = 128M + 250.667M = 378.667M =128M+250.667M=378.667M
  • Total Flink Size = 1128 M + 1378.667 M = 2506.667 M = 2.448 G B = 1128M + 1378.667M = 2506.667M = 2.448GB =1128M+1378.667M=2506.667M=2.448GB
  • JVM Metaspace = 256 M = 256M =256M(默认)
  • JVM Overhead = ( = ( =(JVM Overhead + 1128 M + 1000 M + 378.667 M + 256 M ) × 0.1 = 306.963 M +\ 1128M + 1000M + 378.667M + 256M) × 0.1 = 306.963M + 1128M+1000M+378.667M+256M)×0.1=306.963M,处于 192 M ~ 1 G B 192M ~ 1GB 192M1GB,有效
  • Total Process Size = 2506.667 M + 256 M + 306.963 M = 3069.63 M = 2.998 G = 2506.667M + 256M + 306.963M = 3069.63M = 2.998G =2506.667M+256M+306.963M=3069.63M=2.998G

在这里插入图片描述

4.分配 Total Process Size 和 Heap Size && Managed Memory

指定 Total Process Size,同时显式分配组件 JVM HeapMamaged Memory

taskmanager.memory.process.size: 3000m
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
  • Total Process Size = 3000 M = 3000M =3000M
  • Framework Heap = 128 M = 128M =128M(默认)
  • Task Heap = 1000 M = 1000M =1000M(配置)
  • Total JVM Heap = = = Framework Heap + + + Task Heap = 128 M + 1000 M = 1128 M = 1.102 G = 128M + 1000M = 1128M = 1.102G =128M+1000M=1128M=1.102G
  • Managed Memory = 1000 M = 1000M =1000M(配置)
  • Framework Off-Heap = 128 M = 128M =128M(默认)
  • Task Off-Heap = 0 M = 0M =0M(默认)
  • Network Memory = ( = ( =(Network Memory + 1128 M + 1128 M ) × 0.1 = 250.667 M +\ 1128M + 1128M) × 0.1 = 250.667M + 1128M+1128M)×0.1=250.667M,在 64 M ~ 1 G B 64M ~ 1GB 64M1GB 之间,满足要求
  • Total Off-Heap = 1000 M + 128 M + 250.667 M + 0 M = 1378.667 M = 1.346 G B = 1000M + 128M + 250.667M + 0M = 1378.667M = 1.346GB =1000M+128M+250.667M+0M=1378.667M=1.346GB
  • Total Flink Size = 1128 M + 1378.667 M = 2506.667 M = 2.448 G B = 1128M + 1378.667M = 2506.667M = 2.448GB =1128M+1378.667M=2506.667M=2.448GB
  • JVM Metaspace = 256 M = 256M =256M
  • JVM Overhead = 3000 M − 2506.667 M − 256 M = 237.333 M = 3000M - 2506.667M - 256M = 237.333M =3000M2506.667M256M=237.333M,在 192 M ~ 1 G B 192M ~ 1GB 192M1GB 之间,满足要求

在这里插入图片描述

5.分配 Total Flink Size 和 Heap Size && Managed Memory

指定 Total Flink Size,同时显式分配组件 JVM HeapMamaged Memory

taskmanager.memory.flink.size: 3000m
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
  • Total Flink Size = 3000 M = 2.93 G B = 3000M = 2.93GB =3000M=2.93GB(配置)
  • Managed Memory = 1000 M = 1000M =1000M(配置)
  • Task Heap = 1000 M = 1000M =1000M(配置)
  • Framework Heap = 128 M = 128M =128M(默认)
  • Total JVM Heap = = = Framework Heap + Task Heap = 128 M + 1000 M = 1128 M = 128M + 1000M =1128M =128M+1000M=1128M
  • Total Off-Heap Memory = 3000 M − 1128 M = 1872 M = 1.828 G B = 3000M - 1128M = 1872M = 1.828GB =3000M1128M=1872M=1.828GB
  • Direct Memory = = = Total Off-Heap Memory - Managed Memory = 1872 M − 1000 M = 872 M = 1872M - 1000M = 872M =1872M1000M=872M
  • Task Off-Heap = 0 M = 0M =0M(默认)
  • Framework Off-Heap = 128 M = 128M =128M(默认)
  • Network Memory = = = Direct Memory − - Task Off-Heap - Framework Off-Heap = 872 M − 0 M − 128 M = 744 M = 872M - 0M - 128M = 744M =872M0M128M=744M
  • JVM Metaspace = 256 M = 256M =256M(默认)
  • JVM Overhead = ( = ( =(JVM Overhead + 3000 M + 256 M ) × 0.1 +\ 3000M + 256M) × 0.1 + 3000M+256M)×0.1,计算得到 JVM Overhead = 361.778 M = 361.778M =361.778M,处于 192 M ~ 1 G 192M~1G 192M1G 之间,符合条件
  • Total Process Size = 3000 M + 256 M + 361.778 M = 3617.778 M = 3.533 G B = 3000M + 256M + 361.778M = 3617.778M = 3.533GB =3000M+256M+361.778M=3617.778M=3.533GB

在这里插入图片描述

6.内存分配小结

在 Flink 的集群内存分配的过程中,我们大致可以通过 3 3 3 种方式进行分配。

  • 指定 Total Process SizeTotal Flink Size,取决于你用什么方式部署。
  • 单独指定某个组件,比如 Task-Heap 的大小,其它的组件都会被推导出来。
  • 指定 Total Process / Flink Size && Heap or Off-Heap 其中之一,其它的组件通过默认值进行填充或者进推导,如:
    • Total Flink Size = Total Heap Size + Total Off-Heap Size
    • Total Heap Size = Task Heap + Framework Heap
    • Total Off-Heap = Task Off-Heap + Framework Off-Heap + Network Memory + Managed Memory
    • Network = Total Flink Size × 0.1 ×\ 0.1 × 0.1(没有指定其它组件情况下)
    • JVM Overhead = Total Process Size × 0.1 ×\ 0.1 × 0.1(没有指定其它组件情况下)
    • … …

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809202.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

什么是媒体发稿?发稿媒体分类及发稿流程

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体发稿是一种企业推广和宣传的手段,通过媒体渠道传递企业信息和形象。 媒体发稿的含义在于,当企业有新闻、事件或其他消息需要对外公布时,可以选择…

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 阅读笔记

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 论文地址:https://arxiv.org/abs/2307.14338 源代码:https://github.com/yandex-research/tabular-dl-tabr 摘要 针对表格数据问题(例如分类、回归)的深度学习&a…

阿里云-系统盘-磁盘扩容

阿里云系统磁盘扩容 之前是测试环境磁盘用的默认的有 40G,后面升级到正式的 磁盘怕不够用打算升级到 100G, 系统镜像: Alibaba Cloud Linux 3.2104 LTS 64 位 磁盘 ESSD 40G 升级步骤: 扩容与创建快照 在阿里云后台首先去扩容…

HTML+CSS+JS:轮播组件

效果演示 一个具有动画效果的卡片元素和一个注册表单&#xff0c;背景为渐变色&#xff0c;整体布局简洁美观。 Code <div class"card" style"--d:-1;"><div class"content"><div class"img"><img src"./i…

stream流-> 判定 + 过滤 + 收集

List<HotArticleVo> hotArticleVos hotArticleVoList .stream() .filter(x -> x.getChannelId().equals(wmChannel.getId())).collect(Collectors.toList()); 使用Java 8中的Stream API对一个名为hotArticleVoList的列表进行过滤操作&#xff0c;筛选出符合指定条件…

计算机设计大赛 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

java面试(网络)

TCP和UDP有什么区别&#xff1f;TCP三次握手不是两次&#xff1f; TCP&#xff1a;面向连接&#xff0c;可靠的&#xff0c;传输层通信协议。点对点&#xff0c;占用资源多&#xff0c;效率低。 UDP&#xff1a;无连接&#xff0c;不可靠&#xff0c;传输层通信协议。广播&…

国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托--校园招聘历年题库和真题

作为准备参加国有企业校园招聘的应聘者&#xff0c;掌握相关企业的招聘试题资料是至关重要的。国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托等知名国有企业在中国经济中扮演着重要的角色&#xff0c;每年都会举行校园招聘活动&#xff0c;吸引大批毕业生和应…

【国产MCU】-CH32V307-定时器同步模式

定时器同步模式 文章目录 定时器同步模式1、定时器同步模式介绍2、驱动API介绍3、定时器同步模式实例1、定时器同步模式介绍 CH32V307的定时器能够输出时钟脉冲(TRGO),也能接收其他定时器的输入(ITRx)。不同的定时器的ITRx的来源(别的定时器的TRGO)是不一样的。 通用定…

RCE (Remote ????? execution) --->CTF

看这个标题就知道今天的内容不简单&#xff01;&#xff01;&#xff01;&#xff01; 那么就来讲一下我们的RCE吧 目录 ​编辑 1. &&#xff1f; |&#xff1f; ||&#xff1f; &&&#xff1f; 2.PHP命令执行函数&& ||"" 1."" &…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试&#xff08;失败-->成功&#xff09;2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容&#xff0c;飞书文档地址在https://d…

【LNMP】云导航项目部署及环境搭建(复杂)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…

基于IDEA+Mysql+Tomcat+Vue开发的框架的汇美食电子商城的设计与实现

基于IDEAMysqlTomcatVue开发的框架的汇美食电子商城的设计与实现 项目介绍&#x1f481;&#x1f3fb; 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于Vue框架的汇美食电子商城的设计与实现的开发全过程。通过分…

HuggingFists系统功能介绍(1)--系统概述

HuggingFists是一款低代码AI应用工具&#xff0c;力图发展为LangChain的低代码平替工具。HuggingFists发起于数由科技的Sengee数据科学计算框架&#xff0c;因此其界面风格继承了数据科学工具的很多特征。有别于完全基于LangChain衍生出的低代码工具Flowise&#xff0c;其风格更…

一个具有强大PDF处理能力的.Net开源项目

PDF具有跨平台、可读性强、不可修改性、无需特定阅读软件、内容安全等好处&#xff0c;在工作中经常都会用到。 所以&#xff0c;我们在项目开发中&#xff0c;经常需要生成PDF的文件&#xff0c;或者把Html、Xml等文件转化为PDF格式。 今天给大家推荐一个具有PDF处理能力的.…

贪心算法学习

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效。然而&#xff0c;要注意的是贪心…

React组件详解

React组件分为两大类 1.函数组件 2.类组件&#xff08;最常用&#xff09; 组件化 import ReactDom from "react-dom";// // 1.通过函数创建一个组件 // 2.函数名字必须大写开头 // 3.函数必须有返回值 function Func1() {return <h2>这是一个基础组件</h…

5.2 Ajax 数据爬取实战

目录 1. 实战内容 2、Ajax 分析 3、爬取内容 4、存入MySQL 数据库 4.1 创建相关表 4.2 数据插入表中 5、总代码与结果 1. 实战内容 爬取Scrape | Movie的所有电影详情页的电影名、类别、时长、上映地及时间、简介、评分&#xff0c;并将这些内容存入MySQL数据库中。 2、…

React组件通讯

组件通讯 组件是一个独立的单元&#xff0c;默认情况下组件只能自己使用自己的数据。在组件化过程中&#xff0c;我们将一个完整的功能拆分成多个组件&#xff0c;便于更好的完成整个应用的功能。 Props 组件本来是封闭的&#xff0c;要接受外部数据应该可以通过Props来实现…

Jenkins自动化部署构建说明(8)

Jenkins构建说明 - 20211012 什么是Jenkins? Jenkins 是一款流行的开源持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。它是一个自动化的周期性的集成测试过程&#xff0c;从检出代…