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

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

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



ad61faea5ea343a28fe757431d8517ed.jpeg



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)

1.jpeg


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


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


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


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


既然如此,那造成 无法分配内存 的原因应该是虚拟机分配的内存本身就不够

果不其然,我的虚拟机只分配了2G的内存,满足不了该程序的资源要求


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


3. 参考


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

目录
相关文章
|
2月前
|
SQL 缓存 DataWorks
DataWorks报错问题之内存溢出错误如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
存储 程序员 编译器
在C语言中.如何正确地分配和释放内存docx
在C语言中.如何正确地分配和释放内存docx
17 1
|
2月前
|
存储 C++
C/C++数据类型从0到内存具体分配详解
C/C++数据类型从0到内存具体分配详解
|
4月前
|
算法 编译器
内存学习(七):伙伴分配器(正式版)1
内存学习(七):伙伴分配器(正式版)1
62 0
|
2月前
关于为什么要在链表中用malloc来分配内存
关于为什么要在链表中用malloc来分配内存
|
11天前
为对象分配内存TLAB
为对象分配内存TLAB
|
14天前
|
计算机视觉
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
|
24天前
|
缓存 NoSQL 中间件
redis内存溢出报错--OOM command not allowed when used memory > 'maxmemory'
该内容是关于Redis缓存服务器的使用指南。通过Xshell连接IP地址为25.218.153.193或206的主机,进入/data/iuap/middleware/redis-30001/bin目录,使用`redis-cli`连接到IP为206的30003端口。登录时需`auth yonyou*123`,可运行`info`和`info memory`查看状态,`flushall`清理缓存。在清理前,要备份/data/iuap/middleware/redis-30003/data/下的.aof和.rdb文件,利用tar命令打包并移至/tmp目录。
|
2月前
|
存储 编译器 程序员
【C语言】内存的动态分配与释放
【C语言】内存的动态分配与释放
29 0
|
2月前
|
存储 C语言
怎样建立内存的动态分配
怎样建立内存的动态分配
8 0