错误:失败的Map任务数超过了允许的限制,FailedCount:1.在Hadoop上运行Lucene搜索

rdlzhqv9  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(129)

我使用一个大文本文件中的每条记录对Lucene的索引执行搜索,然后根据需要对结果进行处理并写入输出。
我尝试使用Hadoop,将大的输入文本文件和预先创建的Lucene索引放到Hadoop的文件系统中。然后我更改了执行文件处理(读取文件记录、在Lucene上搜索、写入输出)的java程序,以从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

如何修复此错误?

ut6juiuv

ut6juiuv1#

我认为你不应该调用java命令,而只应该给予你想作为Map器运行的完全限定的类名。如果Map器名为'javaconcept. HadoopConceptRunner',我想它会呕吐,因为类路径没有定义,这样类就找不到了;)
所以简而言之这样再试一次:

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

相关问题