nutch2.0完全分布式部署配置

2019-03-27 01:13|来源: 网路

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 plain copy
 
  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 plain copy
 
  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 plain copy
 
  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 plain copy
 
  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 plain copy
 
  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/

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


转自:http://www.cnblogs.com/chenying99/articles/3139612

相关问答

更多
  • redis 的持久化: 快照(snapshot):特定时间、特定命令、特定条件来触发,把某一时刻在内存中的数据全部写出到硬盘当中去。 快照的时间不是实时的,可能会有数据的丢失。 在宕机之后,会把全部dump文件中的数据读入到内存中,会I/O密集。 AOF(append only file):每一次更新都会记录日志。日志文件是在快照的基础上来写的。 (在AOF这里的“快照”跟上面的“快照”不是一个东西。) redis的 rdb 和 aof 持久化的区别: 参考:http://ptc.35.com/?p=275 ...
  • redis 的持久化: 快照(snapshot):特定时间、特定命令、特定条件来触发,把某一时刻在内存中的数据全部写出到硬盘当中去。 快照的时间不是实时的,可能会有数据的丢失。 在宕机之后,会把全部dump文件中的数据读入到内存中,会I/O密集。 AOF(append only file):每一次更新都会记录日志。日志文件是在快照的基础上来写的。 (在AOF这里的“快照”跟上面的“快照”不是一个东西。) redis的 rdb 和 aof 持久化的区别: 参考:http://ptc.35.com/?p=275 ...
  • 1)比方说我先在有5台服务器,想做一个集群,是不是意味着我要把应用程序在5台服务器上分别部署?如果这样的话,session能使先共享吗? 根据中间件不同部署方式也不同。tomcat下面就要分别部署了,weblogic支持分别部署,也支持统一部署(两种方式各有优缺点,推荐分别部署)。 中间件基本上都支持session共享复制,不过实现方式可能有点区别(有的是基于容器,有的是基于memcache等等)。可参考之前的问题(关于jboss的):
  • 在 /usr/local/hadoop/ 下面启动,找到是/opt/Hadoop/下面的hadoop安装包,是不是HADOOP_HOME环境变量配置的有问题。 可以到海牛部落交流,那里有好多学习hadoop的朋友
  • 1、什么是数据中心分布式部署 数据中心分布式部署,边缘数据中心是基础,是CDN的更下一层,服务对象是IDC及CDN需求的客户。对于流量大的客户,可多点分布,就近部署。 2、分布式部署的好处 A:在全国没有任何一个数据中心可以覆盖全国的每个角落,数据中心集中在一个点不能更好的服务全国各区域。分布式部署相当于在欧洲很多个国家之间的互联网关系。二三线城市就近布点,三级城市网络品质提升。针对网游、网络视频、网络下载等全国分布节点需求较高的客户,选择分布式节点托管在降低成本的同时还更好的保障了二、三级城市业务的网络运 ...
  • 现在的软件开发都讲究个"层"的意思. 分布式开发将一个系统分为三个层次:客户端应用程序,应用程序服务器,后台数据库。客户端提出请求,应用服务器接受请求并处理然后返回数据给客户端,后台数据库当然是提供数据。多半是用于WEB开发.这样的分层开发有很多 好处..我就不多说了...
  • 这个比较复杂,这个属于架构方面的,大概是指客户端和服务器端的关系。以前的程序的服务端比较集中在一块,分布式的服务器端可能分布在不同的地方,如云端等等。。。
  • 一、DFS为何物? DFS 即微软分布式文件系统的简称,系统管理员可以利用它来有效的整合网络资源,并把这些资源以单一的层次结构呈现给网络用户。管理员利用它可以把资源发布成一 个树形结构,这样大大简化了为用户进行资源配置和对资源管理的工作量。我们可以在不同的机器上调整和移动文件,这不会影响到用户的访问。 二、为什么要使用DES? 1、DFS使用了现有网络中的Share权限,管理员不必进行新的配置 2、通过一个DFS树形结构用户就可以访问多个网络资源,而不用再把远程驱动器映射到本地共享资源中。 3、DFS可以配 ...
  • 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无复本、数据存于哪个站点以及事务在哪个站点上执行等。 故名思义,分布式 ...
  • 尽管在将来的发行版中有计划添加此功能,但在当前版本上无法在已创建的分布式对象上即时更改配置。 一旦创建,地图配置将停留在节点级别而不是集群级别。 只要你从配置中创建新的分布式映射,使用它并销毁它,你的方法应该没有任何问题。 Changing the configuration on the fly on an already created Distributed object is not possible with the current version though there is a plan t ...