Linux下的Nutch分布式配置与安装

本文详细介绍了如何在Linux系统中配置和安装Nutch分布式搜索引擎,以及与Hadoop的集成。首先讲解了Nutch与Hadoop的关系,然后逐步阐述了Hadoop的安装步骤,接着是Nutch的安装和配置,包括Hadoop环境的适应性调整。在配置完成后,进行了抓取测试,并探讨了Tomcat的配置以实现Nutch的Web前端搜索。最后,解决了可能出现的Tomcat中文问题及提供了通过jar包运行Nutch任务的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 等环境变量的配置。主要添加:

              export JAVA_HOME=/localshare/jdk/java

              export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"

export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"

export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"

export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"

export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"

 

 

export HADOOP_HOME=/localshare/hadoop/install/hadoop

export JAVA_HOME=/localshare/jdk/java

export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

export HADOOP_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] [-threads n] [-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 -topN 10

爬虫完毕, 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.job org.apache.nutch.crawl.Crawl urls -dir crawl -depth 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值