君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

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

 

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

3》hdfs-site.xml

 

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

 

4》mapred-site.xml

 

[html] view plaincopy
 
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7.   
  8.    <property>  
  9.        <name>mapred.job.tracker</name>  
  10.        <value>SYE:8000</value>  
  11.        <description>jobtracker 标识:端口号,不是 URI</description>  
  12.    </property>  
  13.   
  14.   
  15. </configuration>  

5》masters

SYE

6》slaves

UBT

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

 

3。配置Hbase

A机的配置:

1》hbase-env.sh

 

[plain] view plaincopy
 
  1. export JAVA_HOME=/opt/jdk1.6.0_21  
  2.   
  3. export HBASE_CLASSPATH=/home/sychen/nutch/hadoop-0.20.2/conf  
  4.   
  5. export HBASE_MANAGES_ZK=true  

2》hbase-site.xml

 

[html] view plaincopy
 
  1. <configuration>  
  2.   
  3.    <property>  
  4.        <name>hbase.rootdir</name>  
  5.        <value>hdfs://SYE/hbase_root</value>  
  6.    </property>  
  7.   
  8.    <property>  
  9.        <name>hbase.cluster.distributed</name>  
  10.        <value>true</value>  
  11.    </property>  
  12.   
  13.    <property>  
  14.        <name>hbase.zookeeper.quorum</name>  
  15.        <value>UBT</value>  
  16.    </property>  
  17.   
  18.    <property>  
  19.        <name>hbase.zookeeper.property.dataDir</name>  
  20.        <value>/home/sychen/nutch/hbase-0.90.5/zookeeper_data</value>  
  21.    </property>  
  22.   
  23.   
  24. </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/

输入*,可以搜索出索引的全部内容,这个在索引的网页数量较少时可以测试是否索引成功。

posted on 2013-06-17 02:35  刺猬的温驯  阅读(199)  评论(0)    收藏  举报