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

<?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

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章