在windows下的hadoop中启动tasktracker的问题

时间:2011-06-08 09:23:03

标签: java windows hadoop mapreduce

我正在尝试在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)

有什么问题?我怎么解决这个问题?谢谢!

5 个答案:

答案 0 :(得分:5)

我在Windows服务器上安装1.0.3时遇到了这个问题。我更改了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

答案 1 :(得分:1)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

此问题在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

答案 4 :(得分:-1)

似乎存在与路径相关的权限问题  /tmp/hadoop-Administrator/mapred/local/taskTracker
由错误消息

证明
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指定的文件夹。它可能需要更多控制,例如作为所有者,用于其他方面。我不记得hadoop设置中组件所需的特定权限。

我没有处理Hadoop的权限设置方面,特别是在Windows上(根本没有),所以我所说的很大程度上取决于你提供的错误信息。我也没有使用cygwin文件夹权限,所以我不知道解决它的方法,但希望这会让你指向正确的方向。