zoukankan      html  css  js  c++  java
  • window环境下在myeclipse中配置nutch

    由于论文需要,最近在研究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,点击FileNewJava Project新建一个Java项目,输入Project NameNutch1.1,点击Finish按钮。如下图所示。

     

     

    1.3 第三步:导入Nutch的代码

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

     

    src/java目录下的整个org文件夹copyNutch1.1项目的src目录下。

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

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

     

    1.5 第五步:替换NutchHadoop的核心包

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

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

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

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

     

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

    Nutch1.1目录上单击右键Build PathConfigure 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 PathUse 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包。

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

     

    ②Job failed!

     

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

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

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

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

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

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

     

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

     

    ③Input path does not exist

     

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

     

    ④Too small initial heap

     

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

    ⑤⑥

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

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

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

     

    1.11 查询搜索:

     

    nutch提供了类似googlebaidu的网页页面,关闭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"/>

     

     myeclipse中导入的nutch项目以及本地用到的nutch环境,百度云分享地址:

    http://pan.baidu.com/s/1c0cP5OO

     

  • 相关阅读:
    HDU 3081 Marriage Match II
    HDU 4292 Food
    HDU 4322 Candy
    HDU 4183 Pahom on Water
    POJ 1966 Cable TV Network
    HDU 3605 Escape
    HDU 3338 Kakuro Extension
    HDU 3572 Task Schedule
    HDU 3998 Sequence
    Burning Midnight Oil
  • 原文地址:https://www.cnblogs.com/song555/p/2917748.html
Copyright © 2011-2022 走看看