java - 在 hadoop 单节点集群中运行 mahout 20newsgroups 时出错

标签 java unix hadoop mapreduce mahout

我配置了一个 hadoop 1.2.1 单节点集群并安装了 mahout 0.8。

节点似乎工作正常。

我正在尝试在运行 cnaivebayes 分类器的 hadoop 集群上运行 20newsgroups mahout 示例。问题是我收到以下错误:

13/11/12 18:31:46 INFO common.AbstractJob: Command line arguments: {--charset=[UTF-8], --chunkSize=[64], --endPhase=[2147483647], --fileFilterClass=[org.apache.mahout.text.PrefixAdditionFilter], --input=[/tmp/mahout-work-hduser/20news-all], --keyPrefix=[], --method=[mapreduce], --output=[/tmp/mahout-work-hduser/20news-seq], --overwrite=null, --startPhase=[0], --tempDir=[temp]}
Exception in thread "main" java.io.FileNotFoundException: File does not exist: /tmp/mahout-work-hduser/20news-all
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:558)
    at org.apache.mahout.text.SequenceFilesFromDirectory.runMapReduce(SequenceFilesFromDirectory.java:140)
    at org.apache.mahout.text.SequenceFilesFromDirectory.run(SequenceFilesFromDirectory.java:89)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at org.apache.mahout.text.SequenceFilesFromDirectory.main(SequenceFilesFromDirectory.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
    at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
    at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)

当我检查文件夹的权限时,我得到了这个:

hduser@fernandoPC:/usr/local/mahout/core/target$ ls -l /tmp/mahout-work-hduser/
total 14136
drwxr-xr-x 22 hduser hadoop     4096 Nov 12 18:31 20news-all
drwxr-xr-x  4 hduser hadoop     4096 Nov 12 18:09 20news-bydate
-rw-r--r--  1 hduser hadoop 14464277 Nov 12 18:09 20news-bydate.tar.gz

当我运行 20newsgroups 选择 sgd 分类器时,它工作正常。我认为这是因为它不使用 map/reduce 任务,所以它甚至没有在 hadoop 上运行。

我在 google 中环顾四周,找不到任何解决方案。

有没有人有什么想法?

最佳答案

如果您在独立模式下运行 Mahout,那么您需要设置环境变量 MAHOUT_LOCAL。您可以添加一行

MAHOUT_LOCAL=1

到你的 ~/.bashrc 文件,执行: source .bashrc

这应该可以解决问题。

关于java - 在 hadoop 单节点集群中运行 mahout 20newsgroups 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19939960/

相关文章:

java - RestyGWT-自定义调度程序不调用已注册的过滤器

java - Apache Commons Lang 异常

php - 在 php 中用 unix 时间填充日历

xml - 编写 : How to target specific pom. xml 文件并提取标签中的特定值

hadoop - Hive 中是否有字符串数据类型的最大大小?

hadoop - 将普通java程序转换为mapreduce

java - Gradle JavaDoc 永远挂起

java - "MapperParsingException[Analyzer [second] not found for field [Name]]"

regex - 使用正则表达式过滤具有特定文件扩展名的文件

hadoop - hadoop中Namenode格式错误