2

我正在尝试通过 Cygwin 在 Windows 中运行 Hadoop 的示例字数统计程序。我已经安装了 Hadoop 和 Cygwin。

我使用以下语句运行 wordcount 程序:

$ bin/hadoop jar hadoop-examples-1.0.1.jar wordcount input output

我收到以下错误:

12/05/08 23:05:35 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
12/05/08 23:05:35 ERROR security.UserGroupInformation: PriviledgedActionException as:suresh cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-suresh\mapred\staging\suresh1005684431\.staging to 0700
java.io.IOException: Failed to set permissions of path: \tmp\hadoop-suresh\mapred\staging\suresh1005684431\.staging to 0700
        at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)
        at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:655)
        at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
        at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
        at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
        at org.apache.hadoop.examples.WordCount.main(WordCount.java:67)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
        at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
        at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

我已经在路径变量中设置了 Cygwin bin 路径。任何帮助表示赞赏。

4

3 回答 3

2

这是某些 Hadoop 版本的已知问题(完整讨论请参见https://issues.apache.org/jira/browse/HADOOP-7682)。

我在 1.0.2 版本中遇到了这个问题,所以我尝试了各种其他版本。

最后,我回到版本 0.22.0 让它工作

如果您回到 0.22.0 版本,您需要对 bin/hadoop-config.sh 脚本进行一些更改:

  1. 更改设置 HADOOP_MAPRED_HOME 的行以指向mapreduce目录而不是mapred目录。
  2. 注释掉所有为原生 hadoop 安装设置 java.library.path 的代码。
于 2012-05-09T07:25:28.930 回答
0

您应该查看适用于 windows 的 hadoop 服务- 移植到 windows 的 hadoop 版本。

目前它处于测试阶段,但它应该很快就会发布。

于 2012-05-09T20:47:24.250 回答
0

我已经设法使这项工作达到调度作业、执行任务和编译结果的程度。

en.wikisource.org/wiki/User:Fkorning/Code/Hadoop-on-Cygwin

于 2012-05-16T11:10:22.943 回答