Hadoop错误记录(一):MapReduce过程虚拟内存溢出

在运行Hadoop HA集群上的MapReduce程序时遇到虚拟内存溢出错误,由于Task的数据量超过默认Container内存限制。解决方案包括:1) 降低每个Task的数据量,可通过调整HDFS Block大小实现;2) 扩大Container的虚拟内存容量,通过配置yarn-site.xml和mapred-site.xml调整内存比例。注意调整可能导致其他错误,需谨慎操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用4台Linux虚拟机搭建Hadoop HA集群后运行自行编写的轨迹数据处理程序时出现以下错误(原始文件1.3GB),该程序在本机Java环境下可正常运行。控制台提示错误如下,显然每个Task需要使用的虚拟内存值超过了yarn默认Container的最大内存值,导致container被Kill,程序运行中断。

解决方案:

思路一:在Container容量不变的情况下,降低每个Task的数据量,使之不再溢出

Task的数据量必须大于HDFS中数据块的大小,Hadoop 3.x.x版本默认每个Block块的大小为128MB,若需要降低Block的大小,需在hdfs-site.xml配置文件中添加以下内容,其中xxx是每个块的字节数,例如128MB对应的数值为1024*1024*128=134217728,修改至合适的数值后重启HA集群。

<property>
  <name>dfs.blocksize</name>
  <value>xxx</value>
</property>

思路二:扩大Container虚拟内存的容量,使之不再溢出

具体设置原理可参阅https://blog.csdn.net/u010226454/article/details/80907088;

笔者使用的Hadoop 3.1.4按照上文配置并启动集群后产生“无法加载主类480”错误,在查阅Hadoop网站中提供的默认yarn-site.xml和mapred-site.xml文件后,发现上文部分配置的位置需要修正。下方的设定参数将conta

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值