Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎。主要用于收集网页数据,而后对其进行分析,创建索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来作分布式计算与存储,索引使用了Solr分布式索引框架来作,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构。html
Nutch目前最新的版本为version1.4。java
Nutch 致力于让每一个人能很容易,同时花费不多就能够配置世界一流的Web搜索引擎。为了完成这一宏伟的目标,Nutch必须可以作到:linux
Nutch是开放源代码的,所以任何人均可以查看他的排序算法是如何工做的。商业的搜索引擎排序算法都是保密的,咱们没法知道为何搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎容许竞价排名,好比百度,这样的索引结果并非和站点内容相关的。所以Nutch对学术搜索和政府类站点的搜索来讲,是个好选择。由于一个公平的排序结果是很是重要的。web
你是否是不喜欢其余的搜索引擎展示结果的方式呢?那就用 Nutch 写你本身的搜索引擎吧。 Nutch 是很是灵活的,他能够被很好的客户订制并集成到你的应用程序中。使用Nutch 的插件机制,Nutch 能够做为一个搜索不一样信息载体的搜索平台。固然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。算法
咱们并无google的源代码,所以学习搜索引擎Nutch是个不错的选择。了解一个大型分布式的搜索引擎如何工做是一件让人很受益的事情。在写Nutch的过程当中,从学院派和工业派借鉴了不少知识:好比:Nutch的核心部分目前已经被从新用 Map Reduce 实现了。Map Reduce 是一个分布式的处理模型,最早是从 Google 实验室提出来的。而且 Nutch 也吸引了不少研究者,他们很是乐于尝试新的搜索算法,由于对Nutch 来讲,这是很是容易实现扩展的。数据库
Lucene是一个Java高性能全文索引引擎工具包能够方便的嵌入到各类实际应用中实现全文索引搜索功能。它提供了一系列API,可以对文档进行预处理、过滤、分析、索引和检索排序。在保持高效和简单的特色以外,还保证了开发者能够自由定制和组合各类核心功能。Nutch是一个应用程序,是一个以Lucene为基础实现的搜索引擎应用,Lucene为Nutch 提供了文本搜索和索引的API,Nutch不只提供搜索,并且还有数据抓取的功能。apache
简单的说:浏览器
一个常见的问题是:我应该使用Lucene仍是Nutch?tomcat
最简单的回答是:若是你不须要抓取数据的话,应该使用Lucene。bash
常见的应用场合是:你有数据源,须要为这些数据提供一个搜索页面。在这种状况下,最好的方式是直接从数据库中取出数据并用Lucene API创建索引。
在你没有本地数据源,或者数据源很是分散的状况下,应该使用Nutch。
咱们如今进行的是Nutch的单机版安装以及配置。
本次安装Nutch的环境介绍:
下面是软件的下载地址:
当所需软件准备好以后,咱们用"FTPFlash"软件把上面上传到Linux服务器,为下面准备安装作好准备。
首先用root身份登陆"TSlave.Hadoop:192.168.1.11"后在"/usr"下建立"java"文件夹,再把用FTP上传到"/home/hadoop/"下的"jdk-6u31-linux-i586.bin"复制到"/usr/java"文件夹中。
mkdir /usr/java
cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java
接着进入"/usr/java"目录下经过下面命令使其JDK得到可执行权限,并安装JDK。
chmod +x jdk-6u31-linux-i586.bin
./jdk-6u31-linux-i586.bin
按照上面几步进行操做,最后点击"Enter"键开始安装,安装完会提示你按"Enter"键退出,而后查看"/usr/java"下面会发现多了一个名为"jdk1.6.0_31"文件夹,说明咱们的JDK安装结束,删除"jdk-6u31-linux-i586.bin"文件,进入下一个"配置环境变量"环节。
接着配置JDK环境变量,编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。在"/etc/profile"文件的尾部添加如下内容:
# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_31
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
保存并退出,执行下面命令使其配置当即生效。
source /etc/profile
最后验证一下JDK是否安装成功。
java -version
首先进入"/home/hadoop"目录,把"apache-tomcat-7.0.27.tar.gz"复制到"/usr"下面,而后解压。
cp /home/hadoop /apache-tomcat-7.0.27.tar.gz /usr
用下面命令进行解压Tomcat安装包。
tar –zxvf apache-tomcat-7.0.27.tar.gz
解压完以后,而后删除安装包,并对"apache-tomcat-7.0.27"重命名为"tomcat",把该文件夹受权于普通用户"hadoop"。
rm -rf apache-tomcat-7.0.27.tar.gz
mv apache-tomcat-7.0.27 tomcat
chown -R hadoop:hadoop tomcat
接着添加Tomcat环境变量,为了在之后系统启动后就配置好Tomcat所需的环境变量,要在"/etc/profile"文件中设置,并用"source /etc/profile"命令使其当即有效。
# set tomcat environment
export CATALINA_HOME=/usr/tomcat
export CATALINA_BASE=/usr/tomcat
export PATH=$PATH:$ CATALINA_HOME /bin
此时用"reboot"命名重启电脑,用普通"hadoop"登陆Linux系统,执行下面命令启动咱们刚才配置的Tomcat。
startup.sh
备注:别用root用户使用该命令,由于用最高用户启动Tomcat后,会在Tomcat的日志文件中生成相应的日志,可是日志的建立者是root,此时在转到普通用户启动Tomcat时,因为刚才建立的日志的用户是最高用户,其余用户没法对这些日志文件进行写,致使启动tomcat失败。还有记得把防火墙关掉。
在浏览器输入"192.168.1.11 :8080",查看是否已经启动成功。
额外执行操做,若是端口发生冲突时,或者出现中文乱码时,修改"server.xml"配置文件,该文件位于"/usr/tomcat/conf"目录下面。
Apache http服务器的端口是 80,Apache Tomcat服务器端口是8080。两者不冲突,如有冲突,修改以下:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
c disableUploadTimeout="true"
URIEncoding="UTF-8" useBodyEncodingForURI="true" />
默认服务端口为8080,如有冲突(如Apache),则可经过此配置文件更改端口(蓝色);若是配置后nutch出现中文乱码问题,则增长编码配置(红色)。
咱们用普通用户"hadoop"把Nutch安装在"/home/hadoop"下面。用下面命令进行解压和重名。
tar -zxvf apache-nutch-1.4-bin.tar.gz
mv apache-nutch-1.4-bin nutch
添加Nutch的环境变量,在"/home/hadoop/.bashrc"文件中添加以下内容。
# set nutch environment
export NUTCH_HOME=/home/hadoop/nutch
export PATH=$PATH:$ NUTCH _HOME /runtime/local/bin
添加完以后用"source .bashrc"使其当即生效。
而后在输入"nutch"命令测试是否配置成功,结果出现下面错误,固然这个错误网上说不必定出现。
这时咱们查看"/home/hadoop/nutch/runtime/local/nutch"这个文件时发现没有执行权限。用下面命令添加执行权限。
chmod +x nutch
当给该文件添加执行权限后,咱们再次查看,发现该文件的颜色发生了变化,再次执行"nutch"命令时,下面出现了该命名的参数列表。到此为止咱们的单机版Nutch已经安装完毕。