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.