zoukankan      html  css  js  c++  java
  • 一个简单搜索引擎的搭建过程(Solr+Nutch+Hadoop)

           最近,因为未来工作的需要,我尝试安装部署了分布式爬虫系统Nutch,并配置了伪分布式的Hadoop来存储爬取的网页结果,用solr来对爬下来的网页进行搜索。我主要通过参考网上的相关资料进行安装部署的。但网上的资料很多比较乱,我也走了一些弯路。下面将我的安装过程记录下来,供大家参考。不足之处,请大家批评指正。
    环境:操作系统是Ubuntu10.04,jdk是openjdk-7-jdk。

    一、安装nutch1.6
        我曾直接下载部署nutch1.6的二进制文件,虽然可以成功爬取网页,但用solr来搜索下载好的网页时,总是无法成功。后来选择下载nutch1.6的源文件自己编译,则可以很好的和solr结合,完成搜索操作,并可以利用Hadoop平台来存储爬取的结果。以下是操作过程。
    1、因为nutch的源代码是用svn来管理的,所以首先需要安装svn。如果机器中已经安装了svn,此步骤可以跳过。
    sudo apt-get install subversion
    2、将nutch的源代码从网上checkout。
    svn co https://svn.apache.org/repos/asf/nutch/tags/release-1.6/ nutch
    3、进入nutch文件夹下的conf文件夹,修改配置文件nutch-site.xml。在文件的<configuration>中加入下面内容
        <property>
            <name>http.agent.name</name>
            <value>My nutch agent</value>
        </property>
    value值不能为空,否则会报错。
    4、在nutch文件夹下,会发现有一个build.xml文件,它是ant的工作文件,用来编译、打包。我们在此目录中,用ant编译源程序。(若机器上没有安装ant,则通过命令:sudo apt-get install ant来安装)
        直接输入命令:ant
        第一次编译会耗费几分钟时间,因为需要下载该项目依赖的jar文件。以后再重新编译时,只需要十几秒就可以完成。编译、打包完后,会生成一个runtime文件夹。
    6、进入到nutch目录下的runtime目录,会发现里面有两个文件夹:local、deploy。其中,local是用来直接爬取网页信息,存储在本地。而deploy是将爬取网页的任务提交给Hadoop,用MapReduce的方式来爬取网页信息,并将结果存储在HDFS上。下面会详细介绍如何使用它们。


    二、基于Tomcat的solr的安装
    1、安装solr
    1)首先,执行以下命令,下载solr3.6.2
        wget http://mirror.bjtu.edu.cn/apache/lucene/solr/3.6.2/apache-solr-3.6.2.tgz
    2)将压缩文件解压后,进入到解压文件的example目录,复制nutch的conf目录中的schema.xml文件到[solr_home]/example/solr/conf目录。(注:[solr_home]为解压后的solr目录名称,其他以此类推)
    3)修改配置文件solr/conf/solrconfig.xml,将里面所有的<strname="df">text</str>都替换为<strname="df">content</str>。
    2、安装配置tomcat
    1) 去apach的官网http://tomcat.apache.org,下载Tomcat的最新版本apache-tomcat-7.0.39。
    2)将压缩文件解压后,拷贝[solr_home]/example/webapps/solr.war文件到[tomcat_home]/webapps目录下。
    3)将[solr_home]/example/ 下的solr目录拷贝到[tomcat_home]下。
    4)在tomcat目录下的conf/Catalina/localhost 目录中(如果没有则手工创建该目录)创建solr.xml文件,文件内容如下:
    <Context docBase="[tomcat_home]/webapps/solr.war" debug="0" crossContext="true" >
    <Environment name="solr/home" type="java.lang.String" value="[tomcat_home]/solr" override="true" />
    </Context>
    5)修改[tomcat_home]/conf下的server.xml文件,找到<Connector port="8080" … 项(假设tomcat监听8080端口),添加编码方式,修改后如下:
    <Connector port="8080" URIEncoding="UTF-8"…
    6)启动tomcat。然后在浏览器中输入http://localhost:8080/solr/,出现欢迎界面则表示配置成功。
    3、爬取网页并建立索引,用solr来进行搜索。
    1)进入到[nutch_home]/runtime/local/,新建文件夹,命名为urls。在urls目录中,新建一个名为url.txt的文档,在文档中输入一个或多个要爬取的网页地址并保存(如:http://www.qq.com)。
    2)在目录[nutch_home]/runtime/local/下,输入如下爬取网页的命令:
    bin/nutch crawl urls -dir data -threads 20 -depth 3 -topN 100
    该命令的意思是:爬取存放在目录urls中的文件里的网页地址对应的网页信息,启动20个线程来完成任务,仅抓取网页上的超链接形成的树形结构中(起始网页为根),深度不超过3层的网页。最终仅保存结果中的前100条,保存在当前目录下的data文件夹中。
    3)运行如下命令,将结果映射到solr中(Tomcat必须先启动)
    bin/nutch solrindex http://127.0.0.1:8080/solr/ data/crawldb -linkdb data/linkdb data/segments/*
    4)通过网页访问http://127.0.0.1:8080/solr/admin/,就可以在Query String栏中,输入要搜索的文字进行搜索了。


    三、基于伪分布式Hadoop的爬虫系统
    1、安装单机版的伪分布式Hadoop系统。
        安装过程比较简单,网上有很多资料可以参考。我安装的版本是Hadoop1.0.4。
    2、启动Hadoop的所有节点,将含有存放网页地址的文档的文件夹上传到HDFS上。
    3、启动Tomcat。
    4、进入到[nutch_home]/runtime/deploy/目录下,运行命令:
       bin/nutch crawl /user/guangpeng/urls/ -solr http://127.0.0.1:8080/solr -dir crawl -depth 3 -topN 100 -threads 5
    其中,/user/guangpeng/urls/为存放网页地址的文档在HDFS上的地址。
    5、通过网页访问http://127.0.0.1:8080/solr/admin/,就可以在Query String栏中,输入要搜索的文字进行搜索了。

    四、主要参考文档

    http://wiki.apache.org/nutch/NutchTutorial
    http://wiki.apache.org/solr/
    http://yangshangchuan.iteye.com/blog/1837935
    http://www.cnblogs.com/sirhuoshan/archive/2013/04/24/3040158.html

    致谢

    感谢小潘同学在百忙中帮我审阅稿件。

  • 相关阅读:
    单例模式
    Curator Zookeeper分布式锁
    LruCache算法原理及实现
    lombok 简化java代码注解
    Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法
    解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。
    Redis 3.0 Cluster集群配置
    分布式锁的三种实现方式
    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
    How to Use Convolutional Neural Networks for Time Series Classification
  • 原文地址:https://www.cnblogs.com/jpfss/p/7908325.html
Copyright © 2011-2022 走看看