每次当我尝试启动我的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
但这似乎没有效果......
关于为什么不会读取配置的任何指示,或者我在这里没有看到的其他内容?
谢谢!
答案 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);