执行MapReduce报错:无法分配内存 (errno=12)

执行MapReduce报错:无法分配内存 (errno=12)


在这里插入图片描述


0. 写在前面

  • Linux: Ubuntu Kylin16.04
  • Hadoop: Hadoop2.7.2
  • IDE: Eclipse3.8

1. 程序介绍

程序执行一个MapReduce,该MapReduce实现了自定义分区,总共分为4个分区,且在Driver端自定义设置reducer端num个数为4

2. 报错解决

代码的错误信息如下:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000f5a9b000, 66166784, 0) failed; error='无法分配内存' (errno=12)

在这里插入图片描述

查找了资料发现是/proc/sys/vm/目录下的max_map_count初始值太小,需要将其增大,设置为1000000

# 查看大小
root@node01:~$ cat /proc/sys/vm/max_map_count
65530
# 加一个配置
root@node01:~$ echo 1000000 > /proc/sys/vm/max_map_count

这并没有解决问题,依旧报错

尝试继续增大该值,依然无效

既然如此,那造成无法分配内存的原因应该是虚拟机分配的内存本身就不够
果不其然,我的虚拟机只分配了2G的内存,满足不了该程序的资源要求

我将虚拟机内存调整为4G,最后顺利执行成功

3. 参考

https://www.cnblogs.com/acm-bingzi/p/ubuntuErrno12.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值