我正在尝试在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)
有什么问题?我怎么解决这个问题?谢谢!
答案 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文件夹权限,所以我不知道解决它的方法,但希望这会让你指向正确的方向。