2011-08-18 72 views
1

在运行Map-reduce程序时出现以下错误。运行Mapreduce程序时出错

The program is to sort the o/p using TotalOrderpartition. 

I have 2 node cluster. 
when i run teh program with -D mapred.reduce.tasks=2 its working fine 
But its failing with below error while running with -D mapred.reduce.tasks=3 option. 


java.lang.RuntimeException: Error in configuring object 
     at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93) 
     at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64) 
     at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117) 
     at org.apache.hadoop.mapred.MapTask$OldOutputCollector.<init>(MapTask.java:448) 
     at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) 
     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) 
     at org.apache.hadoop.mapred.Child.main(Child.java:170) 
Caused by: java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88) 
     ... 6 more 
Caused by: java.lang.IllegalArgumentException: Can't read partitions file 
     at org.apache.hadoop.mapred.lib.TotalOrderPartitioner.configure(TotalOrderPartitioner.java:91) 
     ... 11 more 
Caused by: java.io.IOException: Split points are out of order 
     at org.apache.hadoop.mapred.lib.TotalOrderPartitioner.configure(TotalOrderPartitioner.java:78) 
     ... 11 more 

Plese let me know whats wrong here? 

Thanks 
R 

回答

1

听起来就像您在分区文件中没有足够的密钥。 docs表示TotalOrderpartitioner要求您的分区SequenceFile中至少有N-1个键,其中N是reducer的数量。

+0

如果你打算downvote,至少给出原因。对于原问题,这是一个完全有效的答案。 – cftarnas

2

可以提及的reducer的最大数量等于群集中节点的数量。由于这里的节点数是2,所以你不能设置reducer的数量大于2.

+0

有点如果我尝试运行0减速器它的工作。减速机的原因是什么取决于节点的数量? –

0

我也遇到过这个问题,通过检查soucecode发现,因为sample,增加减少的数目使得在分割点有相同的元素,所以抛出这个错误。它与数据有关系。键入hadoop fs - text _partition查看生成分区的文件,如果您的任务失败,则必须具有相同的元素。