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