2014-10-02 8 views
5

Quando ho creato HADOOP_HOME =/cygdrive/c/ecosistema/Hadoop-2.5.1 e quindi tentare di eseguire bin/Hadoop fs o bin/Hadoop Hadoop-streaming.jar da Cygwin, ricevo il seguente errore:errore Hadoop su Windows tramite Cygwin: Impossibile individuare nullo bin winutils.exe

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(373)) - Failed to locate the winutils binary in the hadoop binary path 
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. 
     at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:355) 
     at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:370) 
     at org.apache.hadoop.util.Shell.<clinit>(Shell.java:363) 
     at org.apache.hadoop.util.GenericOptionsParser.preProcessForWindows(GenericOptionsParser.java:432) 
     at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:478) 
     at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:170) 
     at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:153) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:64) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) 
     at org.apache.hadoop.fs.FsShell.main(FsShell.java:340) 
Exception in thread "main" java.lang.RuntimeException: core-site.xml not found 
     at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2269) 
     at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2195) 
     at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2112) 
     at org.apache.hadoop.conf.Configuration.set(Configuration.java:989) 
     at org.apache.hadoop.conf.Configuration.set(Configuration.java:961) 
     at org.apache.hadoop.conf.Configuration.setBoolean(Configuration.java:1299) 
     at org.apache.hadoop.util.GenericOptionsParser.processGeneralOptions(GenericOptionsParser.java:319) 
     at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:479) 
     at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:170) 
     at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:153) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:64) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84) 
     at org.apache.hadoop.fs.FsShell.main(FsShell.java:340) 

posso accedere bin/Hadoop versione insieme classpath e la maggior parte degli altri comandi. Ho pensato che forse avevo bisogno di un percorso di stile di Windows in modo che potesse essere conforme allo stile \ bin \ winutils. Così, ho impostato HADOOP_HOME = c: \ ecosystem \ hadoop-2.5.1 e questo errore è andato via. Tuttavia, ora ricevo un errore di collegamento durante l'esecuzione in Cygwin. Ho testato hadoop con HADOOP_HOME = c: \ ecosystem \ hadoop-2.5.1 tramite Comando di Windows, e posso eseguire un lavoro MapReduce senza problemi.

Voglio eseguire con successo hadoop in Cygwin e non voglio gestire errori di collegamento. Se tengo HADOOP_HOME =/cygdrive/c/ecosystem/hadoop-2.5.1, c'è un modo in cui posso impostare hadoop-config o qualche altro file per cercare il percorso di stile di Windows se il percorso Cygwin fallisce o è nullo ? Forse qualcosa di simile in Hadoop-config:

if ["$HADOOP_HOME" = ""]; then 
    HADOOP_HOME=$(cygpath -w "$HADOOP_HOME") 
fi 

Ovviamente questo particolare codice non ha funzionato in Hadoop-config, ma suppongo che si otterrà l'idea generale. Qualsiasi aiuto sarebbe apprezzato.

+0

Qualsiasi motivo per cui stai utilizzando cygmin? Hadoop2 è utilizzabile su Windows (vedi https://wiki.apache.org/hadoop/Hadoop2OnWindows) – fxm

+0

Hadoop, da solo, ha funzionato bene dal comando di Windows.Tuttavia, volevo testare un'integrazione con hive e alcuni framework di database. Dato che questi framework non sono fatti apposta per Windows, volevo sfruttare cygwin. Ho finito per costruire solo un box Linux, e poi costruire il mio ecosistema lì. Ha funzionato perfettamente – datasci

risposta

2

Dato che ero in grado di operare con successo con Hadoop tramite il comando Windows, non avrebbe avuto molto senso perdere tempo a cercare di capire come farlo funzionare con cygwin. Invece, per il mio più grande ecosistema Hadoop, l'ho semplicemente realizzato su linux. È super facile da usare ed è di gran lunga la migliore decisione che ho preso.

0

Provare a modificare hadoop/hdfs/script di shell shell aggiungere -Dhadoop.home.dir = diritto nel punto in cui viene richiamato il comando JAVA.

Potrebbe essere necessario aggiungere questi script di shell if ["$ HADOOP_HOME" = ""]; poi HADOOP_HOME = $ (cygpath -w "$ HADOOP_HOME") fi

caso peggiore, si dispone già di accesso src modificarlo compilarlo e impostare la variabile casa lì compilarlo e inserirlo al vaso.

+1

a meno che tu non abbia la conferma con la risposta, per favore pubblicali come commenti – ThePredator

+0

Beh, per me funziona bene su Windows 7, ma non su xp – RockSolid

7

Ho risolto un errore simile con Eclipse quando stavo cercando di eseguire il programma Hadoop MR localmente in Windows impostando la variabile di ambiente HADOOP_HOME tramite Eclipse: Esegui-> Esegui configurazioni-> Ambiente.

0

rif. https://issues.apache.org/jira/browse/HADOOP-10133

HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.home.dir="$(cygpath -pw "$HADOOP_PREFIX")""

Sulla base di questo, ho aggiunto la seguente riga alla mia .zshrc (o .bashrc per voi):

export HADOOP_PREFIX=`cygpath -w $HADOOP_HOME` 

Se non è stato impostato $ HADOOP_HOME, si dovrebbe.

Problemi correlati