在MyEclipse中搭建Nutch开发环境

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在MyEclipse中搭建Nutch开发环境
1以Java Project形式搭建
1.1第一步:下载Nutch的压缩包
到Nutch的网站上下载Nutch的压缩包,这里以Nutch1.1为例。

Nutch各版本的下载地址为/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文件,将其打开,找到配置项,如果该项的value值为空,则随便加入一个值,然后保存。

如下图所示。

1.8.2修改crawl-urlfilter.txt
在conf目录下找到crawl-urlfilter.txt文件,将其打开,找到# accept hosts in
配置项,将其下面的正则表达式+^http://([a-z0-9]*\.)*/改为+^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类运行成功。

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

①ng.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)
⑤⑥
1.10第十步:搭建完成,运行Nutch
经过上面的操作,相信Crawl类可以成功运行了,直至Nutch开发环境的搭建终于大功告成了。

现在,就可以利用Nutch来爬行互联网了。

相关文档
最新文档