执行MapReduce报错:无法分配内存 (errno=12)
【摘要】 执行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. 参考
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)