2012-03-18 13 views
10

Estoy tratando de ejecutar Hadoop en mi computadora portátil con Windows 7 de 64 bits en modo independiente. Instalé Cygwin 1.7 en la carpeta predeterminada (c: \ cygwin). Tengo el último JDK en la carpeta c: \ jdk1.7.0_03, y he configurado la variable de entorno JAVA_HOME.problemas al ejecutar simple map-reduce los ejemplos de hadoop en cygwin

cuando trato de ejecutar el siguiente comando desde un símbolo cygwin:

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

Aquí está el error que consigo:

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) 

He intentado tanto con Hadoop 1.0.1 y también hadoop -0.20.205.0 y obtener el mismo problema. He actualizado mi .bashrc con

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

También he añadido carpeta bin cygwin a la ruta:

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

También me resulta muy extraño que está mostrando el camino que \ tmp ... en lugar de/tmp/...

¿No tiene alguna idea de recompilar o ejecutar una máquina virtual Linux?

+0

por cierto, con la misma configuración que el anterior, pero utilizando Hadoop 0.20.2, no lo creo encontrarse con esto. – dplante

+0

Sí, me enfrenté a esto ayer también. Me gustaría que alguien tenga una solución para eso. +1 –

Respuesta

2
+0

Sí, gracias por publicarlo en la jira también. Lo arreglé yo mismo construyendo una versión personalizada de 1.0.0 donde el valor de retorno de los métodos de archivo no está marcado. Esto sucede en 'FileUtil.setPermission', acaba de eliminar todas las líneas con' checkReturnValue' –

+1

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

0

he logrado conseguir este trabajo hasta el punto donde se envían puestos de trabajo, las tareas ejecutadas, y los resultados compilados.

Sin embargo, todavía necesita para obtener los servlets de entender enlaces simbólicos cygwin. No tengo idea de cómo hacer esto en Jetty.

Estos dos enlaces muestran cómo permitir que Tomcat y jetty sigan enlaces simbólicos, pero no sé si esto funciona en cygwin. * http://www.lamoree.com/machblog/index.cfm?event=showEntry&entryId=A2F0ED76-A500-41A6-A1DFDE0D1996F925 * Configure Symlinks for single directory in Tomcat

De lo contrario tendremos que abrir el código de embarcadero y reemplazar java.io.File con org.apache.hadoop.fs.LinkedFile.

+0

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

Cuestiones relacionadas