flink 内存配置(一):设置Flink进程内存

flink 内存配置(一):设置Flink进程内存

flink 内存配置(二):设置TaskManager内存

flink 内存配置(三):设置JobManager内存

flink 内存配置(四):内存调优和问题处理

flink 内存配置(五):网络缓存调优

Apache Flink通过严格控制各个组件的内存使用,在JVM之上提供了高效的工作负载。虽然Flink社区努力为所有配置提供合理的默认值,但由于用户部署在Flink上的应用范围很广,这并不总是可行的。为了给用户提供最大的生产价值,Flink支持对集群内的内存分配进行高层和细粒度的调优。
下面进一步描述的内存配置适用于1.10版本之后的TaskManager进程和1.11版本之后的JobManager进程。

1. 配置 Total Memory

Flink JVM进程的总进程内存(Total Process Memory)由Flink应用程序消耗的内存(Flink总内存即Total Flink Memory)和运行该进程的JVM消耗的内存组成。Flink总内存消耗包括JVM堆和非堆(直接内存或本地内存)内存的使用。如下图:

在Flink中设置内存最简单的方法是配置以下两个选项中的一个:

ComponentOption for TaskManagerOption for JobManager 
Total Flink memorytaskmanager.memory.flink.sizejobmanager.memory.flink.size
Total process memorytaskmanager.memory.process.sizejobmanager.memory.process.size

其余的内存组件将根据默认值或额外配置的选项自动调整。请参阅后面章节如何设置TaskManager和JobManager内存的其他组件。

对于本来就需要声明给Flink占用多少内存的standalone deployments部署方式来说,配置Flink总内存更合适。Flink总内存分为JVM堆内存和堆外内存。原因在于:总进程内存无关紧要,因为它也不会受控于yarn或k8s。

而对于容器化部署方式(yarn或k8s)来说,配置Flink JVM进程的总进程内存是更合适,他的大小对应于容器(container)的大小。

设置内存的另一种方法是配置Flink总内存里的各个具体组件的内存大小。具体配置见 flink 内存配置(二)和flink 内存配置(三).

上面一共说了3种配置方法:1是配置Total process memory;2是配置Total Flink memory;3是具体配置 Total Flink memory里各个组件的具体内存大小。即如下,必须显式的配置以上三种里的一种,不然flink就会启动失败。当然也不建议同时配置Total process memory和Total Flink memory,容易引发内存配置的冲突,而导致启动失败,配置其他内存组件也需要谨慎,因为它可能产生进一步的配置冲突。

for TaskManager:for JobManager:
taskmanager.memory.flink.sizejobmanager.memory.flink.size
taskmanager.memory.process.sizejobmanager.memory.process.size

taskmanager.memory.task.heap.size

and taskmanager.memory.managed.size

jobmanager.memory.heap.size

2. JVM参数

flink提供了以下jvm参数配置:

JVM ArgumentsValue for TaskManagerValue for JobManager
-Xmx and -XmsFramework + Task Heap MemoryJVM Heap Memory (*)
-XX:MaxDirectMemorySize
(always added only for TaskManager, see note for JobManager)
Framework + Task Off-heap (**) + Network MemoryOff-heap Memory (**),(***)
-XX:MaxMetaspaceSizeJVM MetaspaceJVM Metaspace

说明:

(*)请记住,根据所使用的GC算法,您可能无法使用全部堆内存。有些GC算法会为自己分配一定数量的堆内存。这将导致堆监控指标返回不同的最大值。
(**)请注意,用户代码中的本地非直接内存使用也可以作为堆外内存的一部分。
(***)只有设置了相应的 jobmanager.memory.enable-jvm-direct-memory-limit 选项,才会为 JobManager 进程添加 JVM 直接内存限制。

3. 有比例限制的组件

本节将介绍一些选项的配置细节,这些选项可以是其他内存大小的一部分比值(即乘以fraction参数),同时受到 最小 - 最大范围 的限制,例如:

  • JVM Overhead 可以是总进程内存的一部分。
  • Network Memory可以是 Flink 总内存的一部分(仅适用于 TaskManager)。

这些组件的大小必须在最大值和最小值之间,否则Flink启动将失败。最大值和最小值有默认值,或者可以通过相应的配置选项显式设置。例如,如果你只设置以下内存选项:

  • total Process memory = 1000MB,
  • JVM Overhead min = 64MB,
  • JVM Overhead max = 128MB,
  • JVM Overhead fraction = 0.1

然后JVM Overhead值就是 1000MB x 0.1 = 100MB, 在64-128MB范围之间。

注意,如果你配置相同的最大值和最小值,它会有效地固定大小为该值。

如果不显式配置组件内存,Flink会根据总内存计算出内存大小。计算值由相应的min/max选项限制。例如,如果只设置了以下内存选项:

  • total Process memory = 1000MB,
  • JVM Overhead min = 128MB,
  • JVM Overhead max = 256MB,
  • JVM Overhead fraction = 0.1

那么 JVM Overhead 将是128MB,因为由fraction比例得出的大小是100MB,小于最小值。

如果总内存及其其他组成部分的大小已经定义,那么这个比例也可能被忽略。在这种情况下,JVM Overhead就是总内存的剩余部分。派生值仍然必须在其最小/最大范围内,否则配置将失败。例如,假设只设置了以下内存选项。

  • total Process memory = 1000MB,
  • task heap = 100MB, (similar example can be for JVM Heap in the JobManager)
  • JVM Overhead min = 64MB,
  • JVM Overhead max = 256MB,
  • JVM Overhead fraction = 0.1

进程总内存的所有其他组件都有默认值,包括默认 Managed Memory 分数(或 JobManager 中的 Off-heap Memory)。那么JVM Overhead 不是这个部分(1000MB x 0.1 = 100MB),而是整个进程内存的剩余部分,这些部分要么在64-256MB范围内,要么失败。

参考网址:

https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/deployment/memory/mem_setup/

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51c嵌入式~电路~合集14

我自己的原文哦~ https://blog.51cto.com/whaosoft/12443598 一、嵌入式开发中的滤波器设计 什么是滤波器? 各种传感器信号多多少少会携带一些噪声信号,那么通过滤波器就能够更好的降低和去除噪声,还原真实有用信号。 滤波器是一个电路&…

安卓图片的着色教程(tint的使用)

目录 基础夯实:一、Tint的定义与作用二、Tint的应用场景三、Tint的使用方法四、Tint的优势五、注意事项 使用教程:一、xml文件中使用tint效果展示完整代码 二、代码中使用tint效果展示完整代码 三、使图片的主题和背景反色效果展示完整代码 四、运行例程…

Vulnhub靶机——DC-4

#环境准备 dc-4靶机:网卡nat模式 192.168.200.144 kali攻击机:网卡nat模式 192.168.200.129 #渗透过程 #信息收集 老规矩,先用nmap看看有什么端口可以搞 还是一如既往的80和22 访问80端口是一个登录界面,一上来就让我进行爆…

以太网交换安全:MAC地址漂移

一、什么是MAC地址漂移? MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。 MAC地址漂移的定义与现象 基本定义:MAC地址漂移发生在一个VLAN内的两个不同端口学习到相同的MAC地…

.NET6中WPF项目添加System.Windows.Forms引用

.NET6中WPF项目添加System.Windows.Forms引用 .NET6的WPF自定义控件默认是不支持System.Windows.Forms引用的,需要添加这个引用方法如下: 1. 在项目浏览器中找到项目右击,选择编辑项目文件(Edit Project File)。 …

Docker安装XXL-JOB分布式调度任务

一、持久化 1、下载 xxl-job 源码,找到持久化脚本 2、创建 xxl-job 数据库,将上述文件中的脚本在本库执行即可 create database xxl_job charset utf8mb4 collate utf8mb4_general_ci; 二、安装 1、下载 xxl-job 镜像 docker pull xuxueli/xxl-job-admin:2.4.1 2、创建挂…

Kafka 源码 KRaft 模式本地运行

KRaft(Kafka Raft Metadata mode),从版本 2.8.0 开始作为测试特性引入,并在后续版本中持续得到改进和增强。 KRaft 模式是指 Kafka 使用 Raft 协议来管理集群元数据的一种运行模式,这标志着 Kafka 向去除对 ZooKeeper …

杨辉三角,洗牌算法

杨辉三角 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它的左上方和右上方的数的和。 public List<List<Integer>> generate(int numRows){List<List<Integer>> ret new ArrayList<>();…

计算机网络——HTTP篇

基础篇 IOS七层网络模型 TCP/IP四层模型&#xff1f; 应⽤层&#xff1a;位于传输层之上&#xff0c;主要提供两个终端设备上的应⽤程序之间的通信&#xff0c;它定义了信息交换的格式&#xff0c;消息会交给下⼀层传输层来传输。 传输层的主要任务就是负责向两台设备进程之间…

基于SpringBoot的Java教学支持系统开发指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

MySQL:表的增删改查(进阶)

表的增删改查&#xff08;进阶&#xff09;十分重要&#xff0c;也较有难度&#xff0c;需多花时间掌握。 一、NULL约束&#xff1a; 在加null约束之前&#xff0c;id可以插入null&#xff0c;在加上null约束之后&#xff0c;id不再可以插入null。 二、unique约束&#xff1a;…

Latex中给公式加边框

1、这里使用的不是 amsmath 的 \boxed 命令, 而是 empheq 的 empheq 环境以及 xcolor 的 \fcolorbox 命令, 下面是代码, 可以分别阅读这两个手册来获取更多的信息 \documentclass{article} \usepackage{xcolor} \usepackage{empheq} \usepackage{amsmath} \begin{document}\be…

VMware Workstation安装Centos系统

准备虚拟机和镜像文件 1. 安装虚拟机 安装虚拟机VMware Workstation&#xff0c;可以去官网下载自己需要的版本&#xff0c;如果已经安装可继续看后续步骤。安装链接&#xff1a;https://vmware.710down.com/?bd_vid14012951182566760856 2.下载镜像文件 阿里云镜像地址&a…

简单又便宜的实现电脑远程开机唤醒方法

现有的远程开机方案 1&#xff09;使用向日葵开机棒 缺点是比较贵一点&#xff0c;开机棒要一百多&#xff0c;而且查了评论发现挺多差评说不稳定&#xff0c;会有断联和无法唤醒的情况&#xff0c;而且设置也麻烦&#xff0c;还需要网卡支持WOL 2&#xff09;使用远程开机卡 …

WordCloudStudio:AI生成模版为您的文字云创意赋能 !

在信息泛滥的时代&#xff0c;如何有效地将文字内容变成生动的视觉元素&#xff1f;WordCloudStudio为您提供了答案。无论您是市场营销专家、教育工作者、数据分析师&#xff0c;还是创意设计师&#xff0c;WordCloudStudio都能帮助您轻松创建引人注目的文字云。更重要的是&…

低压线路保护器在生产型企业配电系统中的应用

摘要 随着现代电力系统的发展&#xff0c;配电系统的可靠性和安全性要求日益提高。低压线路保护器在其中扮演着关键角色。本文将探讨低压线路保护器的工作原理及其在现代配电系统中的作用&#xff0c;重点介绍ALP系列低压线路保护器的功能与应用。 引言 低压线路保护器用于保…

解决:ros进行gazebo仿真,rviz没有显示传感器数据

目录 前言解决总结 前言 看了很多urdf、xacro文件的编写&#xff0c;每次看了都觉得自己会了&#xff0c;然后自己写一点&#xff0c;就是废物了。 在我这里的案例是&#xff0c;我在一个大方块上面&#xff0c;添加了两个VLP-16的雷达&#xff0c;然后我想获取雷达扫描的数据…

Android——多线程、线程通信、handler机制

Android——多线程、线程通信、handler机制 模拟网络请求&#xff0c;会阻塞主线程 private String getStringForNet() {StringBuilder stringBuilder new StringBuilder();for (int i 0; i < 100; i) {stringBuilder.append("字符串" i);}try {Thread.sleep(…

Linux(ubuntu) 部署xinference

注:在此前提我已经准备好了环境 - 文章中大部分命令我都会有说明 进阶命令就需要友友们在研究了 miniconda 安装 gpu 显卡驱动安装 xinference使用命令什么的我就不放了官方文档中很简单易懂 xinference 官方文档地址 注&#xff1a;此文章不叙述docker版安装(docker安装很简单…

界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…