2013-01-02 54 views
1

我在失败的地图任务的系统日志中看到此异常,特定作业中的所有地图任务都遇到此错误。Hadoop Map任务获取StackOverflowError

任何猜测这里的原因,这是一个奇怪的看起来堆栈跟踪到我的眼睛。

2012-12-29 10:37:37,975 FATAL org.apache.hadoop.mapred.Child (main): Error running child : java.lang.StackOverflowError 
    at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:80) 
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) 
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.setup(DelegatingMapper.java:46) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:54) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55) 
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55) 
    <1014 duplicate lines cut> 
+0

日志在任何失败的单个节点上看起来如何? (你应该能够从求职者那里找到他们)。还是来自其中一个节点? –

+0

它甚至在运行你的任何代码之前就失败了,它似乎与你的输入文件有关。这只是一个预感,但是你有很多输入文件吗?如果将输入减少到只有几个文件会发生什么? –

回答

2

查看DelegationMapper.java的来源我可以怀疑你以某种方式将DelegationMapper设置为你实际的Mapper类。因此 - 无限代表运行自己。

+0

我现在正在沿着这些方向努力。我注意到我的一个MultipleInput.add(...)语句缺少最终的映射器类参数。虽然这是一个有效的方法签名。我并没有完全按照代码来看看会发生什么,但这肯定是一个错误,所以我现在正在通过一个有这种修复的工作来工作,我们将会看到。 –

+0

可能在这种情况下letf是委托映射器。 –

+0

似乎是这样。这一改变使其发挥作用。我会深入研究并尝试发布一个错误报告,这不应该导致无限的递归循环。 –