Esecuzione di Apache Hadoop 2.1.0 su Windows

Sono nuovo di Hadoop e ho incontrato problemi nel tentativo di eseguirlo sulla mia macchina Windows 7. In particolare sono interessato all’esecuzione di Hadoop 2.1.0 poiché le sue note di rilascio menzionano il fatto che è in esecuzione su Windows. So che posso provare a eseguire le versioni 1.x su Windows con Cygwin o persino utilizzare VM preparate, ad esempio Cloudera, ma queste opzioni sono in qualche modo meno convenienti per me.

Dopo aver esaminato un tarball da http://apache-mirror.rbc.ru/pub/apache/hadoop/common/hadoop-2.1.0-beta/ ho scoperto che ci sono davvero alcuni script * .cmd che possono essere eseguiti senza Cygwin . Tutto ha funzionato bene quando ho creato una partizione HDFS, ma quando ho provato ad eseguire il daemon namenode di hdfs ho dovuto affrontare due errori: primo, non fatale, era che winutils.exe non poteva essere trovato (non era presente nel tarball scaricato). Ho trovato i sorgenti di questo componente nell’albero dei sorgenti di Apache Hadoop e lo ho compilato con Microsoft SDK e MSbuild. Grazie al messaggio di errore dettagliato era chiaro dove mettere l’eseguibile per soddisfare Hadoop. Ma il secondo errore che è fatale non contiene abbastanza informazioni da risolvere per me:

13/09/05 10:20:09 FATAL namenode.NameNode: Exception in namenode join java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method) at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:423) at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:952) at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:451) at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:282) at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:200) ... 13/09/05 10:20:09 INFO util.ExitUtil: Exiting with status 1 

Sembra che debba essere compilato qualcos’altro. Cercherò di build Hadoop dalla sorgente con Maven ma non c’è un modo più semplice? Non c’è qualche opzione, io non so, che possa disabilitare il codice nativo e rendere utilizzabile il tarball su Windows?

Grazie.

AGGIORNATO. Si Certamente. Il pacchetto “Homebrew” conteneva alcuni file extra, soprattutto winutils.exe e hadoop.dll. Con questo file, namenode e datanode sono stati avviati correttamente. Penso che la domanda possa essere chiusa. Non l’ho cancellato nel caso qualcuno affrontasse la stessa difficoltà.

AGGIORNATO 2. Per build il pacchetto “homebrew” ho fatto quanto segue:

  1. Hai delle fonti e le hai scompattate.
  2. Leggi attentamente BUILDING.txt.
  3. Dipendenze installate:
    3a) Windows SDK 7.1
    3b) Maven (Ho usato 3.0.5) 3c) JDK (Ho usato 1.7.25)
    3d) ProtocolBuffer (ho usato 2.5.0 – http://protobuf.googlecode.com/files/protoc-2.5.0-win32.zip ). Basta inserire il compilatore (protoc.exe) in alcune delle cartelle PATH.
    3e) Un set di strumenti da riga di comando UNIX (ho installato Cygwin)
  4. Riga di comando avviata di Windows SDK. Inizia | Tutti i programmi | Microsoft Windows SDK v7.1 | … Prompt dei comandi (Ho modificato questo collegamento, aggiungendo l’opzione / rilascio nella riga di comando per creare versioni di rilascio del codice nativo). Tutti i passaggi successivi vengono creati dalla finestra della riga di comando dell’SDK)
  5. Imposta l’ambiente:

    imposta JAVA_HOME = {path_to_JDK_root}

Sembra che JAVA_HOME NON DEVE contenere spazio!

 set PATH={path_to_maven_bin};%PATH% set Platform=x64 set PATH={path_to_cygwin_bin};%PATH% set PATH={path_to_protoc.exe};%PATH% 
  1. Dir cambiato nella cartella radice dei sorgenti (BUILDING.txt avverte che ci sono alcune limitazioni sulla lunghezza del percorso in modo che la radice dei sorgenti abbia un nome breve – Ho usato D: \ hds)
  2. Ran processo di costruzione:

    pacchetto mvn -Pdist -DskipTests

Puoi provare senza ‘skipTests’ ma sulla mia macchina alcuni test falliscono e la costruzione è terminata. Potrebbe essere collegato a problemi di collegamento sybolic menzionati in BUILDING .txt. 8. Selezionato il risultato in hadoop-dist \ target \ hadoop-2.1.0-beta (gli eseguibili di Windows e le DLL sono nella cartella ‘bin’)