2012-12-24 18 views
6

Sto cercando di utilizzare nutch 1.6 dall'ambiente Windows, ma ogni volta che provo a funzionare secondo la procedura indicata nel sito Nutch Tuorial Apache finisco sempre con la seguente eccezione:Utilizzando nutch in Windows 7

Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-ajayn\mapred\staging\ajayn-1231695575\.staging to 0700 

Ho cercato molto sulla rete ma non c'è una soluzione concreta. Si prega di notare che non ho istanze di hadoop installate o in esecuzione nel sistema e il mio unico scopo è provare nocciolo come agente per il web crawling.

È persino possibile eseguire nutch 1.6 in Windows e in caso affermativo qualsiasi suggerimento su come procedere ed evitare l'eccezione di cui sopra.

PS: se aiuta, la cartella/tmp/ha un attributo di sola lettura ad esso collegato e non cambia anche se si tenta di farlo. Anche da cygwin ho provato a impostare i permessi del file 777, ma ogni volta che provo a eseguire l'istanza di nutch, viene creata una nuova cartella, ad esempio: "ajayn-1231695575" che non ha diritti di esecuzione.

Grazie

Ajay

risposta

0

Abbiamo avuto stessi problemi in fino Nutch 1.3, si consiglia di utilizzare un ambiente VM Ubuntu con box virtuale per lo sviluppo e una directory condivisa in modo da poter sviluppare con il vostro IDE di Windows e distribuire al tuo VM ed esegui Nutch su Linux.

1

Hai provato GettingNutchRunningWithWindows from the Nutch Wiki?

Alcuni dei miei studenti sperimentato molto e qui è il risultato del loro lavoro:

testato con nutch 1.7-http://www.apache.org/dyn/closer.cgi/nutch/1.7/apache-nutch-1.7-bin.zip Avrete anche bisogno Cygwin.

1) Estrai nutch al percorso senza spazi. Ad esempio:

d:\dev\ir\nutch-1.7 

2) Copia jdk in un posto senza spazi. Ho provato a creare un link simbolico all'interno di cygwin, ma non è andato bene. Per esempio

xcopy /S "C:\Program Files\Java\jdk1.7.0_21" c:\jdk1.7.0_21 

3) Nella configurazione Cygwin i percorsi java

3,1) export JAVA_HOME=/cygdrive/c/jdk1.7.0_21

3,2) export PATH=$JAVA_HOME/bin:$PATH

3,3) Controllare che tutto è corretto chiamando che Java. Dovrebbe restituire /cygdrive/c/jdk1.7.0_21/bin/java

COSÌ FAR - risolto il primo problema - con percorsi java errati. Ora al secondo problema - patch hadoop.

4) Patch Hadoop

https://issues.apache.org/jira/browse/HADOOP-7682 
https://github.com/congainc/patch-hadoop_7682-1.0.x-win 

In breve: - messo patch-hadoop_7682-1.0.x-win.jar in d:\dev\ir\nutch-1.7\lib - modificare d:\dev\ir\nutch-1.7\conf\nutch-site.xml aggiungendo il seguente:

<property> 
    <name>fs.file.impl</name> 
    <value>com.conga.services.hadoop.patch.HADOOP_7682.WinLocalFileSystem</value> 
    <description>Enables patch for issue HADOOP-7682 on Windows</description> 
</property> 

5) Hadoop Temp dir - Io sono non sono sicuro che sia necessario (prova prima di applicarlo), perché l'ho aggiunto prima di applicare la patch, ma nel mio d:\dev\ir\nutch-1.7\conf\nutch-site.xml Ho

<property> 
    <name>hadoop.tmp.dir</name> 
    <value>C:\tmp\asd</value> 
</property> 

6) Hadoop versione -Non so se ciò sia necessario (prova prima di applicarlo), ho declassato Hadoop per Hadoop-core-0.20.205.0.jarbefore ho trovato il cerotto e rimane ancora questo sul mio setup. Se si trova questo necessario è qui: http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/0.20.205.0

6,1) Sposta hadoop-core-1.2.1.jar da d:\dev\ir\nutch-1.7\lib in una certa posizione per il backup

6.2) Scarica hadoop-core-0.20.205.0.jar a d:\dev\ir\nutch-1.7\lib

7) Alcune ottimizzazioni striscianti. Se devi eseguire la scansione di molti siti, non iniziare a eseguire la scansione con un elenco enorme di URL, una grande profondità e una topN. Se lo fai, vedresti che il nutch recupera i collegamenti uno alla volta dallo stesso sito in sequenza, aspettando 5 secondi tra una raccolta e l'altra. Il motivo è che la profondità 30 e la topN 200 possono riempire la prima coda di raccolta solo con collegamenti dallo stesso sito. Nutch non tenterà di recuperarli in una volta, perché per impostazione predefinita è configurato per non recuperare in più thread dallo stesso sito. Quindi sei condannato ad aspettare. Un sacco.

7.1) Per risolvere questo problema, eseguire prima alcune scansioni con profondità ridotta e topN - ad es.

bin/nutch crawl urls -dir crawl -depth 3 -topN 4 

Questo riempirà la coda prendere generato con gli URL da più di un sito

7.2) Allora si può provare strisciare una grande notte di con

bin/nutch crawl urls -dir crawl -depth 20 -topN 150 

7,3.) Per consentire per alcuni multi-threading aggiungi quanto segue al tuo nutch-site.xml. Permetterà a diversi thread di recuperare dallo stesso host in una volta.

NOTA! Leggere il significato delle proprietà su Internet prima di utilizzarle.

<property> 
    <name>fetcher.threads.fetch</name> 
    <value>16</value> 
</property> 
<property> 
    <name>fetcher.threads.per.queue</name> 
    <value>4</value> 
</property> 
<property> 
<property> 
    <name>fetcher.queue.mode</name> 
    <value>byDomain</value> 
</property> 
<name>fetcher.threads.per.host</name> 
    <value>8</value> 
    <description></description> 
</property> 
<property> 
    <name>fetcher.verbose</name> 
    <value>true</value> 
</property> 
<property> 
    <name>fetcher.server.min.delay</name> 
    <value>5.0</value> 
    <description>applicable ONLY if fetcher.threads.per.host is greater than 1 (i.e. the host blocking is turned off).</description> 
</property> 
</configuration> 

Nota: Quando si strisciare un sacco di siti, assicurarsi che il D:\Dev\id\apache-nutch-1.7\conf\regex-urlfilter.txt comprendono solo i siti in cui si è interessati. Altrimenti finirai con "Internet" sul tuo disco.