分享

爬虫引擎-nutch2.2.1的使用

fanbells 2014-3-26 21:39:26 发表于 问题解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 25426
1、nutch可以做什么?        
2、在hbase进行升级时,nutch是否还可以正常使用?





已有(7)人评论

跳转到指定楼层
fanbells 发表于 2014-3-26 21:39:42
      首先说一下nutch是一个爬虫,可以根据自己添加的规则进行网站爬取,可以是单击模式,也可以是集群模式。            先决条件:首先必须保证hadoop、hbase、ant已经安装。我用的是hadoop1.2,hbase0.94,ant1.9.1
安装
1、首先从官网下载tar包,我下载的是apache-nutch-2.2.1-src.tar.gz,(command:wget http://archive.apache.org/dist/nutch/2.2.1/apache-nutch-2.2.1-src.tar.gz )下载地址:http://archive.apache.org/dist/nutch/,可以根据自己的需要下载相应的版本。

2、对下载的tar包进行解压(tar xzvf  apache-nutch-2.2.1-src.tar.gz),可以根据自己的数据源进行不同的配置,我使用的是hbase来保存数据,所以介绍一下针对hbase的一些配置;
3、在NUTCH_HOME的conf目录下编辑nutch-site.xml,添加(默认是空的)
  1. <property>
  2.                 <name>storage.data.store.class</name>
  3.                 <value>org.apache.gora.hbase.store.HBaseStore</value>
  4.                 <description>Default class for storing data</description>
  5.         </property>
复制代码


4、在NUTCH_HOME的ivy目录下,编辑ivy.xml,将下面这行的注释去掉。
  1. <!-- Uncomment this to use HBase as Gora backend. -->
  2.    
  3.     <dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />
复制代码
5、
在NUTCH_HOME的conf目录下编辑gora.properties,将下面这行的注释去掉。
  1. gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
复制代码
6、在
NUTCH_HOME下使用ant命令进行编译,会生成runtime目录,这个目录下包含两个文件夹deploy、local,也就是本地和分布式运行的脚本。(编译时直接使用命令ant即可)
7、编译就可以通过./crawl <seedDir> <crawlID> <numberOfRounds>命令进行抓取了(seedDir种子目录,crawlID表名,默认格式crawlID_webpagenumberOfRounds 抓取深度)

问题1、在hbase进行升级的时候发现nutch出现了版本不匹配的问题,错误如下
  1. njectorJob: starting at 2013-10-21 16:44:03
  2. InjectorJob: Injecting urlDir: /usr/local/news
  3. Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HColumnDescriptor.setMaxVersions(I)V
  4.         at org.apache.gora.hbase.store.HBaseMapping$HBaseMappingBuilder.addFamilyProps(HBaseMapping.java:114)
  5.         at org.apache.gora.hbase.store.HBaseStore.readMapping(HBaseStore.java:612)
  6.         at org.apache.gora.hbase.store.HBaseStore.initialize(HBaseStore.java:110)
  7.         at org.apache.gora.store.DataStoreFactory.initializeDataStore(DataStoreFactory.java:102)
  8.         at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:161)
  9.         at org.apache.gora.store.DataStoreFactory.createDataStore(DataStoreFactory.java:135)
  10.         at org.apache.nutch.storage.StorageUtils.createWebStore(StorageUtils.java:75)
  11.         at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:221)
  12.         at org.apache.nutch.crawl.InjectorJob.inject(InjectorJob.java:251)
  13.         at org.apache.nutch.crawl.InjectorJob.run(InjectorJob.java:273)
  14.         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
  15.         at org.apache.nutch.crawl.InjectorJob.main(InjectorJob.java:282)
复制代码
原因是因为nutch默认支持的是hbase0.90.4,将hbase版本换成hbase0.92.2就可以了。

回复

使用道具 举报

wkzyehui 发表于 2014-3-27 15:51:42
路过 赞一个
回复

使用道具 举报

baipess 发表于 2014-3-28 21:36:24
aaaaaaaaaa
回复

使用道具 举报

471505881qq 发表于 2014-3-31 15:34:52
谢谢楼主分享,现在正在学习中!
回复

使用道具 举报

471505881qq 发表于 2014-4-1 11:43:06

谢谢楼主的分享!
回复

使用道具 举报

dongnanyouwo 发表于 2014-9-9 09:35:46
谢谢楼主分享,现在正在学习中!
回复

使用道具 举报

tang 发表于 2015-6-20 10:02:33
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条