2012-07-29 45 views
0

首先,让我解释一下我正在尝试做什么:)。真的让这个hadoop事情头痛,真的需要帮助,节省meeeee :)在hadoop上运行lucene搜索出错

我使用大文本文件中的每个记录执行搜索Lucene的索引,然后按结果,因为我想和写入输出。

所以,我想通过将大输入文本文件和预先创建的lucene索引放在hadoop的文件系统上来使用hadoop。然后,我更改了我的java程序,它执行文件处理(读取文件记录,在lucene上进行搜索,写入输出)以从Hadoop文件系统读取记录,并在内存中创建lucene索引。我揭开序幕的Hadoop作业的命令是象下面这样:

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.3.jar 
      -libjars lucene-core-3.6.0.jar,hadoop-core-1.0.3.jar,concept.jar 
      -mapper "java concept.HadoopConceptRunner" 
      -input myBigInputFile 
      -output myOutput 
      -reducer NONE 

注意,“concept.jar”包含concept.HadoopConceptRunner类,这是我写的:)。

我头疼的是,我不能让这个Hadoop的作业运行正确=。=”我有例外像下面。而我无法找到任何其他有意义,可以帮助我解决这个问题。

Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 1. 

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 

我用Hadoop太新了,真正从我们对这个社会感谢您的帮助!

+0

BTW:什么为t他需要用作Mapper的java类吗?目前我的概念.HadoopConceptRunner类不扩展或覆盖任何hadoop类的方法。这是一个可能的问题吗?我不确定这是一个问题,因为我使用hadoop的awk脚本,它运行得很好...... – trillions 2012-07-29 00:27:09

回答

0

我想你不应该调用java命令。可是,只给你想要作为映射器运行的完全限定的类名。如果映射器叫做“Java的concept.HadoopConceptRunner”,我想这将BARF因为这样的类就不会被发现的路径并不确定;)

因此,在短期是这样再试一次:

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.3.jar 
     -libjars lucene-core-3.6.0.jar,hadoop-core-1.0.3.jar,concept.jar 
     -mapper "concept.HadoopConceptRunner" 
     -input myBigInputFile 
     -output myOutput 
     -reducer NONE 

另外,我觉得以下是不大可能奏效

-reducer NONE 

你可以尝试,而不是:

-jobconf mapred.reduce.tasks=0