2013-03-03 10 views
8

sto cercando di utente Solr con Nutch su una macchina Windows e sto ottenendo il seguente errore:Nutch in Windows: Impossibile impostare le autorizzazioni di percorso

Exception in thread "main" java.io.IOException: Failed to set permissions of path: c:\temp\mapred\staging\admin-1654213299\.staging to 0700 

Da un sacco di discussioni che ho imparato, quel casino che sembra essere usato da nutch fa un po 'di magia chmod che funzionerà su macchine unix, ma non su windows.

Questo problema esiste da più di un anno. Ho trovato un thread, in cui viene mostrata la riga di codice e una correzione proposta. Sono davvero loro solo uno che ha questo problema? Tutti gli altri stanno creando una build personalizzata per eseguire nutch su Windows? O c'è qualche opzione per disabilitare la roba hadoop o un'altra soluzione? Forse un altro crawler che nutch?

Grazie mille. Boris

Ecco la traccia dello stack di quello che sto facendo ....

[email protected] /cygdrive/c/solr/apache-nutch-1.6 
    $ bin/nutch crawl urls -dir crawl -depth 3 -topN 5 -solr http://localhost:8080/solr-4.1.0 
    cygpath: can't convert empty path 
    crawl started in: crawl 
    rootUrlDir = urls 
    threads = 10 
    depth = 3 
    solrUrl=http://localhost:8080/solr-4.1.0 
    topN = 5 
    Injector: starting at 2013-03-03 17:43:15 
    Injector: crawlDb: crawl/crawldb 
    Injector: urlDir: urls 
    Injector: Converting injected urls to crawl db entries. 
    Exception in thread "main" java.io.IOException: Failed to set permissions of path:   c:\temp\mapred\staging\admin-1654213299\.staging to 0700 
     at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689) 
     at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662) 
     at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) 
     at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344) 
     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:856) 
     at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Unknown Source) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 
     at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850) 
     at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:824) 
     at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1261) 
     at org.apache.nutch.crawl.Injector.inject(Injector.java:281) 
     at org.apache.nutch.crawl.Crawl.run(Crawl.java:127) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
     at org.apache.nutch.crawl.Crawl.main(Crawl.java:55) 
+0

Hai provato a eseguirlo come amministratore? – jpee

+1

Questa risposta mi ha aiutato a superare l'eccezione: http://stackoverflow.com/a/18381218/854386 – Andrey

risposta

4

Mi ci è voluto un po 'per farlo funzionare ma ecco la soluzione che funziona su nutch 1.7.

  1. Scarica Hadoop Core 0.20.2 dal repository MVN
  2. Sostituire (nutch-directory) /lib/hadoop-core-1.2.0.jar con il file scaricato rinominandolo con lo stesso nome.

Questo dovrebbe essere.

Spiegazione

Questo problema è causato da Hadoop in quanto presuppone che si sta eseguendo su UNIX e si attiene alle regole di autorizzazione di file. Il problema è stato risolto nel 2011, ma in realtà Nutch non ha aggiornato la versione di hadoop che usano. Le correzioni pertinenti sono here e here

+0

Grazie, questo ha funzionato bene –

1

ho Nutch in esecuzione su Windows, non di generazione personalizzata. È passato molto tempo da quando non l'ho ancora usato. Ma una cosa che mi ci è voluto un po 'per capire, è che devi eseguire cygwin come amministratore di Windows per ottenere i diritti necessari.

+0

Grazie per il suggerimento, ma sempre lo stesso comportamento. Quale versione nutch stai usando? –

+0

L'ho fatto funzionare con hadoop 19, nutch 1.0/1.1/1.2. Windows Vista. –

+0

prova a fare lo stesso manualmente con cygwin, per essere assolutamente sicuro –

2

Anche noi stiamo usando Nutch, ma non è supportato per l'esecuzione su Windows, su Cygwin la nostra versione 1.4 aveva problemi simili a quelli che avevi, qualcosa di simile a mapreduce.

Abbiamo risolto il problema utilizzando una VM (Virtual box) con Ubuntu e una directory condivisa tra Windows e Linux, in modo che possiamo sviluppare e creare su Windows ed eseguire Nutch (scansione) su Linux.

0

Suggerisco un approccio diverso. Controlla this link out. Spiega come ingoiare l'errore su Windows e non richiede il downgrade di Hadoop o la ricostruzione di Nutch. Ho provato su Nutch 2.1, ma si applica anche ad altre versioni. Ho anche creato a simple .bat for starting the crawler and indexer, ma è pensato per Nutch 2.x, potrebbe non essere applicabile per Nutch 1.x.

0

È necessario modificare le dipendenze del progetto hadoop-core e hadoop-tools. Sto usando la versione 0.20.2 e funziona bene.