您是否尝试过 Nutch Wiki 中的 GettingNutchRunningWithWindows?
我的一些学生进行了很多实验,以下是他们的工作结果:
用nutch 1.7测试-http://www.apache.org/dyn/closer.cgi/nutch/1.7/apache-nutch-1.7-bin.zip
你还需要cygwin。
1)将 nutch提取到没有空格的路径。例如:
d:\dev\ir\nutch-1.7
2)将jdk复制到没有空格的某个地方。我试图在 cygwin 中创建一个符号链接,但它并不顺利。例如
xcopy /S "C:\Program Files\Java\jdk1.7.0_21" c:\jdk1.7.0_21
3)在cygwin中设置java的路径
3.1)export JAVA_HOME=/cygdrive/c/jdk1.7.0_21
3.2)export PATH=$JAVA_HOME/bin:$PATH
3,3) 通过调用 which java.xml 来检查一切是否正确。应该返回/cygdrive/c/jdk1.7.0_21/bin/java
SO FAR - 修复了第一个问题 - java 路径不正确。现在到第二个问题 - hadoop修补。
4)补丁hadoop
https://issues.apache.org/jira/browse/HADOOP-7682
https://github.com/congainc/patch-hadoop_7682-1.0.x-win
简而言之: - 放入patch-hadoop_7682-1.0.x-win.jar
-d:\dev\ir\nutch-1.7\lib
通过d:\dev\ir\nutch-1.7\conf\nutch-site.xml
添加以下内容进行编辑:
<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 - 我不确定这是否有必要(在应用之前尝试),因为我在应用补丁之前添加了它,但在我d:\dev\ir\nutch-1.7\conf\nutch-site.xml
有
<property>
<name>hadoop.tmp.dir</name>
<value>C:\tmp\asd</value>
</property>
6) Hadoop 版本- 我不确定这是否必要(在应用之前尝试),我在找到补丁之前将 hadoop 降级为 hadoop-core-0.20.205.0.jar,它仍然保留在我的设置中。如果您觉得有必要,请点击此处:http://mvnrepository.com/artifact/org.apache.hadoop/hadoop-core/0.20.205.0
6.1) 移动hadoop-core-1.2.1.jar
到d:\dev\ir\nutch-1.7\lib
某个位置进行备份
6.2) 下载hadoop-core-0.20.205.0.jar
到d:\dev\ir\nutch-1.7\lib
7) 一些爬取优化。如果您需要抓取大量网站,请不要从大量 url 列表、大深度和 topN 开始抓取。如果这样做,您会看到 nutch 依次从同一站点一次获取一个链接,在两次获取之间等待 5 秒。原因是深度 30 和 topN 200 很可能仅使用来自同一站点的链接填充第一个获取队列。Nutch 不会尝试一次获取它们,因为默认情况下它被配置为不从同一站点获取多个线程。所以你注定要等待。很多。
7.1)为了解决这个问题,首先运行几个小深度和topN的爬网 - 例如
bin/nutch crawl urls -dir crawl -depth 3 -topN 4
这将使用来自多个站点的 url 填充生成的获取队列
7.2)然后你可以尝试一个大晚上的爬行
bin/nutch crawl urls -dir crawl -depth 20 -topN 150
7.3.) 要允许一些多线程,请将以下内容添加到您的nutch-site.xml
. 它将允许多个线程一次从同一主机获取。
笔记!在使用它们之前阅读互联网中属性的含义。
<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>
注意:当您抓取大量网站时,请确保您D:\Dev\id\apache-nutch-1.7\conf\regex-urlfilter.txt
只包含您感兴趣的网站。否则,您最终会在磁盘上看到“Internet”。