2012-03-18 59 views
10

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

,当我尝试从一个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的想法吗?

+0

顺便说一句,用相同的设置同上,但使用Hadoop 0.20.2,我不知道碰到这个。 – dplante 2012-03-18 04:15:47

+0

是的,我昨天也遇到了这个。如果有人修复它,我会很高兴。 +1 – 2012-03-18 08:57:32

回答

2
+0

是的,谢谢你把它发布到jira。我通过构建1.0.0的自定义版本来修复自己,其中未检查文件方法的返回值。这发生在'FileUtil.setPermission'中,只是用'checkReturnValue'删除所有行。 – 2012-03-23 18:26:17

+1

Dave Latham修补了setPermission().https://issues.apache.org/jira/browse/HADOOP-7682 – FKorning 2012-04-29 20:10:24

0

我已经成功地得到这个工作,在那里作业分派,任务执行,结果编制了点。

但是我们仍然需要得到servlet来了解cygwin的符号链接。我不知道如何在Jetty中做到这一点。

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

否则,我们将不得不开拓码头代码,并与org.apache.hadoop.fs.LinkedFile取代的java.io.File。

+0

使得:http: //en.wikisource.org/wiki/User:Fkorning/Code/Hadoop-on-Cygwin – FKorning 2012-05-05 15:18:10

相关问题