NUTCH的分布式部署与运行

来源:互联网 发布:织梦 栏目id if 判断 编辑:程序博客网 时间:2024/06/06 08:50

保留转载法律声明。

部分内容来自于nutch wiki的网络翻译。

本文只有nutch的安装、编译、部署和运行,没有hadoop和debug相关信息。


1.   ant的安装

ant是一个基于JAVA的自动化脚本引擎,脚本格式为XML。除了做JAVA编译相关任务外,ANT还可以通过插件实现很多应用的调用。

ANT的基本概念:Java的Makefile

当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。

每个ant脚本(缺省叫build.xml)中设置了一系列任务(target):比如对于一个一般的项目可能需要有以下任务。

任务1:usage 打印本脚本的帮助信息(缺省)

任务2:clean <--init 清空初始化环境

任务3:javadoc <--build <-- init 生成JAVADOC

任务4:jar <-- build<-- init 生成JAR

任务5:all <-- jar +javadoc <-- build <-- init 完成以上所有任务:jar javadoc

而多个任务之间往往又包含了一定了依赖关系:比如把整个应用打包任务(jar)的这个依赖于编译任务(build),而编译任务又依赖于整个环境初始化任 务(init)等。

ANT的安装

解包后在系统可执行路径中加入指向ant的bin的路径就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:

export ANT_HOME=/home/training/apache-ant-1.9.3

export JAVA_HOME=/usr/java/jdk1.6.0_31/

export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin

这样执行ant 后,如果不指定配置文件ant会缺省找build.xml这个配置文件,并根据配置文件执行任务,缺省的任务设置可以指向最常用的任务,比如: build,或指向打印帮助信息:usage,告诉用户有那些脚本选项可以使用。


2.   Nutch的编译

因为自nutch-1.7开始就不再提供可(分布式)部署的Nutch二进制文件,而且nutch-2.x版本也只有源码。

在nutch主目录下执行ant命令,对ant源代码进行编译。根据各自的带宽情况,所需要的时间是不一样的。下载过程及成功信息如下面两张图所示,在第二张图的最后,可以看到提示信息BUILD SUCCESSFUL,说明编译成功,若提示信息为BUILD FAILED,则说明编译失败,需要根据编译过程中输出的信息查找错误原因

编译成功后,再执行ls –al命令,发现目录结构跟编译前发现了变化。新增了build和runtime目录。我们需要的就是runtime/deploy目录下的文件。

 

3.   Nutch的配置与部署

 conf/nutch-site.xml配置文件中添加你的代理名称字段(http.agent.name),它的作用是在爬取网页时,告诉服务器自己是谁。配置属性如下:

<property>

 <name>http.agent.name</name>

 <value>My Nutch Spider</value>

</property>

然后在NUTCH_HOME目录中新建文件夹 urls ,新建文本文档 /urls/seed.txt 。在seed.txt中写入我们要爬取的url 地址,例如:

http://nutch.apache.org/

如果我们只爬取一个网站的内容,就要在urls过滤配置文件 — conf/regex-urlfilter.txt中添加一个正则表达式,例如:

+^http://([a-z0-9]*\.)*nutch.apache.org/

很简单,这样我们就完成了本地模式的nutch配置。但我们的目标是nutch的分布式运行部署,所以我们还要搭建好一个Hadoop集群,如何配置一个集群请看智能推荐引擎项目的早期文档。

 

4.   运行Nutch爬虫

在本地模式下运行nutch是很简单的,我们的重点是分布式执行。

1.    将urls/文件夹放到hdfs中

hadoop fs –put urls

2.    执行爬虫命令

hadoop jar apache-nutch-1.7.joborg.apache.nutch.crawl.Crawl urls -dir crawl -depth 3 -topN 5

3.    爬取的信息会放在HDFS上的crawl文件夹中,等待进一步处理


下节会说说运行nutch出现的一些错误debug。

0 0