`

hadoop 内存错误

 
阅读更多

hadoop 内存给定错误

 

11/09/06 09:20:25 WARN mapred.JobClient: Error reading task outputhttp://server4:50060/tasklog?plaintext=true&taskid=attempt_201109060853_0005_r_000008_0&filter=stdout
11/09/06 09:20:25 WARN mapred.JobClient: Error reading task outputhttp://server4:50060/tasklog?plaintext=true&taskid=attempt_201109060853_0005_r_000008_0&filter=stderr
11/09/06 09:20:34 INFO mapred.JobClient: Task Id : attempt_201109060853_0005_m_000009_1, Status : FAILED
java.io.IOException: Task process exit with nonzero status of 1.
        at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:418)

 

 

运行map reduce任务的时候 报这个错误,查了些文章 说是 应该吧 userlogs 下面的文件都删除掉

老外的文章:

Just an FYI, found the solution to this problem.

Apparently, it's an OS limit on the number of sub-directories that can be reated in another directory.  In this case, we had 31998 sub-directories uder hadoop/userlogs/, so any new tasks would fail in Job Setup.

From the unix command line, mkdir fails as well: 
  $ mkdir hadoop/userlogs/testdir 
  mkdir: cannot create directory `hadoop/userlogs/testdir': Too many links

Difficult to track down because the Hadoop error message gives no hint whasoever.  And normally, you'd look in the userlog itself for more info, butin this case the userlog couldn't be created.

 

但是 我的问题在userlogs下 可以mkdir test 是成功的 所以 删除这个userlogs下的所有文件 仍然报错

 

于是查看uerlogs下的文件:

 

[suse@server6 userlogs]$ cat attempt_201109060853_0005_m_000009_2/

[suse@server6 attempt_201109060853_0005_m_000009_2]$ cat stdout
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified

 

发现是 jvm 内存给定错误:

    <property>
            <name>mapred.child.java.opts</name>
            <value>-Xmx1024m -Xms1024m -Xmn192m -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:$HADOOP_HOME/logs/gc.log</value>
            <description>Java opts for the task tracker child processes.
                    The following symbol, if present, will be interpolated: @taskid@ is replaced
                    by current TaskID. Any other occurrences of '@' will go unchanged.
                    For example, to enable verbose gc logging to a file named for the taskid in
                    /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:
                    -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc
                    The configuration variable mapred.child.ulimit can be used to control the
                    maximum virtual memory of the child processes.
            </description>
    </property>

 

原来我写的是

 

    <property>
            <name>mapred.child.java.opts</name>
            <value>-Xmx512m -Xms1024m -Xmn192m -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:$HADOOP_HOME/logs/gc.log</value>
            <description>Java opts for the task tracker child processes.
                    The following symbol, if present, will be interpolated: @taskid@ is replaced
                    by current TaskID. Any other occurrences of '@' will go unchanged.
                    For example, to enable verbose gc logging to a file named for the taskid in
                    /tmp and to set the heap maximum to be a gigabyte, pass a 'value' of:
                    -Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc
                    The configuration variable mapred.child.ulimit can be used to control the
                    maximum virtual memory of the child processes.
            </description>
    </property>

 

不小心写错了:

 

下面介绍下这几个参数的意思

-Xss 20000k

这个参数的意思是 每增加一个线程 jvm 会增加 20M 的内存,而最佳值应该是128K,默认值好像是512k.

-Xmx  jvm 启动最大内存,Java Heap最大值,默认值为物理内存的1 / 4 ,最佳设值应该视物理内存大小及计算机内其他内存开销而定

-Xms  jvm  Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-Xmn    Java Heap Young区大小,不熟悉最好保留默认值;

-Xss    每个线程的Stack大小,不熟悉最好保留默认值;

 

0
0
分享到:
评论

相关推荐

    Hadoop实战(第2版)

     《Hadoop硬实战》包含: ·Hadoop和MapReduce的基本概念 ·85个实战和测试技术 ·真实的场景,实用的解决方案 ·如何整合MapReduce和R前言 致谢关于本书 第1 部分 背景和基本原理1 跳跃中的Hadoop1.1 什么...

    hadoop常见错误以及处理方法详解

    本篇文章是对hadoop常见错误以及处理方法进行了详细的分析介绍,需要的朋友参考下

    第3章 Hadoop 2 3.1. 简介 2 3.1.1. 概述 2 3.2. 环境搭建 2 3.2.1. 搭建过程总览 2

    3.2.5. 设置三台虚拟机的硬盘至少为30G,内存至少为2G 7 3.2.6. 虚拟机网络模式设置为NAT 8 3.2.7. 设置静态IP 8 3.2.8. 修改主机名 9 3.2.9. 设置ip和域名的映射 10 3.2.10. 重启虚拟机让设置生效 10 3.2.11. 第二...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点84 调试和错误处理 13.3 MapReduce 陷阱 技术点85 MapReduce 反模式 13.4 本章小结 附录A 相关技术 附录B Hadoop 内置的数据导入导出工具 附录C HDFS 解剖. 附录D 优化MapReduce 合并框架 索引 ...

    Spark RDD详解

    Spark与Apache Hadoop有何关系? Spark是与Hadoop数据兼容的快速通用处理引擎。它可以通过YARN或Spark的Standalone在Hadoop集群中运行,并且可以处理HDFS、Hbase、Cassandra、Hive和任何Hadoop InputFormat中的数据...

    largecollections-retired:使用堆外内存扩展到数百万个元素的 HashMap 实现

    Java Collections 实现,使用堆外内存扩展到数百万个元素,而不会遇到 GC 错误。 它利用 Google 的 LevelDB 项目来实现这一点。 目前这个 API 支持三种类型的 Collections java.util.Map java.util.List...

    5步避免Java堆空间错误

    牢记以下五个步骤可以为你减少很多头痛的问题并且避免Java堆空间错误。  通过计算预期的内存消耗。  检查JVM是否有足够的可用空间。  检查JVM的设置是否正确。  限制节点使用交换空间和内存分页。  设置...

    couchbase-inputformat:将 Couchbase 集成到 Hadoop 等云项目的工具

    Couchbase 是一个分布式系统,它使用 memcached 下的代理来添加一个最终会收敛到磁盘的集群层,从而创建可用作高可用性、内存中容错分布式文档存储的东西。 Couchbase 是开源的,一个团队致力于闭源构建,其中的功能...

    大数据常见问题之数据倾斜.pdf

    数据倾斜会发⽣在数据开发的各个环节中,⽐如: ⽤Hive算数据的时候reduce阶段卡在99.99% ⽤SparkStreaming做实时算法时候,⼀直会有executor出现OOM的错误,但是其余的executor内存使⽤率却很低。 数据倾斜有⼀个...

    大数据常见问题之数据倾斜.docx

    数据倾斜会发生在数据开发的各个环节中,比如: 用Hive算数据的时候reduce阶段卡在99.99% 用SparkStreaming做实时算法时候,一直会有executor出现OOM的错误,但是其余的executor内存使用率却很低。 数据倾斜有一个...

    学生成绩管理分析系统 毕业设计.zip

    Java语言简洁明了,剔除了C++中诸如指针等复杂且容易引发错误的概念,增强了安全性,并强调了类和对象在软件设计中的核心地位。它不仅支持面向对象编程的所有特性,如封装、继承和多态,还具有健壮性、安全性以及...

    混合音乐推荐系统-Track Stacking-毕业设计.zip

    Java语言简洁明了,剔除了C++中诸如指针等复杂且容易引发错误的概念,增强了安全性,并强调了类和对象在软件设计中的核心地位。它不仅支持面向对象编程的所有特性,如封装、继承和多态,还具有健壮性、安全性以及...

    Android毕业设计; Android, Music Player, for graduation.zip

    Java语言简洁明了,剔除了C++中诸如指针等复杂且容易引发错误的概念,增强了安全性,并强调了类和对象在软件设计中的核心地位。它不仅支持面向对象编程的所有特性,如封装、继承和多态,还具有健壮性、安全性以及...

    bigdata-learn:大数据学习

    此文章仅做个人学习记录与参考,如有错误,欢迎指正博客地址 [ ]一、准备1. 虚拟机:VMware Fusion2. IDE:Intellijidea快捷键 [ windows ]idea快捷键 [ mac ]3. JDK1.84. hadoop2.5.2,参照文档 5. zookeeper-3.4.6...

    头条leetcode-tasks:我的思想的内存交换空间

    系列错误的详细信息 预期缩进? 显示上下文行 主要的 --chain - 被shebang魔法取代 --help --version 词法分析器 捕获非法字符 空格\f \n \r \t \v 专用标识符$ 代替通用字符名称: \u5B81 \U0001F005 / 缩进和翻译 ...

    高频大数据解决方案.pptx

    关键特性: 线性扩展 7 增加一个新结点到VoltDB集群可以有限提升集群的最大吞吐量,也可以增加整个集群的内存容量 集群的大小对应用来说是透明的 高频大数据解决方案全文共28页,当前为第7页。 关键特性: 线性扩展...

    大数据运维解决方案.pdf

    不同于一般的资产管理工具, 蚁巡在做IT设备管理时把设备的自动发现、设备的监 控融合到了一起,使得维护工作变得更加准确、更加 简单,不再会出现人为的统计错误。 通过蚁巡,蚁坊软件在设备的采购和维护从无序走 ...

Global site tag (gtag.js) - Google Analytics