MapReduce内存参数自动推断

MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重,比如将前者设置为4096MB,但后者却是“-Xmx2g”,则剩余2g实际上无法让java heap使用到。

对应patch MAPREDUCE-5785

相关知识

mapreduce.map.java.opts和mapreduce.map.memory.mb

mapreduce.map.java.opts和mapreduce.map.memory.mb参数之间,有什么联系呢?

mapreduce.map.memory.mb 是task 所申请container的内存限制。mapreduce.{map|reduce}.java.opts 是在container中运行 jvm的限制。

在yarn container这种模式下,JVM进程跑在container中,mapreduce.{map|reduce}.java.opts能够通过Xmx设置JVM最大的heap的使用,一般设置为0.75倍的memory.mb,因为需要为java code,非JVM内存使用等预留些空间

在这里插入图片描述

具体逻辑

mapreduce.map/reduce.memory.mb键的内存值如果保留为默认值-1,则现在将自动从为mapreduce.map/reduce.java.opts键指定的堆大小值系统属性(-Xmx)推断。
反之亦然,即如果指定了mapreduce.map/reduce.memory.mb值,但没有为 mapreduce.map/reduce.java.opts键提供-Xmx,则-Xmx值将从前者的值派生。

I
如果两者都未指定,mapreduce.map/reduce.memory.mb 则使用默认值1024 MB。

对于这两种转换,使用属性mapreduce.job.heap.memory-mb.ratio(默认是0.8)指定的比例因子,以说明堆使用与实际物理内存使用之间的开销。已显式指定这两组属性的现有任务或作业代码将不受此推断更改的影响。

公式

mapreduce.map/reduce.memory.mb *mapreduce.job.heap.memory-mb.ratio =mapreduce.map/reduce.java.opts

参数

<property><name>mapreduce.job.heap.memory-mb.ratio</name><value>0.8</value><description>The ratio of heap-size to container-size. If no -Xmx isspecified, it is calculated as(mapreduce.{map|reduce}.memory.mb * mapreduce.heap.memory-mb.ratio).If -Xmx is specified but not mapreduce.{map|reduce}.memory.mb, it iscalculated as (heapSize / mapreduce.heap.memory-mb.ratio).</description>
</property>

主要代码

public String getTaskJavaOpts(TaskType taskType) {String javaOpts = getConfiguredTaskJavaOpts(taskType);if (!javaOpts.contains("-Xmx")) {float heapRatio = getFloat(MRJobConfig.HEAP_MEMORY_MB_RATIO,MRJobConfig.DEFAULT_HEAP_MEMORY_MB_RATIO);if (heapRatio > 1.0f || heapRatio < 0) {LOG.warn("Invalid value for " + MRJobConfig.HEAP_MEMORY_MB_RATIO+ ", using the default.");heapRatio = MRJobConfig.DEFAULT_HEAP_MEMORY_MB_RATIO;}int taskContainerMb = getMemoryRequired(taskType);int taskHeapSize = (int)Math.ceil(taskContainerMb * heapRatio);String xmxArg = String.format("-Xmx%dm", taskHeapSize);LOG.info("Task java-opts do not specify heap size. Setting task attempt" +" jvm max heap size to " + xmxArg);javaOpts += " " + xmxArg;}return javaOpts;}@Privatepublic int getMemoryRequired(TaskType taskType) {int memory = 1024;int heapSize = parseMaximumHeapSizeMB(getConfiguredTaskJavaOpts(taskType));float heapRatio = getFloat(MRJobConfig.HEAP_MEMORY_MB_RATIO,MRJobConfig.DEFAULT_HEAP_MEMORY_MB_RATIO);if (taskType == TaskType.MAP)  {if (get(MRJobConfig.MAP_MEMORY_MB) == null && heapSize > 0) {memory = (int) Math.ceil(heapSize / heapRatio);LOG.info(MRJobConfig.MAP_MEMORY_MB +" not specified. Derived from javaOpts = " + memory);} else {memory = getInt(MRJobConfig.MAP_MEMORY_MB,MRJobConfig.DEFAULT_MAP_MEMORY_MB);}} else if (taskType == TaskType.REDUCE) {if (get(MRJobConfig.REDUCE_MEMORY_MB) == null && heapSize > 0) {memory = (int) Math.ceil(heapSize / heapRatio);LOG.info(MRJobConfig.REDUCE_MEMORY_MB +" not specified. Derived from javaOpts = " + memory);} else {memory = getInt(MRJobConfig.REDUCE_MEMORY_MB,MRJobConfig.DEFAULT_REDUCE_MEMORY_MB);}}return memory;}

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

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

相关文章

《Balanced Meta-Softmax for Long-Tailed Visual Recognition》阅读笔记

论文标题 《Balanced Meta-Softmax for Long-Tailed Visual Recognition》 用于长尾视觉识别的平衡元-Softmax 作者 Jiawei Ren、Cunjun Yu、Shunan Sheng、Xiao Ma、Haiyu Zhao、Shuai Yi 和 Hongsheng Li 商汤科技、南洋理工大学、新加坡国立大学和香港中文大学多媒体实…

JSP实现数据传递与保存

1.HTML页面转换JSP页面 直接再HTML页面最顶端添加page指令&#xff0c;修改文件后缀名&#xff1b;反之&#xff1b; 2.JSP内置对象 对象 描述 request 每当客户端请求JSP页面时&#xff0c;JSP引擎会制造一个新的request对象来代表这个请求。 response 当服务器创建req…

创意之光:NCDA设计大赛获奖作品解读与字体设计的卓越之处

第12届大赛简介 - 未来设计师全国高校数字艺术设计大赛f&#xff08;NCDA&#xff09;开始啦&#xff01;未来设计师全国高校数字艺术设计大赛&#xff08;NCDA&#xff09;是由工信部人才交流中心主办&#xff0c;教育部中国高等教育学会认定&#xff0c;教育厅发文立项&#…

家里闲置电脑不知该如何利用?不如做点项目帮自己生钱

现在手机已经逐步替代电脑&#xff0c;许多家庭的老电脑都放在家里吃灰&#xff0c;其实完全可以支棱起来&#xff0c;做些项目或者副业来赚取收入&#xff0c;补贴家用。 虽然手机的功能是很强大&#xff0c;但是在一些项目目前&#xff0c;还是不如电脑的完善&#xff0c;所以…

ArcGIS学习(十三)多源数据下的城市街道功能评估

ArcGIS学习(十三)多源数据下的城市街道功能评估 本任务带来的内容是多元数据下的城市街道功能评估。本任务包括两个关卡: 城市街道空间中观解读 城市街道功能详细评价 首先,我们来看看本任务的分析思路。 1.城市街道空间中观解读 下面我们正式进入第一关的内容一- 城市…

【Python】新手入门(1):探索标识符

【Python】新手入门&#xff08;1&#xff09;&#xff1a;探索标识符 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

项目一:踏上Java开发之旅(2023软件1班)

文章目录 一、实战概述二、实战步骤任务1&#xff1a;安装配置JDK开发第一个Java程序1、安装JDK2、配置Java环境变量3、开发第一个Java程序&#xff08;1&#xff09;编写源程序 - HelloWorld.java&#xff08;2&#xff09;编译成字节码文件 - HelloWorld.class&#xff08;3&…

Web Maven

目录 1 简介2 Maven的安装3 Maven下载依赖jar时常见问题4 Maven项目创建步骤5 Maven国内中央仓库的更换6 maven项目的配置文件pom.xml介绍7 Maven项目操作示例 1 简介 Apache Maven 是一种用于软件项目管理工具&#xff0c;基于 Project Object Model&#xff08;POM&#xff…

将预测的分割结果可视化

一、Login | MaCVi 该网站下注册一个账号&#xff0c;登录进去 二、跑完infer的代码后&#xff0c;在output文件下面存储预测的分割结果mask&#xff0c;将其打包上传到macvi.org相同的赛道 打包tip: #压缩文件 zip -r test.zip file然后利用Xtfp从服务器传输到本地&#xff…

EasyExcel的使用

1、简介 在日常项目开发中&#xff0c;经常会遇到解析excel文件中的数据、或者将某些数据导出成excel文件的需求&#xff0c;目前Java解析、生成Excel比较有名的框架有Apache POI、jxl&#xff0c;但是它们都存在一个严重的问题就是非常的耗内存。POI有一套Sax模式的API可以在一…

高质量IP代理哪里有?怎样选择合适的代理ip?

IP地址是由IP协议所提供的一种统一的地址格式&#xff0c;通过为每一个网络和每一台主机分配逻辑地址的方式来屏蔽物理地址的差异。根据IP地址的分配方式&#xff0c;IP可以分为动态IP与静态IP两种。 对于我们企业与用户来说&#xff0c;静态代理ip和动态代理ip&#xff0c;都会…

pytest 教程

1. 安装pytest 目前我使用的python版本是3.10.8 pip install pytest命令会安装下面的包&#xff1a; exceptiongroup-1.2.0-py3-none-any.whl iniconfig-2.0.0-py3-none-any.whl packaging-23.2-py3-none-any.whl pluggy-1.4.0-py3-none-any.whl pytest-8.0.2-py3-none-any.…