【问题标题】:problems running simple map-reduce hadoop examples in cygwin在 cygwin 中运行简单的 map-reduce hadoop 示例的问题
【发布时间】:2012-04-03 01:44:59
【问题描述】:

我只是想让 Hadoop 在运行 64 位 Windows 7 的笔记本电脑上以独立模式运行。我已经在默认文件夹 (c:\cygwin) 中安装了 Cygwin 1.7。我在文件夹 c:\jdk1.7.0_03 中有最新的 JDK,并设置了 JAVA_HOME 环境变量。

当我尝试从 cygwin 提示符运行以下命令时:

$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'

这是我得到的错误:

12/03/17 19:08:43 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
java.io.IOException: Failed to set permissions of path: \tmp\hadoop-ehtzrhf\mapred\staging\ehtzrhf837602798\.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:484)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:319)
        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:848)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:842)
        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:1059)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:842)
        at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:816)
        at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1253)
        at org.apache.hadoop.examples.Grep.run(Grep.java:69)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.hadoop.examples.Grep.main(Grep.java:93)
        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)

我已尝试使用 Hadoop 1.0.1 和 hadoop-0.20.205.0 并遇到相同的问题。我已经用

更新了我的 .bashrc
export TMP=/cygdrive/c/temp
export TEMP=/cygdrive/c/temp

我还在路径中添加了 cygwin bin 文件夹:

export PATH=.:/cygdrive/c/cygwin/bin:$HADOOP_INSTALL/bin

我也觉得很奇怪,它将路径显示为 \tmp... 而不是 /tmp/...

没有重新编译或运行 Linux VM,有什么想法吗?

【问题讨论】:

  • 顺便说一句,设置与上面相同,但使用 hadoop 0.20.2,我没有遇到这个。
  • 是的,我昨天也遇到了这个问题。如果有人能解决这个问题,我会很高兴。 +1

标签: hadoop cygwin


【解决方案1】:

这是一个简单易用的解决方法,不需要任何牦牛剃须:

https://github.com/congainc/patch-hadoop_7682-1.0.x-win

【讨论】:

    【解决方案2】:

    【讨论】:

    • 是的,感谢您也将其发布到 jira。我通过构建 1.0.0 的自定义版本为自己修复了它,其中不检查文件方法的返回值。这发生在FileUtil.setPermission,只是删除了所有带有checkReturnValue的行
    • Dave Latham 已修补 setPermission().issues.apache.org/jira/browse/HADOOP-7682
    【解决方案3】:

    我已经设法使这项工作达到了分派作业、执行任务和编译结果的地步。

    然而,我们仍然需要让 servlet 理解 cygwin 符号链接。我不知道如何在 Jetty 中执行此操作。

    这两个链接显示了如何允许 Tomcat 和 jetty 遵循符号链接,但我不知道这是否适用于 cygwin。 * http://www.lamoree.com/machblog/index.cfm?event=showEntry&entryId=A2F0ED76-A500-41A6-A1DFDE0D1996F925 * Configure Symlinks for single directory in Tomcat

    否则我们将不得不打开码头代码并将 java.io.File 替换为 org.apache.hadoop.fs.LinkedFile。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多