eclipse中调试nutch2.0+cassandra

来源:互联网 发布:罗马人的故事版本 知乎 编辑:程序博客网 时间:2024/05/16 18:35

       很早官方就开始了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的方法。


参考资料:http://www.searchtech.pro/articles/2013/02/18/1361191389790.html