这段时间读了nutch2.0的部分源码,经过对源码的分析对nutch2.0有了初步的了解,这里将记录下对源码的分析和分析中遇到的问题,以便以后学习和解决问题。
本篇将从以下几方面概要介绍nutch2.0
- nutch2.0 gora版介绍
- nutch2.0的搭建
- 运行nutch命令抓取
1.nutch2.0 gora版介绍
nutch的开发主要有两个方向,一个是nutch1.x,存储层仍是基于文件系统,只是功能上的完善,另一个是nutch2.x,主要改进在于存储层的抽象,通过使用NoSql并利用gora抽象出来,把原来的CrawlDb,Segments与LinkDB都整合到一个表webpage里,每一步操作通过一些标记列进行控制,目前支持的nosql数据库有Cassandra,hbase,accumulo,也支持关系数据库mysql。这样有两个好处,一方面使读取更新单条数据变的方便,另一方面更新CrawlDb时不必像以前那样用MR任务读取之前所有urls,再与新的urls进行合并,现在只要简单的对数据进行查找与更新就可以了。
2.nutch2.0的搭建
- 下载nutch2.0 http://www.apache.org/dyn/closer.cgi/nutch/
- 修改nutch目录下conf/nutch-site.xml
<property> <name>storage.data.store.class</name> <value>org.apache.gora.hbase.store.HBaseStore</value> <description>Default class for storing data</description> </property>
- 修改ivy/ivy.xml
<!-- Uncomment this to use HBase as Gora backend. --> <dependency org="org.apache.gora" name="gora-hbase" rev="0.2" conf="*->default" />
- 修改conf/gora.properties
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
- 其他配置和nutch1.x一样,但是不要忘记配置那些属性
- 确保hbase正常运行,编译nutch2.0——>ant runtime
3.运行nutch命令抓取
- 单机环境在runtime/local/下执行
bin/nutch crawl urls -depth 3 -topN 5urls是当前路径下的种子文件夹,
-threads 决定同时抓取的线程数,
-depth 决定从首页开始应该抓取的链接深度,
-topN 决定每一级深度上要抓取的最大网页数
- 分布式环境在runtime/deploy/下执行同样的命令
urls是hdfs里的文件
- 单步执行
bin/nutch inject urls
bin/nutch generate -topN 5
bin/nutch fetch
bin/nutch parse
bin/nutch updatedb
generate会生成batchid
fetch,parse,updatedb后可加上该batchid单独处理标记的页面,不加则处理数据库中全部页面。