在Windows 7中使用Nutch

6

我正在尝试在Windows环境下使用Nutch 1.6,但每次按照Nutch Tuorial Apache网站上的步骤运行时,总是出现以下异常:

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

我在网络上进行了广泛的搜索,但没有找到确定的解决方案。请注意,我的系统中没有安装或运行任何hadoop实例,我的唯一目的是尝试将nutch作为网络爬虫代理使用。
是否可能在Windows上运行nutch 1.6?如果可以,请指导如何操作并避免以上异常。
PS:如果有帮助的话,/tmp/文件夹附加了只读属性,即使您尝试更改也不会改变。此外,我尝试使用cygwin设置文件权限777,但每次运行nutch实例时都会创建一个新文件夹,例如:"ajayn-1231695575",它没有任何执行权限。
谢谢, Ajay
2个回答

1

你尝试过从Nutch Wiki中获取有关Windows的运行信息吗?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检查所有是否正确。应返回/cygdrive/c/jdk1.7.0_21/bin/java

到目前为止 - 已解决第一个问题 - 错误的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临时目录 - 我不确定这是否是必要的(在应用之前请尝试),因为我在应用补丁之前就已经添加了它,但在我的 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.jard:\dev\ir\nutch-1.7\lib移动到某个位置进行备份

6.2) 下载hadoop-core-0.20.205.0.jard:\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文件中只包含你感兴趣的网站。否则,你将在你的硬盘上得到“互联网”。


0

在Nutch 1.3之前,我们遇到了同样的问题,我们建议使用Ubuntu虚拟机环境和共享目录进行开发,这样您就可以在Windows上使用自己的IDE进行开发,在VM上部署并在Linux上运行Nutch。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接