很早官方就开始了nutch2.0的研发,而一直都是两线同时研发的,一个是普通版,一个是gora版本,也就是nutch2.0。下面介绍下怎样把项目导进eclipse中,这里我们的存储层使用nosql cassandra,本来想先使用mysql试试,发现启动不了爬虫,调试下发现原来还没有完全实现gora的sql数据库的存储功能,所以选择易用的cassandra作为测试。

需要知识:nutch基本知识,cassandra基本知识,用maven管理项目,用git管理下载项目。

需要工具:安装有maven插件的eclipse(插件可以通过eclipse的market place下载)

1.下载导入项目

       先从https://github.com/apache/nutch/tree/release-2.0把nutch2.0项目下载下来(windows点zip按钮会打包下载)

eclipse中把项目导进去(file-import-maven-existing maven project)

2.添加依赖

       导进去后src/java和src/test已经是源文件目录了,还必须把

/conf

/src/plugin/protocol-httpclient/src/java

/src/plugin/urlfilter-domain/src/java

/src/plugin/lib-http/src/java

/src/plugin/protocol-http/src/java

/src/plugin/urlfilter-suffix/src/java

/src/plugin/urlfilter-regex/src/java

/src/plugin/lib-regex-filter/src/java

/src/plugin/urlnormalizer-basic/src/java

/src/plugin/urlnormalizer-pass

/src/javasrc/plugin/urlnormalizer-regex/src/java

/src/plugin/scoring-opic/src/java

/src/plugin/parse-html/src/java

这些基本插件添加到classpath中,parse-html还需要用到额外的jar包,

还要nekohtml、tagsoup这两个jar包我们在下面的pom中添加。

3.添加额外的jar包到pom文件

       添加下面依赖到pom.xml文件,去掉原有的gora-core和gora-sql依赖

                <dependency>
                        <groupId>org.apache.gora</groupId>
                        <artifactId>gora-core</artifactId>
                        <version>0.2</version>
                        <optional>true</optional>
                </dependency>             
               
                <dependency>
                        <groupId>org.apache.gora</groupId>
                        <artifactId>gora-cassandra</artifactId>
                        <version>0.2</version>
                        <optional>true</optional>
                </dependency>
				
				<!-- html parser dependency -->
				<dependency>
					<groupId>net.sourceforge.nekohtml</groupId>
					<artifactId>nekohtml</artifactId>
					<version>1.9.15</version>
				</dependency>
				<dependency>
					<groupId>org.ccil.cowan.tagsoup</groupId>
					<artifactId>tagsoup</artifactId>
					<version>1.2</version>
				</dependency>

 

如果下载不了gora的包,可以到http://gora.apache.org/releases.html#Download下载后放到maven仓库。

4.修改配置文件

       把conf目录下带template结尾的文件都去掉template,如nutch-site.xml.template改成nutch-site.xml以防有些插件运行时找不到配置文件。

       修改conf下的nutch-site.xml添加一下设置(里面的value随你输):

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
		<name>http.agent.name</name>
		<value>your agent name</value>
	</property>

	<property>
		<name>http.agent.description</name>
		<value>escription</value>
	</property>

	<property>
		<name>http.agent.url</name>
		<value>your http agent url</value>
	</property>

	<property>
		<name>http.agent.email</name>
		<value>your http agent email</value>
	</property>
	<property>
	  <name>storage.data.store.class</name>
	  <value>org.apache.gora.cassandra.store.CassandraStore</value>
	  <description>设置gora存储层的实现类,可以设置成如下参数:
	  关系型数据库:org.apache.gora.sql.store.SqlStore 	   
	  cassandra:org.apache.gora.cassandra.store.CassandraStore	    
	  habse:org.apache.gora.hbase.store.HBaseStore	    
	  Accumulo:org.apache.gora.hbase.store.AccumuloStore	    
	  Avro:org.apache.gora.hbase.store.AvroStore	   
	  文件形式  :org.apache.gora.hbase.store.DataFileAvroStore	    
	  放在内存:org.apache.gora.hbase.store.MemStore
	  </description>
	</property>
</configuration>



 

修改conf下的/nutch/conf/gora.properties

注释掉关系数据库的配置信息:

#gora.sqlstore.jdbc.driver=org.hsqldb.jdbc.JDBCDriver
#gora.sqlstore.jdbc.url=jdbc:hsqldb://localhost/test
#gora.sqlstore.jdbc.user=sa
#gora.sqlstore.jdbc.password=

把gora.cassandrastore.servers=localhost:9160这行的注释去掉,表明使用cassandra作为存储层

5.启动cassandra

       启动cassandra,cassandra的启动参考:http://blog.csdn.net/laigood12345/article/details/6568409,我用的是1.01版本的cassandra。

6.执行爬虫

       在根目录下建立个urls文件夹,在文件夹下新建个txt文档,随便输入几个网站,如:http://www.163.com/,一行一个网站

       最后用java application运行/nutch/src/java/org/apache/nutch/crawl/Crawler.java 参数:urls -depth 2 爬虫就执行起来,爬取的网页会保存到cassandra中。

       索引nutch2.0和nutch1.3+一样,都是使用solr作为搜索程序,所以用法和nutch1.3+的一样,这里就不介绍了,用惯了elasticsearch,现在真心觉得solr太麻烦,配都懒得配个出来调试了,直接改源码,添加nutch文档索引到elasticsearch的方法。