window环境下在myeclipse中配置nutch

来源:互联网 发布:淘宝卖iphone推荐 编辑:程序博客网 时间:2024/05/18 01:54

原文地址:http://www.th7.cn/system/win/201302/37104.shtml


由于论文需要,最近在研究nutch,网上几乎没有一篇在window环境下能够配置正确的文档.今天一天的努力,终于配置成功了!现在将资料和配置过程整理如下.

1、安装Cygwin
    
  首先,到 http://www.cygwin.com/官网上下在setup.exe安装程序,下载后双击它,出现程序安装的向导界面(如图1所示)。
    
    
  点击“下一步”后,安装向导要求选择Cygwin的安装方式,如图2所示:
    
    
  图示中共有三种安装方式:
  (1)Install from Internet:从Internet上下载并安装软件;
  (2)Download Without Installing:从Internet上下载安装的文件,但暂时不安装;
  (3)Install from Local Directory:从本地含有安装文件的目录进行安装。
  我们选择第三项“Install from Inter”后,点击“下一步”,如图3所示:
    
    
  安装向导要求选择Cygwin的安装路径,我们可以在“Root Directory”文本框中更改安装路径,点击“下一步”,如图4所示:
    
            
  安装向导要求选择下载的Cygwin安装文件的本地存储路径,可以在“Local Package Directory”中设置,点击“下一步”,如图5所示:
    
    
  安装向导显示出所要安装的内容列表,用户可以根据自己的实际需要来决定安装哪些程序。点击循环箭头图标后面的文字,可以更改安装的方式,常用的方式有Default(表示只安装缺省的安装项)、Install(表示安装全部程序,空间要求较大)、Reinstall(表示重新安装程序)。推荐选择“Install”方式,一步到位,以免后扰,不过用户应保证至少有2G以上的空间可供使用。点击“下一步”后,就开始正式的安装了(如图6所示)。
    
    
  最后出现如图7所示的窗口,点击“完成”后,Cygwin安装完毕。
    
    
   Nutch 的脚本都是用 Linux 的 Shell 写的,所以在 Windows 平台需要一个 Shell 解释程 序。Cygwin 是一个在 Windows 下的模拟 Linux 系统程序 。    
  2、安装Nutch
    
  去http://mirror.vmmatrix.net/apache/lucene/nutch/下载到Nutch的最新版本,将其解压到指定目录中,如笔者是将其解压到I:/nutch-1.1中。
    
  3、测试Nutch命令
    
  在运行Nutch的脚本命令前,需要设置一些环境变量。Cygwin提供了一个名为cygwin.bat的文件,通过它可以自动完成必需环境变量的设置。该文件可在cygwin所在的根目录下找到,感兴趣的读者还可通过UltraEdit等编辑器打开该文件一查究竟。其实Cygwin安装完成之后,会在Windows系统桌面生成一图标,如图8所示:
    
    
  此图标就是cygwin根目录下cygwin.bat文件的快捷方式,双击此图标将打开一类似DOS窗口。由于先前笔者将Nutch的压缩包解压至I:/nutch-0.7.1中,故在此命令窗口中输入命令“cd /cygdrive/i/nutch-1.1”,读者可根据自己的安装路径进行相应的修改,然后使用命令“ls -l”可查看nutch-0.7.1中的所有子目录及文件信息。执行命令“bin/nutch”,如果读者能看到如图9所示的提示,那恭喜你,Nutch在Windows系统中的安装已经大功告成了!

cygwin 环境下 , 进入 windows 某个盘加cygdrive , cd /cygdrive/d/ 就相当于进入 d 盘。在这里你使用命令时,注意路径的正确性。
    

上面是讲解了如何装cygwin,在使用nutch前,这个cywin是必须要安装的,且要进入到nutch的安装目录下,执行bin/nutch命令成功后,nutch才能正常使用.

注意:在选择cygwin的下载地址时选择最上边第一个地址下载比较快.

注意:在cygwin的安装过程中如果出现断网,是可以重新接着上次的下载进度继续下载的,重新点击setup.exe,在

这里,选择reInstall,则为接着上次的下载.

注意:在使用bin/nutch命令前,需要使用CD命令进入到nutch的安装目录下再使用.例如我下载nutch-1.1后,nutch-1.1的目录如下.

那么首先执行cd /cygdrive/c/Documents and Settings/Administrator/桌面/apache-nutch-1.1-bin/apache-nutch-1.1-bin,再执行bin/nutch.

安装完cygwin后,就可以在myeclipse中配置nutch了,如下:

在MyEclipse中搭建Nutch开发环境

1 以Java Project形式搭建

1.1 第一步:下载Nutch的压缩包

到Nutch的网站上下载Nutch的压缩包,这里以Nutch1.1为例。Nutch各版本的下载地址为http://archive.apache.org/dist/nutch/,进入该网页后,找到apache-nutch-1.1-bin.tar.gz文件,将其下载到自己的电脑里。

1.2 第二步:新建一个Java项目

打开MyEclipse,点击File→New→Java Project新建一个Java项目,输入Project Name如Nutch1.1,点击Finish按钮。如下图所示。

 

 

 

1.3 第三步:导入Nutch的代码

将第一步下载的Nutch压缩包解压,解压后的目录结构如下图所示。

 

将src/java目录下的整个org文件夹copy到Nutch1.1项目的src目录下。

1.4 第四步:导入Nutch的配置文件、Jar包、插件

在第三步解压后的目录下,找到conf、lib、plugins三个文件夹,将这三个文件夹copy到Nutch1.1项目的根目录下(即与src目录同级)。Copy完后,Nutch1.1项目的目录结构如图所示。

 

1.5 第五步:替换Nutch中Hadoop的核心包

官方版本的Hadoop是不支持Windows下的存取操作的,我们需要将其替换为自己修改过的Jar包。在Nutch1.1项目的lib目录下,找到Hadoop的核心包(如:hadoop-0.20.2-core.jar),将其删除,然后将自己的Jar包(hadoop-0.21.0-core.jar)copy到该目录下。

注意:这一步,如果没有修改过的包,则可以略过这一步,暂时不影响环境的配置的.

1.6 第六步:在MyEclipse中为项目加载Jar包

在MyEclipse中刷新Nutch1.1项目,可以看到如下所示的目录结构。

 

我们会发现src目录下有错误存在,这是因为尽管该项目的lib目录下有Jar包,但是没有将其加入到ClassPath变量中。下面来解决这个问题。

在Nutch1.1目录上单击右键→Build Path→Configure Build Path…将打开如下所示的对话框。

 

在Libraries选项卡里,点击Add JARs…按钮,将出现如下所示的对话框。

 

展开Nutch1.1目录,展开lib目录,将lib文件夹及其子文件夹下的全部Jar包选中,然后单击OK按钮,如下图所示。

 

单击OK按钮后,将回到Libraries选项卡,此时该选项卡将如下所示。

 

最后,单击Libraries选项卡里的OK按钮,回到MyEclipse的主页面,看看src目录上的错误是不是消失了。

 

1.7 第七步:在MyEclipse中为项目加载配置文件

同理,虽然conf目录下已经有配置文件了,但Java虚拟机仍不能识别它们,因为它们也没有加入到ClassPath变量中。下面我们来将其加入。

在conf目录上单击右键→Build Path→Use as Source Folder。然后我们会发现conf目录变成了一个“Source Folder”,这样conf目录下的配置文件就被中加入到ClassPath变量中了。

 

1.8 第八步:修改Nutch中的配置

Nutch中默认的配置并不能使Nutch正常运行,需要修改几个地方后才能使Nutch运行起来。

1.8.1 修改nutch-default.xml

在conf目录下找到nutch-default.xml文件,将其打开,找到http.agent.name配置项,如果该项的value值为空,则随便加入一个值,然后保存。如下图所示。

 

1.8.2 修改crawl-urlfilter.txt

在conf目录下找到crawl-urlfilter.txt文件,将其打开,找到# accept hosts in MY.DOMAIN.NAME配置项,将其下面的正则表达式+^http://([a-z0-9]*/.)*MY.DOMAIN.NAME/改为+^http://([a-z0-9]*/.)*。找到# skip URLs containing certain characters as probable queries, etc. 配置项,如果其下面有-[?*!@=]形式的正则表达式,将其删除,或将-号改为+号。最后,保存所作的修改。如下图所示。

 

此外,还可以修改nutch-site.xml这个文件的配置。(这里略去,不作修改)

1.9 第九步:测试Crawl类,修正运行中的各种错误

经过以上的操作,Nutch的开发环境的搭建就有可能大功告成了,现在我们就可以开始运行Nutch了。我们通过Crawl类来运行Nutch,运行时将出现两种结果,一是顺利地运行完成,二是程序被各种异常终止(即运行失败)。如果出现第一种结果,恭喜你,Nutch的开发环境搭建成功;如果出现第二种结果,很抱歉,你可能离成功还有很远,不过没关系,你可以一步一个脚印,修正运行中的各个错误。

下面,按如下步骤来运行Nutch,修正运行中的各种错误。

1.9.1 运行前的准备工作

Nutch爬虫运行时需要一个入口,即一个或若干个url,通常将url存放在一个txt文件中。因此,运行前需要有这样的txt文件。

在Nutch1.1项目的根目录下新建一个名为“testData”的文件夹,在该文件夹下新建一个名为“urls.txt”的文件,在urls.txt文件中写入若干url,如下图所示。

 

1.9.2 打开Crawl类,配置运行参数

在MyEclipse中,展开src目录,找到org/apache/nutch/crawl包下的Crawl.java类,双击打开。

在MyEclipse的工具栏上找到,点击右边的黑色小三角,再点击Run Configurations…,将打开一个对话框,如下图所示。

 

点击Arguments选项卡,如下图所示输入运行参数和虚拟内存,点击Apply按钮,再点击Close按钮,返回主界面。

 

1.9.3 运行Crawl类

打开Crawl类,点击工具栏上左边的小三角,程序开始运行起来,耐心等待程序执行完成。

如果程序运行后,满足以下几个条件则认为程序运行正常,开发环境搭建成功。如果不满足以下的条件,则认为程序运行失败,需要修正各种错误。

①程序没有被异常终止

②运行中没有抛出较严重的异常

③运行结束时,控制台出现类似以下的信息

 

④运行结束后,testData目录下出现out文件夹,且out目录下出现如下所示的子文件夹,并且各子文件夹中的文件要有数据

 

1.9.4 修正错误,直至运行成功

如果上一步中,Crawl类运行成功,则此步可以跳过。

如果上一步中,Crawl类运行失败,则要根据实际情况,一步一个脚印,碰到一个错误修正一个错误,直到Crawl类运行成功。

下面给出运行中常见的错误及其解决方法。

①java.lang.NoClassDefFoundError

这类异常是因为没有找到相应的类文件,通常是缺少Jar包。

以下图的异常为例,该异常是因为缺少jackson的Jar包,因而找不到相应的类文件。解决方法是:将jackson-core-asl-1.4.2.jar和jackson-mapper-asl-1.4.2.jar文件加入到lib目录下,再通过MyEclipse加入Jar包的方法将这两个Jar包加入到ClassPath变量中。

 

②Job failed!

 

Job failed是Nutch中最常见也是最复杂的问题,引发该异常的原因数不胜数,解决方法应视具体情况而定。遇到该问题时,通常可以按以下步骤来解决。

第一:检查Hadoop的核心包是否替换,没有则替换为自己修改过的Jar包,如:hadoop-0.21.0-core.jar。

第二:检查nutch-defult.xml是否修改,以及是否修改正确。

第三:检查crawl-urlfilter.txt是否修改,以及是否修改正确。

第四:以上三种方法仍然不能解决时,需要查看Hadoop的日志文件hadoop.log(该文件通常在项目的根目录下,也可能在其他地方),来找出出现问题的具体原因。

下面是hadoop.log的一个片段,该片段说明了引起Job failed的一个原因:avro的某些类文件未找到。因此,说明我们还要在项目中加入avro的Jar包,如:avro-1.3.2.jar。

 

下面是hadoop.log的另一个片段,该片段说明了引起Job failed的另一个原因:OutOfMemoryError(内存溢出错误)。这个错误说明运行的虚拟内存太小或者根本就没设置虚拟内存,解决方法是在配置Crawl运行参数的对话框中正确设置虚拟内存的大小。

 

③Input path does not exist

 

这个异常说明输入路径不存在,即含有url的txt文件不存在。引起这个异常的原因有两个,一个是没有所需的txt文件,另一个是运行参数配置错误。解决的方法是首先检查txt文件是否存在,然后检查Crawl的运行参数是否如下图的形式配置(注意斜杠和空格)。

 

④Too small initial heap

 

Crawl运行时直接输出上图的信息时,说明虚拟内存太小了,同时检查虚拟内存的配置,将其配置正确。(此时多为数字后面掉了m)

出现异常:Exception in thread "main" java.io.IOException: Cannot run program "chmod": CreateProcess error=2

解决办法:只需要把cygwin的bin目录加到windows的用户环境变量中就可以了,然后需要重启eclipse


1.10 第十步:搭建完成,运行Nutch

经过上面的操作,相信Crawl类可以成功运行了,直至Nutch开发环境的搭建终于大功告成了。现在,就可以利用Nutch来爬行互联网了。

注:到这里就完了,我基本上是按照上面的步骤配置成功的.希望能够对大家有所帮助,有不正确的地方也希望提出来!最近由于忙实验,赶论文,时间有限,希望大家见凉!

 

1.11 查询搜索:

 

nutch提供了类似google、baidu的网页页面,关闭tomcat服务,在nutch-1.1/下找到nutch-1.1.war文件,放到C:/Program Files/Apache Software Foundation/Tomcat7.0/webapps目录下,重新启动tomcat服务,则自动解压出nutch-1.1,修改nutch-1.1/WEB-INF/classes/nutch-site.xml文件内容如下:

 

<property>
  <name>http.agent.name</name>
  <value>sina</value>
</property>
<property>
  <name>searcher.dir</name>
<value>D:/MyEclipse 8.5/Workspaces/Nutch-1.1/testData/out</value>
</property>

(value的值是爬行后的sina目录位置)

 

注意:① nutch-1.2.war应在爬完网页再解压 ②每次修改nutch-site.xml都需要重启tomcat.

 

 

 

配置完成后,启动tomcat,输入http://localhost:8080/nutch-1.1,输入关键字sina,就会看到结果了。

 

 

 

 

 

解决中文问题

 

查询结果有时会出现乱码,解决方法如下:

 

打开tomcat7.0 目录下的conf/server.xml ,作如下修改:

 

 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>


原创粉丝点击