容器使用超过了虚拟内存的限制大小,该容器被杀死,导致作业提交失败
来源:互联网 发布:张铁林书法 知乎 编辑:程序博客网 时间:2024/04/30 14:18
is running beyond virtual memory limits. Current usage: 53.7 MB of 1 GB physical memory used; 4.4 GB of 2.1 GB virtual memory used. Killing container.
容器使用超过了虚拟内存的限制大小,该容器被杀死,导致作业提交失败
physical memory used由于使用了默认虚拟内存率(也就是2.1倍),所以对于Map Task和Reduce Task总的虚拟内存为都为1G*2.1=2.1G。而应用的虚拟内存4.4G超过了这个数值,故报错
解决方案:在启动Yarn是调节虚拟内存率或者应用运行时调节内存大小。
解决思路参考:
要解决这个异常,得熟悉yarn自身的虚拟内存管理规则,在Yarn平台中,CPU,内存,磁盘都被抽象成资源来自使用,管理资源的角色主要有Yarn Resource Manager (RM) 负责总的资源调度,然后每个节点上有Nodemanager 来监听守护资源,在具体到每一个应用上是通过Application Master (AM) container来给Map或Reduce任务来分配资源
具体的属性如下:
- yarn.nodemanager.resource.memory-mb
可分配的物理内存总量,默认是8*1024MB。 - yarn.nodemanager.vmem-pmem-ratio
每单位的物理内存总量对应的虚拟内存量,默认是2.1,表示每使用1MB的物理内存,最多可以使用2.1MB的虚拟内存总量。
第二个属性,比率的控制影响着虚拟内存的使用,当yarn计算出来的虚拟内存,比在mapred-site.xml里的mapreduce.map.memory.mb或mapreduce.reduce.memory.mb的2.1倍还要多时,就会发生上面截图中的异常,而默认的mapreduce.map.memory.mb或mapreduce.reduce.memory.mb得初始大小为1024M,然后根据异常中的yarn自身根据运行环境推算出来的虚拟内存来做比较,发现比1024*2.1还要大,所以就会由NodeManage守护进程kill掉AM容器,从而导致整个MR作业运行失败,现在我们只需要调大这个比率即可,避免发生这种异常。具体调大多小,可根据具体情况来设置。
详细解决配置设置(各集群根据自己的配置修改):
mapred-site.xml:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>10.45.249.173:10020</value> </property> <property> <name>mapreduce.task.io.sort.mb</name> <value>1024</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx2560M</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2560M</value> </property> <property> <name>mapreduce.map.memory.mb</name> <value>2560</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>2560</value> </property></configuration>
yarn-site.xml:
<configuration><!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>SparkMaster</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>21</value> </property> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property></configuration>
同步集群,并在客户端同步
下面的参数是关于mapreduce任务运行时的内存设置,如果有的任务需要可单独配置,就统一配置了。如果有container被kill 可以适当调高
mapreduce.map.memory.mb map任务的最大内存
mapreduce.map.java.opts -Xmx1024M map任务jvm的参数
mapreduce.reduce.memory.mb reduce任务的最大内存
mapreduce.reduce.java.opts -Xmx2560M reduce任务jvm的参数
yarn.scheduler.minimum-allocation-mb 容器的最小内存
yarn.nodemanager.resource.memory-mb 容器的最大内存
如果mapreduce.reduce.memory.mb或mapreduce.map.memory.mb小于容器的最小内存,则容器内存为自身所设置的参数值yarn.scheduler.minimum-allocation-mb
mapreduce.task.io.sort.mb 512 Higher memory-limit while sorting data for efficiency.
- 容器使用超过了虚拟内存的限制大小,该容器被杀死,导致作业提交失败
- 视频上传失败,大小超过了php限制
- 限制容器对内存的使用
- 限制容器对CPU的使用
- 限制容器对CPU的使用
- OceanBase由于合并操作导致事务被杀死的情况。
- 顺序容器的大小
- Hadoop运维:作业的map过多被杀死
- Docker限制容器内存使用
- 容器操作4 容器的大小
- 关于canvas里面的元素超过容器大小而显示的问题
- 表单提交数据大小的限制:Firebug 达到了 Post 请求大小限制
- 容器作业
- 限制容器的 Block IO
- 容器大小
- 超过了 PCH 的虚拟内存范围;请使用“-Zm120”或更大的命令行选项重新编译
- 超过了 PCH 的虚拟内存范围;请使用“-Zm120”或更大的命令行选项重新编译
- STL容器使用该注意的一个问题
- SAP 销售订单完整性检查
- EMV技术学习和研究(二)应用选择
- 项目中 C# 中的文件删除的几个实例
- 黑马程序员——java基础---语言组成、数据类型、运算符
- C++11 lambda
- 容器使用超过了虚拟内存的限制大小,该容器被杀死,导致作业提交失败
- 集群session一致性和同步问题
- How to fetch data from SAP system using sap .net connector?
- 黑马程序员——java基础---语句学习
- DataStage TransFormer 无法编译问题解决方案
- 观察者模式
- EMV技术学习和研究(三)应用初始化&&读应用数据
- DOM(包括获取元素节点的方法以及获取和设置元素节点的属性)
- 怎么把UltraEdit添加到右键菜单