问题在windows下的hadoop中启动tasktracker

问题描述:

我想在windows下使用hadoop,当我想启动tasktracker时遇到问题。例如:问题在windows下的hadoop中启动tasktracker

$bin/start-all.sh 

那么日志中写道:

2011-06-08 16:32:18,157 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: /tmp/hadoop-Administrator/mapred/local/taskTracker to 0755 
    at org.apache.hadoop.fs.RawLocalFileSystem.checkReturnValue(RawLocalFileSystem.java:525) 
    at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:507) 
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:318) 
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:183) 
    at org.apache.hadoop.mapred.TaskTracker.initialize(TaskTracker.java:630) 
    at org.apache.hadoop.mapred.TaskTracker.<init>(TaskTracker.java:1328) 
    at org.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:3430) 

什么问题?我该如何解决这个问题?谢谢!

有该错误消息

ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: /tmp/hadoop-Administrator/mapred/local/taskTracker 

证明向TaskTracker正处于启动需要和chmod指定的文件夹的能力帐户似乎是相关的路径
/tmp/hadoop-Administrator/mapred/local/taskTracker
权限问题。对于其他方面,可能需要更多的控制权,例如拥有者。我不记得hadoop安装中组件所需的具体权限。

我还没有处理Hadoop的权限设置方面,特别是在windows(所有),所以我说的是很大程度上基于您提供的错误消息。我也没有与cygwin文件夹权限保密,所以我不知道解决方案来纠正它,但希望这会让你指出正确的方向。

+1

这是走出来的纯Java代码,所以搭配chmod是不是与此有关。 cygwin也不是 – 2012-11-22 12:22:20

使用hadoop-Admininstrator文件夹的此更改所有者。你可以使用chown命令。

在Apache Hadoop用户邮件列表中引发了此问题。这在Hadoop的某些发行版本中似乎是个问题,而不是其他版本。

一个简单的解决方案是下载不同版本的Hadoop(假设您由于某些其他原因不需要特定的Hadoop版本)。

我遇到了与1.0.0版(测试版)相同的确切问题。

我又试图0.23.0,但有一个致命的ClassNotFoundException:

log4j:ERROR Could not find value for key log4j.appender.NullAppender 
log4j:ERROR Could not instantiate appender named "NullAppender". 
Exception in thread "main" java.lang.ClassNotFoundException: hadoop-mapreduce-examples-0.23.0.jar 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:182) 

最后我想版本0.22.0,没有错误的工作。因此,我建议你尝试下载并安装0.22.0版本:http://hadoop.apache.org/common/releases.html#10+December%2C+2011%3A+release+0.22.0+available

我跑这个问题上的1.0.3的Windows服务器上的安装。我改变了默认目录HDFS-site.xml中,使得Hadoop的创建为DFS的目录是这样的cygwin目录的子目录...

...

<property> 
    <name>dfs.name.dir</name> 
    <value>c:/cygwin/usr/mydir/dfs/logs</value> 
</property> 
<property> 
    <name>dfs.data.dir</name> 
    <value>c:/cygwin/usr/mydir/dfs/data</value> 
</property> 
</configuration> 

这似乎解决问题。

的配置文件Apache文档是here