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
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://SYE:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/sychen/nutch/hadoop-0.20.2/hdfs_root</value>
<description>A base for other temporary directories.
此处设为你自己想要的Hadoop根目录</description>
</property>
</configuration>
3》hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,不配置默认是 3,应小于 datanode 机器数量</description>
</property>
</configuration>
4》mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>SYE:8000</value>
<description>jobtracker 标识:端口号,不是 URI</description>
</property>
</configuration>
5》masters
SYE
6》slaves
UBT
配置完毕后将这些配置文件复制到B机的相应目录中。或者如果B机中还没有Hadoop,可以将整个Hadoop复制过去。
3。配置Hbase
A机的配置:
1》hbase-env.sh
export JAVA_HOME=/opt/jdk1.6.0_21
export HBASE_CLASSPATH=/home/sychen/nutch/hadoop-0.20.2/conf
export HBASE_MANAGES_ZK=true
2》hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://SYE/hbase_root</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>UBT</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/sychen/nutch/hbase-0.90.5/zookeeper_data</value>
</property>
</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/
输入*,可以搜索出索引的全部内容,这个在索引的网页数量较少时可以测试是否索引成功。
over