2013-02-14 27 views
1

我尝试使用EMR上的1个主(小)节点和1个从节点(小)节点运行幼稚脚趾算法。我使用seqdirectory,seq2sparse和split命令成功完成了步骤。但在训练阶段,我得到了错误。我用下面的命令来训练算法:在EMR上运行Mahout Naive Byes Algorithm时的训练错误

./elastic-mapreduce --jar s3n://<bucket name>/mahout/mahout-examples-0.7-job.jar \ 
    --main-class org.apache.mahout.driver.MahoutDriver \ 
    --logs \ 
    --arg trainnb \ 
    --arg -i --arg /<folder name>/mahout/review-train-vectors/ --arg -el\ 
    --arg -o --arg /<folder name>/mahout/model/ \ 
    --arg -li --arg /<folder name>/mahout/labelindex/ \ 
    --arg -ow \ 
    -j <job-name> 

这里的作业步骤的日志:

java.lang.IllegalArgumentException 
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76) 
at org.apache.mahout.classifier.naivebayes.training.WeightsMapper.setup(WeightsMapper.java:42) 
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142) 
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:771) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:375) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132) 
at org.apache.hadoop.mapred.Child.main(Child.java:249) 

attempt_201302130846_0035_m_000000_0: SLF4J: Class path contains multiple SLF4J bindings. 
attempt_201302130846_0035_m_000000_0: SLF4J: Found binding in [jar:file:/home/hadoop /lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
attempt_201302130846_0035_m_000000_0: SLF4J: Found binding in [jar:file:/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201302130846_0035/jars/job.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
attempt_201302130846_0035_m_000000_0: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
java.lang.IllegalArgumentException 
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76) 
at org.apache.mahout.classifier.naivebayes.training.WeightsMapper.setup(WeightsMapper.java:42) 
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142) 
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:771) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:375) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132) 
at org.apache.hadoop.mapred.Child.main(Child.java:249) 

attempt_201302130846_0035_m_000000_1: SLF4J: Class path contains multiple SLF4J bindings. 
attempt_201302130846_0035_m_000000_1: SLF4J: Found binding in [jar:file:/home/hadoop /lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
attempt_201302130846_0035_m_000000_1: SLF4J: Found binding in [jar:file:/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201302130846_0035/jars/job.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
attempt_201302130846_0035_m_000000_1: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
java.lang.IllegalArgumentException 
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76) 
at org.apache.mahout.classifier.naivebayes.training.WeightsMapper.setup(WeightsMapper.java:42) 
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142) 
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:771) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:375) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132) 
at org.apache.hadoop.mapred.Child.main(Child.java:249) 

attempt_201302130846_0035_m_000000_2: SLF4J: Class path contains multiple SLF4J bindings. 
attempt_201302130846_0035_m_000000_2: SLF4J: Found binding in [jar:file:/home/hadoop/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
attempt_201302130846_0035_m_000000_2: SLF4J: Found binding in [jar:file:/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201302130846_0035/jars/job.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
attempt_201302130846_0035_m_000000_2: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 

任何人都尝试过这件事情?请帮我解决这个问题。当我在本地系统上使用hadoop伪分布式模式运行此算法时,我也遇到同样的问题。该算法仅适用于MAHOUT_LOCAL = True环境变量。

回答

1

命令的参数有问题。它看起来像您根据您的环境,而无需调整其复制和粘贴命令:

--jar s3n://<bucket name>/mahout/mahout-examples-0.7-job.jar 

什么是斗的名字吗?

--arg -i --arg /<folder name>/mahout/review-train-vectors/ 

<folder name>看起来你应该根据自己的情况

-j <job-name> 

相同类型的错误而改变的变量。看起来你并不是一个有经验的linux用户,在每行末尾应该注意字符\应该被跳过(最有可能的情况是从你接受命令的网页上找到了。页面的可读性更好(你可以肯定它是一个命令 - 许多命令不是很多):))

相关问题