1

每次我尝试启动我的 mapreduce 应用程序(在独立的 Hadoop 中)时,它都会尝试将内容放在 tmp 目录中,但它不能:

Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-username\mapred\staging\username-1524148556\.staging to 0700

它与使用无效路径相关联(斜线应该是 cygwin 的另一种方式)。

我在 core-site.xml 中设置了 hadoop.tmp.dir(在 Hadoop 的 conf 文件夹中),但似乎从未读取过配置文件(如果我在文件中放入语法错误,则没有区别)。我补充说:

--config /home/username/hadoop-1.0.1/conf

给命令,但没有区别。我也试过:

export HADOOP_CONF_DIR=/home/username/hadoop-1.0.1/conf

但这似乎没有效果....

关于为什么不读取配置的任何指示,或者我在这里看不到什么?

谢谢!

4

2 回答 2

0

我发现以下链接很有用,似乎问题在于较新版本的 Hadoop。我使用的是 1.0.4 版,但我仍然面临这个问题。

http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/25837

更新:在 Mahout 0.7 中以及对于使用“Mahoot in Action”书示例的人,您应该将示例代码更改如下:

    File outFile = new File("output");
    if (!outFile.exists()) {
        outFile.mkdir();
    }
    Path output = new Path("output");
    HadoopUtil.delete(conf, output);

    KMeansDriver.run(conf, new Path("testdata/points"), new Path("testdata/clusters"),
            output, new EuclideanDistanceMeasure(), 0.001, 10,
            true, 0.1, true);
于 2013-05-01T05:52:22.100 回答
0

不是斜线倒置,而是 /tmp 是一个 cygwin 路径,它实际上映射到 /cygwin/tmp 或 c:\cygwin\tmp。由于 hadoop 是 java 并且不知道 cygwin 映射,因此 /tmp 表示 c:\tmp。

如果你想让 1.0.1 在 cygwin 上运行,有很多东西需要修补。

见: http ://en.wikisource.org/wiki/User:Fkorning/Code/Hadoop-on-Cygwin

于 2012-05-07T16:18:31.573 回答