Nutch 安装配置

第一章 Nutch印象

Nutch是什么

NutchApache旗下的Java开源项目,最初是一个搜索引擎,现在

是一个网络爬虫。


Nutch的目标

Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎。

Nutch的特性

  • 插件架构,高度模块化

    大多数功能可通过插件来实现和改变

  • 易扩展,极强的伸缩性

    当爬虫获取了上万条甚至更多数据时,很有可能一台机器装不下,那么,我们需要增加机器来存储和计算。不用修改代码,从一台可扩展到上千台

  • 高可用性,健壮容错

    容忍宕机情况的出现。

  • 灵活可配置

    配置文件注释全面,选项多。提供了162个配置参数。

Nutch的设计初衷

商业搜索引擎不开源,搜索结果不仅仅是根据网页本身的价值进行排序,而是有众多商业利益考虑。Nutch提供了开源的解决方案,帮助人们根据自己的需要构建自己的搜索引擎,为用户提供优质的搜索结果,并能从一台机器扩展到成百上千台。

我们学习的主要目的

通过Nutch爬取邮箱账号,联系方式等信息。

第二章 Nutch的安装配置

必备环境

Linux操作系统、jdksvnant

Nutch安装

#svn检出Nutch1.6项目

[root@Nutch   Nutch2]# svn co https://svn.apache.org/repos/asf/nutch/tags/release-1.6/

注:如果未安装svn,是不能检出结果的。

Svn 可通过yumshell前端软件包管理器)来安装。如果未安装yum,应当先完成yum安装。

#进入release-1.6目录

[root@nutch nutch2]# cd release-1.6/

#列出release-1.6目录内容

[root@nutch nutch2]# ls

#ant命令编译Nutch1.6

[root@Nutch release-1.6]# ant

注意:

1)、如果为安装ant,则应该先安装ant,否则编译失败。

2)、需要在build.xml所在目录中运行ant命令编译Nutch

编译过程比较中,由于要下载相关依赖jar包,所以比较耗时,花了10分钟。

Ant构建之后,生成buildruntime两个目录。在runtime下有localdeploy两个子文件夹,分别代表Nutch的两种运行方式。

Deploy:使用hadoop集群的方式运行,数据存储在hdfs文件系统中

Local:使用本地文件系统来运行

deploylocal区别

  • 数据的存储位置不同

  • local模式对hadoop没有依赖

  • deploy模式对hadoop依赖。它必须将数据存储到hdfs中,以二进制文件形式保存。

#启动Nutch

[root@Nutch local]# bin/Nutch

第三章、bin/nutch下相关命令

crawl 命令

#查看crawl命令用法

[root@nutch local]# bin/nutch crawl

Usage: Crawl <urlDir> -solr <solrURL> [-dir d] [-threads n] [-depth i] [-topN N]

初学时不知道每一个命令选项用于干嘛?我们可读源代码的方式查看相应选项参数。

<urlDir>选项参数

#创建存放需要爬取网站的url的文件夹

[root@nutch local]# mkdir urls

#建立url文件,放置需要爬取的url网址

[root@Nutch urls]# vi url

-solr <solrURL>选项参数

此参数可选,可加可不加

Nutch将网页爬取下来,交给solr做索引,之后用户通过solr来进行内容的搜索,Nutch本身并不做索引方面的工作,它只是把文档提交给solrsolr负责索引。

从这些可以看出,Nutch目前是一个网络爬虫,而不是一个搜索引擎。它的目标已经从搜索引擎蜕变为网络爬虫。

[-dir d]选项参数

爬取数据保存地址

[-threads n]选项参数

fetch阶段是可以使用多线程的,但是在建立索引时只能有一个线程工作。

[-depth i] 选项参数

抓取深度

第四章、抓取之前需完成以下配置

  • 建立url文件,放置要爬取的url网址,用于生成crawlDB数据库

  • 配置JAVA_HOME环境变量,一般在/usr/lib/jvm下会装有java的环境。

  • 修改conf/nutch-site.xml,加入<property>

    <name>http.agent.name</name>

    <value>test-nutch</value>

</property>

先不做修改,查看报错信息

第五章、运行crawl命令,抓取网页

#运行crawl命令,抓取网页

[root@master  local]#nohup bin/nutch crawl urls/url.txt -dir data -threads 4 -depth 2 &

Nutch入门重点在于分析Nutch脚本文件

Nutch介绍到此为止。

第六章、利用solr建立索引

Solr简介

Solr是一个高性能,基于Lucene的全文搜索服务器。是一款非常优秀的全文搜索引擎。

配置solr目的

nutch抓取信息通过分词产生索引。

安装配置Solr3.6.2

#下载solr3.6.2

[root@Nutch Nutch2]# wget http://archive.apache.org/dist/lucene/solr/3.6.2/apache-solr-3.6.2.tgz

下载过程比较久。

Solr可运行在tomcat下,为简化配置,我们使用solr内嵌的服务器jetty

Jetty 是一个开源的servlet容器,它为基于Javaweb内容,例如JSPservlet提供运行环境。

#进入nutchconf目录

[root@master  nutch]# cd apache-solr-3.6.2/example/solr/conf/

#配置nutch/conf文件scheme.xml复制到solr/conf

[root@master  conf]# cp /home/hadoop/nutch/release-1.6/runtime/local/conf/schema.xml /home/hadoop/nutch/apache-solr-3.6.2/example/solr/conf/schema.xml

nutch/conf配置文件scheme.xml复制到solr/conf,告知solr在建索引的时候要建立哪些字段。

nutchconf文件中,有两个scheme打头的文件,schema.xmlschema-solr4.xml文件。schema-solr4.xml对应solr4.x的版本,schema.xml对应solr3.6的版本。因为我们用的solr3.6.2版本,所以把nutch/conf目录下的schema.xml文件复制到solr主目录下的conf目录中。

#修改solr默认的配置文件solr/conf/solrconfig.xml

<str name=”df”>text</str>全部替换为<str name=”df”>content</str>

因为solr/conf/schema.xml默认搜索字段为content,所以要把所有含<str name=”df”>text</str>的字段全部替换为<str name=”df”>content</str>

[root@master  solr]# vi conf/solrconfig.xml

比较关键的配置

  • Nutch/conf的配置文件scheme.xml复制到solr/conf

告诉solr在建立的索引的时候要建立哪些字段。

  • 修改solr默认的配置文件solr/conf/solrconfig.xml

第七章、使用Nutch的本地模式提交索引

#以后台进程的方式启动solr服务器

 [root@Nutch local]# java -jar start.jar &

#通过web界面查看solr服务器的情况

 http://192.168.1.49:8983/solr/

#使用Nutch的本地模式提交索引

[root@master  local]# bin/nutch solrindex http://192.168.232.142:8983/solr/ data/crawldb/ -linkdb data/linkdb/ -dir data/segments/ &

出错通过查看日志文件hadoop.log查看详情。

第八章 lukeall工具查看索引

使用lukeall工具查看索引

lukeall打开索引,可看到索引的字段、文档数目、term的数目,也可以在documents选项内查看每一个特定的文档。

第九章、给solr3.6.2配置分词器mmseg4j1.8.5

#停止Nutch

[root@Nutch data]# kill -9 11184

#删除solr/data文件夹

[root@Nutch data]# rm -rf /home/Nutch2/solr/example/solr/collection1/data/

这样就把原来没有使用特定分词器的情况下生成的索引干掉了。然后停止solr服务器,开始安装自定义的中文分词器。

#安装自定义 中文分词器

[root@Nutch data]# wget [root@Nutch example]# wget http://mmseg4j.googlecode.com/files/mmseg4j-1.8.5.zip

#解压mmseg4j-1.8.5.zip

[root@Nutch example]# unzip mmseg4j-1.8.5.zip -d mmseg4j-1.8.5

#查看mmseg4j-1.8.5的内容

#创建solr/lib目录

[root@Nutch solr]# mkdir /home/Nutch2/solr/example/solr/lib

复制mmseg4j-all-1.8.5-with-dic.jarsolr/lib

[root@Nutch example]# cp mmseg4j-1.8.5/mmseg4j-all-1.8.5-with-dic.jar solr/lib/

#修改solrscheme.xml文件

[root@Nutch example]# vi solr/conf/schema.xml (注:solr我使用的是3.6.2版本)

<tokenizer class="solr.WhitespaceTokenizerFactory"/><tokenizer class="solr.StandardTokenizerFactory"/>替换为<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode=”complex”/>

为什么要替换scheme.xml中相应配置呢?

因为它默认的分词方法不能对中文有一个很好地效果,我们指定分词器。

#启动solr服务器

[root@Nutch example]# java -jar start.jar &

#提交索引

[root@Nutch local]# bin/Nutch solrindex http://192.168.1.49:8983/solr/ data/crawldb/ -linkdb data/linkdb/ -dir data/segments/

luke打开查看使用mmseg4j和未使用mmseg4j的区别

配置分词器关键在于

  • 将分词器相应jarmmseg4j-all-1.8.5-with-dic.jar复制到solr下的lib目录。

  • Nutch/conf/scheme.xml文件的<tokenizer class="solr.WhitespaceTokenizerFactory"/><tokenizer class="solr.StandardTokenizerFactory"/>配置替换为<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode=”complex”/>

你可能感兴趣的:(Nutch 安装配置)