Linux下的Nutch分布式配置与安装
来源:互联网 发布:java培训哪个学校好 编辑:程序博客网 时间:2024/05/24 01:38
1. 介绍
本文主要介绍Linux下Nutch的分布式配置与安装。Nutch是著名的开源搜索引擎,由Nutch引出了Apache另一个著名的项目Hadoop,一个类似于Google的MapReduce架构的高效分布式计算模型。我们基于本实验室已有的Hadoop平台,将Nutch部署在Hadoop之上,利用MapReduce进行并行的分布式抓取,将得到的索引文件存在HDFS上,使得Nutch可以更加高效的运行。本文主要参照了一下几个网页:
1. http://wiki.apache.org/nutch/NutchHadoopTutorial
2. http://www.cnblogs.com/wycg1984/archive/2010/06/25/1764926.html
另外,前面的几个网页都是基于Nutch.0.9或者Nutch1.0的,我们在安装中发现和我们已有的Hadoop平台Hadoop-0.20.2存在不兼容的问题。我们发现在Nutch1.1中已经支持Hadoop-0.20.2的版本,主要是在配置文件conf下的hadoop-site.xml分割成了core-site.xml,hdfs-site.xml和mapred-site.xml三个文件。以下是本文所使用的开源软件:
1. Nutch-1.1 (存放于//202.38.64.184的softs目录下的apache-nutch-1.1-bin)
2. Hadoop-0.20.2(已安装)
3. Apache Tomcat 6.0.29(存放于//202.38.64.184的softs目录下的apache-tomcat-6.0.29.tar)
2. Hadoop的安装
详见//202.38.64.184/share/cluster-config/hadoop下的安装脚本intall_in_lab_cluster.sh。
以下是我们的hadoop环境:
用户名:hadoop
安装目录:/localshare/hadoop/install/hadoop
Master节点:
Ip: 192.168.99.6 hostname:node-hp-dl-06
Slave节点:
Ip: 192.168.99.9 hostname:node-hp-dp-09
Ip: 192.168.99.11 hostname:node-r630-1
Ip: 192.168.99.12 hostname:node-r630-2
安装目录下的配置文件夹conf用符号链接指向共享存储上的/share/cluster-config/hadoop/conf目录。
格式化namenode指令;
Bin/hadoop namenode –format
启动:
Bin/start-all.sh
关闭:
Bin/stop-all.sh
通过Web查看hadoop运行情况:
HDFS:
192.168.99.6:50070
MapReduce:
192.168.99.6:50030
3. Nutch的安装
在已经安装Hadoop的情况下,只要将Nutch文件夹下的conf目录中文配置文件配置好,就可以通过Nutch中的bin/start-all.sh来启动hadoop进行分布式抓取和索引了。
首先,将Nutch的安装包apache-nutch-1.1-bin解压到/localshare/nutch/install/nutch目录下(之所以在/localshare/nutch目录下添加两层是为了方便多个Nutch版本切换而建立的符号链接)。
图-1
将原安装包中的conf目录mv到conf_bak进行保存,在共享目录上建立共享配置文件夹/share/cluster-config/nutch/conf,把conf_bak中所有的文件cp到共享配置文件,并在原来conf的位置建立一个符号链接conf指向共享配置文件夹。
图-2
Conf文件夹下主要有以下几个文件:
图-3
其中我们要修改的有:
1. Masters
2. Slaves
3. Hadoop-env.sh
4. Core-site.xml
5. Hdfs-site.xml
6. Mapred-site.xml
7. Nutch-site.xml
其中前6个配置文件只要和hadoop中conf下的同名配置文件保持一直就可以了。
1. Masters
192.168.99.6
2.Slaves
192.168.99.9
192.168.99.11
192.168.99.12
3.Hadoop-env.sh
这里主要是jdk等环境变量的配置。主要添加:
exportJAVA_HOME=/localshare/jdk/java
exportHADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
exportHADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_SECONDARYNAMENODE_OPTS"
exportHADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote$HADOOP_DATANODE_OPTS"
exportHADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote$HADOOP_BALANCER_OPTS"
exportHADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote$HADOOP_JOBTRACKER_OPTS"
exportHADOOP_HOME=/localshare/hadoop/install/hadoop
export JAVA_HOME=/localshare/jdk/java
export HADOOP_LOG_DIR=${HADOOP_HOME}/logs
exportHADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
4. Core-site.xml
主要配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.99.6:9000</value>
</property>
</configuration>
5. Hdfs-site.xml
主要配置hdfs的属性,如目录,副本数量等。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
6. Mapred-site.xml
主要配置Mapreduce的属性,如jobtracker的端口,map数量,reduce数量等。
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.99.6:9001</value>
</property>
</configuration>
7. Nutch-site.xml
主要配置Nutch相关属性,其中http.agent.name一定要配置,否则搜索结果始终为空。
<configuration>
<property>
<name>http.agent.name</name>
<value>nutch-1.1</value>
</property>
</configuration>
8. Crawl-urlfilter.txt
主要配置抓取文件的属性:
# accept hosts in MY.DOMAIN.NAME
# +^http://([a-z0-9]*/.)*MY.DOMAIN.NAME/
+^http://([a-z0-9]*/.)*ustc.edu.cn/
注释掉原来的^http://([a-z0-9]*/.)*MY.DOMAIN.NAME,改为我们所要过滤的domainname: ^http://([a-z0-9]*/.)*ustc.edu.cn/
至此,Nutch的相关配置已经成功,主要在/localshare/nutch/install/nutch目录下启动服务即可:
执行Bin/start-all.sh:启动hadoop。
利用bin/hadoop dfs –ls 查看HDFS的情况。
接下来可以接使用nutch进行抓取了。
4.Crawl抓取
Nutch爬虫命令是:
bin/nutch Crawl <urlDir> [-dir d] [-threadsn] [-depth i] [-topN N]
其中的<urlDir>参数是入口地址文件或其所在的目录,启动了集群进行分布式爬虫时,这个目录必须是HDFS中的目录,爬虫完毕将在HDFS中生成存有爬下来的数据的目录[-dir d]。
(1)入口地址文件
在本地磁盘中新建一个文件,写入一个入口url,然后将其复制到HDFS中,使用如下命令:
bin/hadoop dfs -copyFromLocal crawltest/urls urls
(2)爬虫测试,在namenode、datanode或者与集群网络连通的安装有Hadoop或者nutch并且hadoop-site.xml配置相同的客户机上上均可使用如下命令分布式爬虫:
bin/nutch crawl urls -dir crawled -depth 3 -topN10
爬虫完毕,hdfs中生成crawled目录(user/hadoop/crawled),crawled目录下面有这些子目录:crawldb,index,indexes,linkdb,segments。所有节点上的爬虫日志在logs/hadoop.log中。
从浏览器中可以查看到分布式爬虫时作业状态。
5.Tomcat Configuration
Nutch的爬虫和搜索可以说是分离的两块,爬虫可以是M/R作业,但搜索不是M/R作业。搜索有两种方式:一是将爬虫数据(或者称索引数据)放在本地硬盘,进行搜索。二是直接搜索HDFS中的爬虫数据。
Nutch自带了一个WEB前端检索程序,即主目录下的nutch-x.x.war,实现WEB前端检索时需要安装Tomcat,执行应用程序。此外,在命令行中也可执行Nutch检索命令。
1. 单机检索
这里我们在master(192.168.99.6)上进行如下操作:
(1)将HDFS中生成的存储爬虫数据的data目录复制到本地某一目录下。(例如/localshare/nutch/crawled)
bin/hadoop fs –copyToLocal data /localshare/nutch/crawled
(2) 安装tomcat,请确保安装路径没有空格,这很重要,否则将导致搜索结果始终为0。安装完后启动tomcat服务,bin/catalina start。
(3)将Nutch主目录下的WEB前端程序nutch-1.1.war复制到 ***/ tomcat/webapps/目录下。
(4)浏览器中输入http://192.168.99.6:8080/nutch-1.1,将自动解压nutch-1.0.war,在webapps下生成nutch-1.1目录。
(5)配置WEB前端程序中的nutch-site.xml文件,该文件所在目录是***/tomcat/webapps/nutch-1.0/WEB-INF/classes/下,配置如下:
<configuration>
<property>
<name>http.agent.name</name>
<value>nutch-1.1</value>
</property>
<property>
<name>searcher.dir</name>
<value>/localshare/nutch/crawled </value>
</property>
</configuration>
(6)重启tomcat,可以先执行bin/catalina stop停止再start。更改配置文件后必须重启tomcat,否则不会生效。
(7)在http://192.168.99.6:8080/nutch-1.1下检索关键字
2. 分布式搜索
分布式爬虫时Nutch生成的索引数据存储的HDFS中,nutch支持搜索HDFS中的数据。检索HDFS中的索引数据和检索本地种的索引数据的配置差别 是hadoop-site.xml文件。搜索hdfs中的数据时,nutch在搜索的时候首先通过rpc检索lucene索引文件,然后定位到 segment对应的14位数字时间作为文件夹的名字,然后从这个文件夹中获取结果信息的。
(1)选择一台机器,该机器可以是Hadoop集群中的节点,也可以是集群之外的机器,但保证机器和Hadoop集群网络连通。(例如192.168.99.6)
(2) 安装tomcat,请确保安装路径没有空格,这很重要,否则将导致搜索结果始终为0。安装完后启动tomcat服务,bin/catalina start。
(3)将Nutch主目录下的WEB前端程序nutch-1.1.war复制到 ***/ tomcat/webapps/目录下。
(4)浏览器中输入http://192.168.99.6:8080/nutch-1.1,将自动解压nutch-1.1.war,在webapps下生成nutch-1.1目录。
(5)配置WEB前端程序中的 core-site.xml文件,该文件所在目录是***/tomcat/webapps/nutch-1.1/WEB-INF/classes/下。至少需要配置fs.default.name参数,指定HDFS文件系统URI:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.99.6:9000</value>
</property>
</configuration>
(6)配置WEB前端程序中的nutch-site.xml文件,该文件所在目录是***/tomcat/webapps/nutch-1.0/WEB-INF/classes/下,配置如下:
<configuration>
<property>
<name>http.agent.name</name>
<value>nutch-1.1</value>
</property>
<property>
<name>searcher.dir</name>
<value>/user/hadoop/crawled</value>
</property>
</configuration>
(7)重启tomcat,可以先执行bin/catalina stop停止,再start。更改配置文件后必须重启tomcat,否则不会生效。
(8)在http://192.168.99.6:8080/nutch-1.1下检索关键字。
6.Tomcat中文问题
由于tomcat本身的问题,可能出现搜索中文关键字总是空结果的情况,这时需要修要tomcat的一个配置文件***tomcat/conf/server.xml:
<Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
添加蓝色的部分。
7.Jar包运行方式
1-6部已经详细叙述了在hadoop上部署nutch的全过程,此外,还可以通过jar包的方式来运行nutch任务。在nutch的安装目录下自带了一个文件Nutch-1.1.job。将这个文件拷贝到hadoop的安装目录下,并将nutch/conf下的配置文件都拷贝到hadoop/conf下(主要不要覆盖hadoop原来的配置文件),就可以像运行hadoop的jar包任务一样来运行nutch:
Bin/hadoop jar nutch-1.1.joborg.apache.nutch.crawl.Crawl urls -dir crawl -depth 1
- Linux下的Nutch分布式配置与安装
- nutch在linux下的安装配置
- Linux下的Nutch 1.4 安装配置
- Linux下的Nutch 1.4 安装配置
- linux下nutch的安装配置
- Linux下的Nutch 1.4 安装配置
- linux下nutch的安装配置
- Linux下Nutch分布式配置和使用
- Linux下Nutch分布式配置和使用
- Linux下Nutch分布式配置和使用
- 【Nutch】Linux下Nutch分布式配置和使用
- Nutch的安装与配置
- Linux 下 Nutch的安装和使用
- 【Nutch】Linux下单机配置Nutch
- 【Nutch】Linux下单机配置Nutch .
- Ubuntu Linux下FastDFS分布式文件系统的安装、配置与初步使用
- 分布式Web应用----Linux环境下zookeeper集群环境的安装与配置
- nutch 1.6 安装与配置
- 浅谈后台中动态生成Table
- 构建插件式的应用程序框架(二)----订立契约
- GDI泄露心得
- Mainland ID Card Number Generator and Check 程序
- 构建插件式的应用程序框架(三)----动态加载
- Linux下的Nutch分布式配置与安装
- 服务器性能优化配置建议
- 01-3 利用API函数实现动画窗体【*】
- InstallShield 12 进阶篇
- JQUERY用JSON传递数据
- POJ 1588 Reverse Roman Notation
- freemarker 简介
- 精彩网址收集
- 抉择之:外企与事业单位