全球优质服务器购买

为用户应用推荐适合的服务器,针对需求定制,将质量做到更好

香港服务器

香港CN2优化带宽,国内访问快

CPU:I3-2120(2核心4线程)

内存:4G DDR3内存

硬盘:1T HDD

带宽:10M优化、10M国际

IP数:1个

价格:699/月

美国服务器

美国洛杉矶高性价比服务器

CPU:I3-2120(2核心4线程)

内存:4G DDR3内存

硬盘:1T HDD

带宽:30M优化/100M普通

IP数:1个(10G防护)

价格:499/月

香港站群服务器

香港多IP站群服务器租用

CPU:E3-1230V2(4核

内存:8G DDR3内存

硬盘:240G SSD/1T SATA

带宽:10M优化

IP数:125个IP(1/2C)

价格:1099/月

美国站群服务器

美国多IP站群服务器租用

CPU:E3-1230V2(4核)

内存:16G DDR3内存

硬盘:1T HDD/240G SSD

带宽:30M优化/100M普通

IP数:125个IP(1/2C)

价格:999/月

执行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​

内容来源于网络如有侵权请私信删除

推荐文章