Nutch搜索引擎(第1期)_ Nutch简介及安装
1、Nutch简介
Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎。主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构。
Nutch目前最新的版本为version1.4。
1.1 Nutch的目标
Nutch 致力于让每个人能很容易,同时花费很少就可以配置世界一流的Web搜索引擎。为了完成这一宏伟的目标,Nutch必须能够做到:
- 每个月取几十亿网页
- 为这些网页维护一个索引
- 对索引文件进行每秒上千次的搜索
- 提供高质量的搜索结果
- 以最小的成本运作
1.2 Nutch的优点
- 透明度
Nutch是开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如百度,这样的索引结果并不是和站点内容相关的。因此Nutch对学术搜索和政府类站点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。
- 扩展性
你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。 Nutch 是非常灵活的,他可以被很好的客户订制并集成到你的应用程序中。使用Nutch 的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。
- 对搜索引擎的理解
我们并没有google的源代码,因此学习搜索引擎Nutch是个不错的选择。了解一个大型分布式的搜索引擎如何工作是一件让人很受益的事情。在写Nutch的过程中,从学院派和工业派借鉴了很多知识:比如:Nutch的核心部分目前已经被重新用 Map Reduce 实现了。Map Reduce 是一个分布式的处理模型,最先是从 Google 实验室提出来的。并且 Nutch 也吸引了很多研究者,他们非常乐于尝试新的搜索算法,因为对Nutch 来说,这是非常容易实现扩展的。
1.3 Nutch与Lucene关系
Lucene是一个Java高性能全文索引引擎工具包可以方便的嵌入到各种实际应用中实现全文索引搜索功能。它提供了一系列API,能够对文档进行预处理、过滤、分析、索引和检索排序。在保持高效和简单的特点之外,还保证了开发者可以自由定制和组合各种核心功能。Nutch是一个应用程序,是一个以Lucene为基础实现的搜索引擎应用,Lucene为Nutch 提供了文本搜索和索引的API,Nutch不仅提供搜索,而且还有数据抓取的功能。
简单的说:
- Lucene 不是完整的应用程序,而是一个用于实现全文检索的软件库。
- Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。
一个常见的问题是:我应该使用Lucene还是Nutch?
最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。
常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。
在你没有本地数据源,或者数据源非常分散的情况下,应该使用Nutch。
2、Nutch安装
我们现在进行的是Nutch的单机版安装以及配置。
2.1 环境介绍
本次安装Nutch的环境介绍:
- 操作系统:CentOS6.0(机器名:TSlave.Hadoop)
- JDK版本:jdk-6u31-linux-i586.bin
- Nutch版本:apache-nutch-1.4-bin.tar.gz
- Tomcat版本:apache-tomcat-7.0.27.tar.gz
下面是软件的下载地址:
- Nutch官网:http://nutch.apache.org/
- Tomcat官网:http://tomcat.apache.org/
当所需软件准备好之后,我们用"FTPFlash"软件把上面上传到Linux服务器,为下面准备安装做好准备。

2.2 安装JDK
首先用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

2.3 安装Tomcat
首先进入"/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出现中文乱码问题,则增加编码配置(红色)。
2.4 安装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已经安装完毕。
Nutch搜索引擎(第1期)_ Nutch简介及安装的更多相关文章
- Nutch搜索引擎(第2期)_ Solr简介及安装
1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...
- Nutch搜索引擎Solr简介及安装
Nutch搜索引擎(第2期)_ Solr简介及安装 1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...
- Nutch搜索引擎系列(目录)
下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...
- Nutch搜索引擎系列
下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...
- centos 4.4配置使用 and Nutch搜索引擎(第1期)_ Nutch简介及安装
centos 4.4配置使用 1.Nutch简介 Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的 ...
- Nutch之简介与安装
初学Nutch之简介与安装 初学Nutch之简介与安装 1.Nutch简介 Nutch是一个由Java实 现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其 ...
- 初学Nutch之简介与安装
1.Nutch简介 Nutch是一个由Java实 现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行 查询 ...
- 【渗透实战】那些奇葩的WAF_第二期_无意发现通杀漏洞,空字节突破上传!
/文章作者:Kali_MG1937 CSDN博客号:ALDYS4 QQ:3496925334 未经许可,禁止转载/ 该博文为本人18年左右的渗透记录,文法粗糙,技术含量极低,流水账文章,且今日不知为何 ...
- 【渗透实战】记一次艰难的内网漫游第四期_蹭我WIFI?看我如何利用组合拳日进蹭网者内网
/文章作者:Kali_MG1937 CSDN博客ID:ALDYS4 QQ:3496925334/ 内网漫游系列第三期:[渗透实战]记一次艰难的内网漫游第三期_我是如何利用APT攻击拿到内网最高权限的 ...
随机推荐
- Git同步原始仓库到Fork仓库中
前言 本文介绍的是Git同步原始仓库到Fork仓库示例教程,废话不多说,下面直接到实操部分. 这里以aspnetcore-doc-cn的github仓库为例,同步dev分支. 步骤 1.初始化本地仓库 ...
- 【C#】组件发布:MessageTip,轻快型消息提示窗
-------------201610212046更新------------- 更新至2.0版,基本完全重写,重点: 改为基于原生LayeredWindow窗体和UpdateLayeredWindo ...
- mybatis笔记3 一些原理的理解
1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBea ...
- 居然是Firefox没有抛弃我们
面向企业级市场,一款网页浏览器的很多特性不是说改就改,说丢弃就丢弃.就像微软不能抛弃IE一样,Firefox也有类似的定位和使命. Firefox即尝试提供企业级市场所需的特性稳定的软件版本(LTS) ...
- Hive学习笔记(一)
摘要: Hive 是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制.H ...
- hello,world!
我是马燕,在2017即将来临之际,我希望自己,在新的一年里,能开开心心,健健康康,家人平平安安! 我会努力工作,努力学习,离自己的理想越来越接近. 以后我会将我的所学所得写在这里,供未来的自己随时查看 ...
- Arcmap中加载互联网地图资源
本文转载自:http://blog.3snews.net/space.php?uid=6955280&do=blog&id=67981 前一段时间想在Arcmap中打开互联网地图中的地 ...
- ios native工程集成react-native的demo
react-native看到了给现有工程添加react-native环境的时候碰到一个问题: 如何往工程中添加 package.json文件,以及node_modules是怎么来的? 我开始的时候以为 ...
- JSPatch来更新已上线的App中出现的BUG(超级详细)
JSPatch的作用是什么呢? 简单来说:(后面有具体的操作步骤以及在操作过程中会出现的错误) 1.iOS应用程序上架到AppStore需要等待苹果公司的审核,一般审核时间需要1到2周.虽然程序在上架 ...
- 使用 Json.Net 对Json文本进行 增删改查
JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...