10

当我使用 Hadoop 运行 mapreduce 程序时,出现以下错误。

10/01/18 10:52:48 INFO mapred.JobClient: Task Id : attempt_201001181020_0002_m_000014_0, Status : FAILED
  java.io.IOException: Task process exit with nonzero status of 1.
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:418)
10/01/18 10:52:48 WARN mapred.JobClient: Error reading task outputhttp://ubuntu.ubuntu-domain:50060/tasklog?plaintext=true&taskid=attempt_201001181020_0002_m_000014_0&filter=stdout
10/01/18 10:52:48 WARN mapred.JobClient: Error reading task outputhttp://ubuntu.ubuntu-domain:50060/tasklog?plaintext=true&taskid=attempt_201001181020_0002_m_000014_0&filter=stderr

这个错误是关于什么的?

4

5 回答 5

14

Hadoop 产生此错误的一个原因是包含日志文件的目录变得太满。这是Ext3 文件系统的一个限制,每个 inode 最多只允许 32000 个链接。

检查您的日志目录有多满hadoop/userlogs

对此问题的一个简单测试是尝试从命令行创建一个目录,例如:$ mkdir hadoop/userlogs/testdir

如果用户日志中有太多目录,操作系统应该无法创建目录并报告目录太多。

于 2010-01-22T03:38:41.623 回答
2

当我的日志目录磁盘空间不足时,我遇到了同样的问题。

于 2011-04-12T06:50:17.683 回答
2

将您的 ulimit 增加到无限制。或替代解决方案减少分配的内存。

于 2014-11-04T15:21:21.623 回答
2

另一个原因可能是,当您尝试为 JVM 分配一些专用空间并且它不在您的机器上时出现 JVM 错误。

sample code:
conf.set("mapred.child.java.opts", "-Xmx4096m");

Error message:
Error occurred during initialization of VM
Could not reserve enough space for object heap

解决方案:将 -Xmx 替换为您可以在您的机器上提供给 JVM 的专用内存值(例如“-Xmx1024m”)

于 2011-11-15T08:47:01.903 回答
0

如果您在 eclipse 中创建一个可运行的 jar 文件,它会在 hadoop 系统上给出该错误。您应该提取可运行部分。这解决了我的问题。

于 2013-03-14T09:24:46.107 回答