2012-03-18 16 views
10

Sto solo cercando di far funzionare Hadoop sul mio portatile con Windows 7 a 64 bit in modalità standalone. Ho installato Cygwin 1.7 nella cartella predefinita (c: \ cygwin). Ho l'ultimo JDK nella cartella c: \ jdk1.7.0_03 e ho impostato la variabile d'ambiente JAVA_HOME.problemi con la semplice mappa di ridurre gli esempi di hadoop in cygwin

quando provo ad eseguire il seguente comando da un prompt cygwin:

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

Ecco l'errore che ottengo:

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) 

Ho provato sia con Hadoop 1.0.1 e anche Hadoop -0.20.205.0 e ottieni lo stesso problema. Ho aggiornato il mio .bashrc con

export TMP=/cygdrive/c/temp 
export TEMP=/cygdrive/c/temp 

Ho anche aggiunto cartella bin cygwin al percorso:

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

anche io trovo molto strano è che mostra il percorso come \ tmp ... invece di/tmp/...

A parte la ricompilazione o l'esecuzione di una macchina virtuale Linux, qualche idea?

+0

btw, con la stessa impostazione di cui sopra, ma utilizzando Hadoop 0.20.2, non lo faccio imbattersi in questo – dplante

+0

Sì, l'ho affrontato anche ieri. Sarei felice se qualcuno ha una soluzione per questo. +1 –

risposta

2
+0

Sì, grazie per averlo pubblicato anche sulla jira. L'ho risolto da solo costruendo una versione personalizzata di 1.0.0 in cui il valore di ritorno dei metodi di file non è stato verificato. Questo succede in 'FileUtil.setPermission', appena rimosso tutte le righe con' checkReturnValue' –

+1

Dave Latham ha patchato setPermission() .https: //issues.apache.org/jira/browse/HADOOP-7682 – FKorning

0

sono riuscito a ottenere questo lavoro al punto in cui vengono spediti i lavori, le prestazioni eseguite, ed i risultati compilati.

Tuttavia abbiamo ancora bisogno di ottenere le servlet per capire i collegamenti simbolici Cygwin. Non ho idea di come farlo in Jetty.

Questi due collegamenti mostrano come consentire a Tomcat e al molo di seguire i collegamenti simbolici, ma non so se questo funziona in cygwin. * http://www.lamoree.com/machblog/index.cfm?event=showEntry&entryId=A2F0ED76-A500-41A6-A1DFDE0D1996F925 * Configure Symlinks for single directory in Tomcat

In caso contrario saremo costretti ad aprire il codice pontile e sostituirlo con java.io.File org.apache.hadoop.fs.LinkedFile.

+0

fa che: http: //en.wikisource.org/wiki/User:Fkorning/Code/Hadoop-on-Cygwin – FKorning

Problemi correlati