проблемы с запуском простых примеров Hadoop Map-Reduce в Cygwin - PullRequest
10 голосов
/ 18 марта 2012

Я просто пытаюсь запустить Hadoop на моем ноутбуке с 64-битной Windows 7 в автономном режиме.Я установил Cygwin 1.7 в папку по умолчанию (c: \ cygwin).У меня установлена ​​последняя версия JDK в папке c: \ jdk1.7.0_03, и я установил переменную среды 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, есть идеи?

Ответы [ 3 ]

7 голосов
/ 05 сентября 2012

Вот простой в использовании обходной путь, который не требует бритья яка:

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

2 голосов
/ 23 марта 2012

исправлено (бритье основных яков)

https://issues.apache.org/jira/browse/HADOOP-7682?focusedCommentId=13236645#comment-13236645

0 голосов
/ 05 мая 2012

Мне удалось довести эту работу до того момента, когда распределяются задания, выполняются задачи и компилируются результаты.

Однако мывсе еще нужно заставить сервлеты понимать символические ссылки cygwin.Я понятия не имею, как это сделать в Jetty.

Эти две ссылки показывают, как разрешить Tomcat и Jetty следовать символическим ссылкам, но я не знаю, работает ли это в cygwin.* http://www.lamoree.com/machblog/index.cfm?event=showEntry&entryId=A2F0ED76-A500-41A6-A1DFDE0D1996F925 * Настройка символических ссылок для одного каталога в Tomcat

В противном случае нам придется открыть код молы и заменить файл java.io.File на org.apache.hadoop.fs.LinkedFile.

...