Hadoop配置似乎无法读取

时间:2012-03-29 09:38:07

标签: permissions hadoop cygwin configuration-files tmp

每次当我尝试启动我的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

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

关于为什么不会读取配置的任何指示,或者我在这里没有看到的其他内容?

谢谢!

2 个答案:

答案 0 :(得分:0)

斜杠不是倒置的,而是/ tmp是一个cygwin路径,它实际上映射到/ cygwin / tmp或c:\ cygwin \ tmp。因为hadoop是java并且不知道cygwin映射,所以它需要/ tmp表示c:\ tmp。

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

请参阅:http://en.wikisource.org/wiki/User:Fkorning/Code/Hadoop-on-Cygwin

答案 1 :(得分: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);