分享

Nutch 2.2.1 安装

dongnanyouwo 发表于 2014-9-1 09:22:37 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 39727
小弟想搭建一个Nutch+Hbase+Hadoop+eclipse+Mahout的开发平台,各位大神帮帮小弟吧,目前nutch安装这块问题比较多。求具体安装步骤,谢谢谢

已有(8)人评论

跳转到指定楼层
hyj 发表于 2014-9-1 10:39:04

回帖奖励 +1 云币

本帖最后由 hyj 于 2014-9-1 10:45 编辑
相信你已经找了不少资料,下面内容可以参考:安装配置主要是细心、明确他们的含义。这样遇到的问题就少了


介绍
Nutch 网络爬虫
Hbase 分布式存储系统
Solr搜索服务器


版本说明
由于Nutch\Hbase\Solr他们都各自做在自己的版本修改,所以配置他们三者有不同的方法.这里也是参考网络文档做了他们最新版本的配置  Nutch版本(2.2.1) apache-nutch-2.2.1-src.tar.gz;由于改版本的Nutch默认的Hbase版本是0.90.4 所以这里就使用的hbase-0.90.4.tar.gz    ;同时Nutch默认的Solr版本是3.4.0版本,但由于Solr4与三的版本变化比较大,所以这里我使用的是当前最新的4版本solr-4.4.0.tgz。
apache-nutch-2.2.1-src.tar.gz
hbase-0.90.4.tar.gz
solr-4.4.0.tgz


下载安装JDK
参考:
Linux安装JDK
安装Hbase
单机版的HBase
由于Hbase是一个分布式的数据库,所以我们经常与Hadoop联系起来一起用。可以参考(Hbase入门——安装),但我们在开放中其实未必有条件使用。使用这里就可以不于hadoop一起使用,使用这里就直接安装单击版的Hbase。来在官方的安装和使用http://hbase.apache.org/book/quickstart.html


解压hbase-0.90.4.tar.gz
先拷贝文件到/usr/local/目录下
$ tar xfz hbase-0.90.4.tar.gz$ chmod -R 777 hbase-0.90.4
编辑 conf/hbase-site.xml
在中添加如下内容。其实这里也可以不做修改,如果不做修改,就会把数据存放到tmp临时目录中,重启就没有数据。如果做简单的测试就不用麻烦去配置文件。
  1. <property>
  2.     <name>hbase.rootdir</name>
  3.     <value>file:////usr/local/hbase-0.90.4/hbase</value>
  4.   </property>
  5.   <property>
  6.     <name>hbase.zookeeper.property.dataDir</name>
  7.     <value>/usr/local/hbase-0.90.4/zookeeper</value>
  8.   </property>
复制代码



启动Hbase

$./cp hbase-0.90.4$ bin/start-hbase.sh
查看Logs日志,如果不报错就证明启动成功。


安装Nutch
在安装Nutch与Hbase结合前,可以先参考官方文档https://wiki.apache.org/nutch/Nutch2Tutorial
网上有很多Nutch与Mysql结合的实力,但Nutch与Hbase结合的很少,这里也是参考官方文档做了相应操作。


解压apache-nutch-2.2.1-src.tar.gz

  1. $ tar -zxvf apache-nutch-2.2.1-src.tar.gz
  2. $ mv apache-nutch-2.2.1-src nutch-2
  3. $ chmod -R 777 nutch-2
复制代码




修改conf/ nutch-site.xml

  1. <property>
  2. <name>storage.data.store.class</name>  <value>org.apache.gora.hbase.store.HBaseStore</value>
  3. <description>Default class for storing data</description>
  4. </property>
复制代码



修改ivy/ivy.xml
取消注释
  1. <dependency org="org.apache.gora" name="gora-hbase" rev="0.3" conf="*->default" />
复制代码



配置conf/gora.properties
添加
  1. gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
复制代码




安装ANT
由于nutch是基于ant安装的,使用首先要先安装ANT。安装可以参考
linux安装ant


安装Nutch
Nutch的安装需要基于网络,由于原文件中还有很多jar没有包含,所以修要运行ant来自动下载

  1. $ cd nutch-2
  2. $ ant
复制代码




这里需要等待一段时间,这里会在nutch-2下生成runtime目录
(180M左右)
,其实就是最后的二进制目录。


在配置nutch-2/runtime/local/conf/nutch-site.xml
在添加如下配置信息

在添加如下配置信息


  1. <property>
  2. <name>http.agent.name</name>
  3. <value>Your Nutch Spider</value>
  4. </property>
  5. <property>
  6. <name>http.accept.language</name>
  7. <value>ja-jp, en-us,en-gb,en;q=0.7,*;q=0.3</value>
  8. <description>Value of the “Accept-Language” request header field.
  9. This allows selecting non-English language as default one to retrieve.
  10. It is a useful setting for search engines build for certain national group.
  11. </description>
  12. </property>
  13. <property>
  14. <name>parser.character.encoding.default</name>
  15. <value>utf-8</value>
  16. <description>The character encoding to fall back to when no other information
  17. is available</description>
  18. </property>
复制代码




配置抓取网址
  1. $ cd runtime/local
  2. $ mkdir -p urls
  3. $ cd urls
  4. $ vi seed.txt
复制代码





在seed.txt添加
http://nutch.apache.org/

运行Nutch

  1. $ /bin/nutch inject urls
  2. $ /bin/nutch readdb
复制代码



如果不报错证明已成功安装

在Hbase测试

在运行
  1. hbase shell
  2. list
复制代码




就可以查看到webpage表,证明已经成功创建。

安装Solr
这里使用的是Solr4

解压solr-4.4.0.tar.gz
拷贝到/usr/local目录


  1. $ tar -zxvf solr-4.4.0.tar.gz
  2. $ mv solr-4.4.0 solr-4
  3. $ chmod -R 777 solr-4
复制代码




替换schema.xml文件
把下载的schema.xml文件替换掉 /usr/local/solr-4/example/solr/collection1/conf/schema.xml(这里正时solr4与nutch格式)

运行Solr

java -jar start.jar
通过浏览器访问
http://127.0.0.1:8983/solr 就可以参考相应的信息

运行Nutch提交
在nutch-2/runtime/local/bin/下面执行nutch的全部抓取过程:
inject>generate>fetch>parse>updatedb之后,可以执行solrindex的操作,用法如下:
  1. bin/nutch inject urls
  2. bin/nutch  generate -topN 3
复制代码
  1. bin/nutch fetch -all
  2. bin/nutch parse -all
  3. bin/nutch updatedb
复制代码
  1. bin/nutch  solrindex http://127.0.0.1:8983/solr/  -reindex
复制代码





回复

使用道具 举报

hyj 发表于 2014-9-1 10:51:01
nutch2.0完全分布式部署配置

nutch2.0的分布式环境依赖hadoop-0.20.2和hbase-0.90.*。

测试做在两台机器上,A(master):192.168.20.215,B(slave):192.168.20.214



目的是在A机上运行进程:

Hadoop: NameNode, SecondaryNameNode, JobTracker

Hbase: HMaster

在B机上运行进程:

Hadoop: DataNode, TaskTracker

Hbase: HQuorumPeer, HRegionServer



然后可以在此环境下运行nutch,OK,步骤如下:



1.配置hosts文件

A机和B机的/etc/hosts内容都如下:
127.0.0.1   localhost.localdomain   localhost
192.168.20.215  SYE
192.168.20.214  UBT


2.配置hadoop

A机的配置:
1》hadoop-env.sh

export JAVA_HOME=/opt/jdk1.6.0_21

2》core-site.xml


  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5.    <property>
  6.        <name>fs.default.name</name>
  7.        <value>hdfs://SYE:8020</value>
  8.    </property>
  9.    <property>
  10.        <name>hadoop.tmp.dir</name>  
  11.    
  12.        <value>/home/sychen/nutch/hadoop-0.20.2/hdfs_root</value>  
  13.        <description>A base for other temporary directories.
  14.        此处设为你自己想要的Hadoop根目录</description>  
  15.    </property>
  16. </configuration>
复制代码

3》hdfs-site.xml

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5.    <property>
  6.        <name>dfs.replication</name>
  7.        <value>1</value>
  8.        <description>副本个数,不配置默认是 3,应小于 datanode 机器数量</description>
  9.    </property>
  10. </configuration>
复制代码

4》mapred-site.xml
  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5.    <property>
  6.        <name>mapred.job.tracker</name>
  7.        <value>SYE:8000</value>
  8.        <description>jobtracker 标识:端口号,不是 URI</description>
  9.    </property>
  10. </configuration>
复制代码



5》masters

SYE

6》slaves
UBT



配置完毕后将这些配置文件复制到B机的相应目录中。或者如果B机中还没有Hadoop,可以将整个Hadoop复制过去。



3.配置Hbase

A机的配置:
1》hbase-env.sh


  1. export JAVA_HOME=/opt/jdk1.6.0_21
  2. export HBASE_CLASSPATH=/home/sychen/nutch/hadoop-0.20.2/conf
  3. export HBASE_MANAGES_ZK=true
复制代码

2》hbase-site.xml
  1. <configuration>
  2.    <property>
  3.        <name>hbase.rootdir</name>
  4.        <value>hdfs://SYE/hbase_root</value>
  5.    </property>
  6.    <property>
  7.        <name>hbase.cluster.distributed</name>
  8.        <value>true</value>
  9.    </property>
  10.    <property>
  11.        <name>hbase.zookeeper.quorum</name>
  12.        <value>UBT</value>
  13.    </property>
  14.    <property>
  15.        <name>hbase.zookeeper.property.dataDir</name>
  16.        <value>/home/sychen/nutch/hbase-0.90.5/zookeeper_data</value>
  17.    </property>
  18. </configuration>
复制代码

3》regionservers

UBT


配置完毕,将A机hbase的配置文件复制到B机的相应目录下。
OK,已经完成了大部分工作,现在可以启动Hadoop和hbase了。
在A机的hadoop/bin目录下执行:
./hadoop namenode -format

此时会依据配置文件生成hadoop的根目录
启动hadoop:
./start-all.sh


此时可以在浏览器中看到web界面。

在A机用jps查看:
sychen@SYE:~/nutch/hadoop-0.20.2/bin$ jps
3407 SecondaryNameNode
3605 Jps
3278 NameNode
3486 JobTracker

在B机用jps查看:
sychen@UBT:~/nutch/hadoop-0.20.2$ jps
3268 DataNode
3588 Jps
3411 TaskTracker


然后再启动hbase:
在A机的hbase/bin下执行:
./start-hbase.sh

用jps查看:
sychen@SYE:~/nutch/hbase-0.90.5/bin$ jps
3871 Jps
3407 SecondaryNameNode
3278 NameNode
3486 JobTracker
3755 HMaster

在B机下jps:
sychen@UBT:~/nutch/hadoop-0.20.2$ jps
3268 DataNode
3775 HQuorumPeer
3411 TaskTracker
4062 Jps
3911 HRegionServer

说明hbase已经正常启动。也可以通过web界面查看:http://192.168.20.215:60010
下面开始配置nutch

4.配置nutch
其实在nutch端没有什么需要配置的,只需要轻轻的将hbase/conf下的hbase-site.xml复制到hadoop/conf下即可,别问为什么,因为我也不知道,只是尝试了N多方式都不成功而最后发现这个办法可行而已。


复制完成之后,即可测试,在A机的nutch/runtime/deploy/bin下先put一个urls文件到hdfs上,之后执行:./nutch inject urls
如果能正常执行,则万事大吉,你会在hbase中发现一个叫做'webpage'的表,所有nutch抓取的数据都会在该表中存放。

5.solrindex
来补充一下索引:
1》先下载apache-solr-3.6.1,解压

2》在apache-solr-3.6.1/example目录下有一个start.jar文件,该文件可以启动solr服务:java -jar start.jar,但先别忙启动,因为还没有配置呢,配置在apache-solr-3.6.1/example/solr/conf/下
将该目录下的solrconfig.xml备份为solrconfig.xml.bak再对该文件操作,将其中的<str name="df">text</str>全部换为<str name="df">content</str>。再从nutch-2.0/conf/下面拷贝schema.xml到apache-solr-3.6.1/example/solr/conf/下面,覆盖原来的文件。

3》现在可以启动solr了:java -jar start.jar

4》在nutch-2.0/runtime/deploy/bin/下面执行nutch的全部抓取过程:inject>generate>fetch>parse>updatedb之后,可以执行solrindex的操作,用法如下:
Usage: SolrIndexerJob <solr url> (<batchId> | -all | -reindex) [-crawlId <id>]

其中<solr url>指代启动solr服务的ip:8983/solr,也就是说该参数可以这么写:http://ip:8983/solr/,下面这个较为关键:
跟着的参数是:(<batchId> | -all | -reindex),经过测试,需要执行两步才能成功建立索引文件:
a>./nutch solrindex http://192.168.20.215:8983/solr/ -all 或者 ./nutch solrindex http://192.168.20.215:8983/solr/ <batchId>
这里的batchId指每次generate的时候生成的batchId,可以在hbase中的webpage中查到,也会在执行generate步骤的时候在终端显示

b>./nutch solrindex http://192.168.20.215:8983/solr/ -reindex
这一步才能够生成索引文件(根据测试,具体原因不明),索引的文件在apache-solr-3.6.1/example/solr/data/index/下面,如下所示:
_0.fdt  _0.fnm  _0.nrm  _0.tii  segments_2
_0.fdx  _0.frq  _0.prx  _0.tis  segments.gen

5》现在可以在浏览器中测试了:http://192.168.20.215:8983/solr/
输入*,可以搜索出索引的全部内容,这个在索引的网页数量较少时可以测试是否索引成功。






回复

使用道具 举报

sstutu 发表于 2014-9-1 10:56:43

回帖奖励 +1 云币


配置中配置文件还是比较重要的,你可以看看下面三个文件:

Nutch-2.2.1学习之三Nutch配置文件

Nutch2.2.1的配置文件存放在Nutch目录下的conf文件夹下,对此文件夹下的配置文件做的修改,需要执行ant命令重新编译Nutch,由于编译所依赖的jar都已经缓存,重新编译花费的时间是很短暂的。

对该文件夹下的文件所做的修改,在重新编译后也会更新到runtime目录下的deploy和local目录下的conf目录中,所以大家不要奇怪,明明只是修改了根目录下的conf中的配置文件,local和deploy目录中的配置文件也做了相同的修改。现在就来看看conf目录下有哪些重要的配置文件。

Conf目录下的文件有:
automaton-urlfilter.txt、
gora-accumulo-mapping.xml、
hbase-site.xml、
nutch-site.xml、
regex-urlfilter.txt、
suffix-urlfilter.txt、
configuration.xsl、
gora-cassandra-mapping.xml、
httpclient-auth.xml、
parse-plugins.dtd、
schema-solr4.xml、
domain-suffixes.xml、
gora-hbase-mapping.xml、
log4j.properties、
parse-plugins.xml、
schema.xml、
domain-suffixes.xsd、
gora.properties、
nutch-conf.xsl、
prefix-urlfilter.txt、
solrindex-mapping.xml、
domain-urlfilter.txt、
gora-sql-mapping.xml、
nutch-default.xml、
regex-normalize.xml、
subcollections.xml




在这些文件中以txt结尾的文件用于定义爬取网页时的过滤规则,比如
正则表达式过滤、
前缀过滤、
后缀过滤
等,有些文件是用于solr索引的,比如schema-solr4.xml、schema.xml等,对于刚开始学习Nutch的人(包括自己),比较重要的文件有三个:
nutch-site.xml、
gora.properties、
nutch-default.xml



nutch-default.xml保存了Nutch所有可用的属性名称及默认的值,当需要修改某些属性值时,可以拷贝该文件中的属性到nutch-site.xml中,并修改为自定义的值。不做任何配置修改的情况,文件nutch-site.xml不包含任何属性和属性值,该文件用于保存用户调整Nutch配置后的属性。

gora.properties用于配置Gora的属性,由于Nutch2.x版本存储采用Gora访问Cassandra、HBase、Accumulo、Avro等,需要在该文件中制定Gora属性,比如指定默认的存储方式gora.datastore.default= org.apache.gora.hbase.store.HBaseStore,该属性的值可以在nutch-default.xml中查找storage.data.store.class属性取得,在不做gora.properties文件修改的情况下,存储类为org.apache.gora.memory.store.MemStore,该类将数据存储在内存中,仅用于测试目的。本人在学习Nutch2.2.1的过程中,存储使用了HBase,所以在gora.properties中添加了
  1. gora.datastore.default=org.apache.gora.hbase.store.HBaseStore,
复制代码




在nutch-site.xml中添加了



  1. <property>  
  2.      <name>storage.data.store.class</name>  
  3.      <value>org.apache.gora.hbase.store.HBaseStore</value>  
  4.      <description>Defaultclass for storing data</description>  
  5. </property>  
复制代码

做完这些修改后,还要修改ivy目录下的ivy.xml文件,下载依赖的jar包,找到这段代码
  1. <dependencyorg="org.apache.gora" name="gora-core" rev="0.3"conf="*->default"/>
复制代码

,在其下方定义了不同存储方式所依赖的jar包,使用某一特定存储时,去掉注释即可,比如
  1. <dependency org="org.apache.gora"name="gora-hbase" rev="0.3" conf="*->default"/>
复制代码

,这样就可以下载HBase相关的jar包。做完这些修改后,在Nutch主目录下执行ant命令,重新编译。





回复

使用道具 举报

pig2 发表于 2014-9-1 11:01:41

回帖奖励 +1 云币


下面有些视频,可以参考

Nutch相关框架视频教程(长期有效)




nutch相关视频前十讲


nutch相关视频后十讲
回复

使用道具 举报

落魂草 发表于 2015-3-12 20:17:18

回帖奖励 +1 云币

回复

使用道具 举报

dongnanyouwo 发表于 2015-3-12 22:36:32
谢谢各位大牛!!!
回复

使用道具 举报

ainubis 发表于 2015-4-2 22:24:35

回帖奖励 +1 云币

回复

使用道具 举报

aboutjoshua 发表于 2015-8-16 17:27:54
楼主太给力了
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条