Nutch搜索引擎(第1期)_Nutch简介及安装
- 格式:pdf
- 大小:740.72 KB
- 文档页数:11
Nutch 的配置Nutch的配置文件主要有三类:1.Hadoop的配置文件,Hadoop-default.xml和Hadoop-site.xml。
2.Nutch的配置文件,Nutch-default.xml和Nutch-site.xml。
3.Nutch的插件的配置文件,这些插件的配置文件在加载插件的时候由插件自行加载,如filter的配置文件。
配置文件的加载顺序决定了配置文件的优先级,先加载的配置文件优先级低,后加载的配置文件优先级高,优先级低的配置会被优先级高的配置覆盖。
因此,了解Nutch配置文件加载的顺序对学习使用Nutch是非常必要的。
下面我们通过对Nutch源代码的分析来看看Nutch加载配置文件的过程。
Nutch1.0使用入门(一)介绍了Nutch主要命令--crawl的使用,下面我们就从crawl的main类(org.apache.nutch.crawl.Crawl)的main方法开始分析:Crawl类main方法中加载配置文件的源码如下:Configuration conf = NutchConfiguration.create();conf.addResource("crawl-tool.xml");JobConf job = new NutchJob(conf);上面代码中,生成了一个NutchConfiguration类的对象,NutchConfiguration 是Nutch管理自己配置文件的类,Configuration是Hadoop管理自己配置文件的类。
下面我们进入NutchConfiguration类的create()方法。
/** Create a {@link Configuration} for Nutch. */public static Configuration create() {Configuration conf = new Configuration();addNutchResources(conf);return conf;}create()方法中,先生成了一个Configuration类的对象。
Nutch搜索引擎简介Nutch 是一个基于Java 实现的开源搜索引擎,其内部使用了高性能全文索引引擎工具Lucene。
从nutch0.8.0开始,Nutch 完全构建在Hadoop 分布式计算平台之上。
Hadoop 除了是一个分布式文件系统外,还实现了Google 的GFS 和MapReduce 算法。
因此基于Hadoop 的Nutch 搜索引擎可以部署在由成千上万计算机组成的大型集群上。
由于商业搜索引擎允许竞价排名,这样导致索引结果并不完全是和站点内容相关的,而Nutch 搜索结果能够给出一个公平的排序结果,这使得Nutch 在垂直搜索、档案互联网搜索等领域得到了广泛应用。
背景知识Nutch 搜索引擎是一个基于Java 的开放源代码的搜索引擎。
Nutch 搜索引擎处理流程包括抓取流程和搜索流程,如图1 所示。
相应地Nutch 也分为2部分,抓取器和搜索器。
在抓取流程中,抓取器也叫蜘蛛或者机器人,以广度优先搜索(BFS)的方式从企业内部网或者互联网抓取网页。
这个过程涉及到对CrawlDB 和LinkDB 数据库的操作。
然后Nutch 解析器开始解析诸如HTML、XML、RSS、PDF等不同格式的文档。
最后Nutch 索引器针对解析结果建立索引并存储到indexDB 和SegmentsDB 数据库中,以供搜索器搜索使用。
在搜索流程中,搜索应用使用输入关键词调用Nutch 搜索接口(Nutch Query Interface)。
应用可通过网页上的输入框输入相应关键词。
搜索接口解析搜索请求为Lucene 全文检索引擎可以识别的格式。
Nutch 索引器将会调用Lucene 引擎来响应请求在indexDB 上展开搜索。
最后搜索接口收集从索引器返回的URL、标题、锚和从SegmentsDB 返回的内容。
所有上述内容将被提供给排序算法进行排序。
排序完成后,搜索接口将返回命中的搜索结果。
由于构建在Hadoop 分布式文件系统之上,Nutch 对CrawlDB, LinkDB, SegmentsDB 和IndexDB 数据库的操作都是通过调用M/R(map/reduce) 函数完成的。
网络数据采集框架Nutch及其应用研究Nutch是一个开源的网络数据采集框架,最初由Doug Cutting开发,并于2003年开源。
它是一个基于Java的框架,用于从互联网上采集和索引大规模数据,支持分布式环境并具有高度可扩展性。
Nutch基于Apache Hadoop构建,使用了分布式文件系统HDFS和分布式计算框架MapReduce。
Nutch的主要目标是从互联网中获取低成本、可扩展和高可靠性的大规模数据,并为用户提供强大的搜索和分析功能。
Nutch提供了丰富的功能和工具,包括网络爬虫、数据提取、网页解析、数据清洗和索引等,使用户能够灵活地定制和扩展自己的数据采集系统。
Nutch的应用研究主要集中在以下几个方面:1. 网络爬虫技术:Nutch实现了高度可配置和可扩展的网络爬虫,能够从互联网上快速、智能地抓取和下载网页。
研究者可以基于Nutch提供的框架进行网络爬虫性能的优化、爬取策略的设计和算法的改进等。
2. 数据提取和网页解析:Nutch提供了丰富的数据提取和网页解析功能,可以自动从网页中提取结构化的数据。
研究者可以基于Nutch进行数据提取算法的研究和改进,使其能够更加准确和高效地从网页中提取有用的信息。
3. 数据清洗和去重:Nutch提供了强大的数据清洗和去重功能,可以对采集到的数据进行过滤、去噪和重复数据的删除。
研究者可以基于Nutch开发各种数据清洗和去重算法,以提高数据的质量和准确性。
4. 数据索引和搜索:Nutch使用Apache Solr作为搜索引擎,可以对采集到的数据进行索引和搜索。
研究者可以基于Nutch进行搜索引擎的性能优化、搜索算法的改进和用户体验的提升等研究工作。
5. 分布式计算和大数据处理:Nutch基于Apache Hadoop构建,可以运行在分布式环境下,并利用HDFS和MapReduce进行大规模数据的处理和分析。
研究者可以基于Nutch进行分布式计算和大数据处理算法的研究和开发。
随着信息技术的不断发展,大数据分析已经成为了企业决策和发展的重要工具。
而在大数据分析的过程中,数据的采集和清洗是至关重要的环节。
本文将介绍几种常用的数据采集与清洗自动化工具,帮助读者更好地理解大数据分析中的关键环节。
一、数据采集工具1. Apache NutchApache Nutch 是一个开源的网络搜索引擎。
它可以帮助用户获取网页信息,并将其转换为结构化的数据,方便后续的分析和处理。
Nutch 支持多种数据存储格式,包括文本、HTML、XML 等,并且可以通过定制插件来扩展其功能。
它的分布式架构和高性能使得它成为了大规模数据采集的首选工具之一。
2. ScrapyScrapy 是一个基于 Python 的开源网络爬虫框架。
它提供了简洁的 API 和强大的选择器功能,可以帮助用户快速高效地获取网页信息。
Scrapy 支持异步网络请求和自定义中间件,同时还提供了丰富的插件和扩展机制。
这使得它成为了一款非常灵活和易用的数据采集工具。
二、数据清洗工具1. OpenRefineOpenRefine(前身为 Google Refine)是一款开源的数据清洗工具。
它支持导入多种数据格式,包括 CSV、JSON、XML 等,同时还提供了强大的数据转换和整合功能。
OpenRefine 还支持实时预览和撤销操作,为用户提供了非常便利的数据清洗环境。
另外,它还支持自定义插件和扩展,使得用户可以根据实际需求定制功能。
2. Trifacta WranglerTrifacta Wrangler 是一款专注于数据清洗和转换的商业工具。
它提供了直观的用户界面和丰富的数据处理操作,可以帮助用户快速高效地清洗数据。
Trifacta Wrangler 还支持数据质量分析和自动化建模,为用户提供了一站式的数据清洗解决方案。
值得一提的是,它还支持与 Hadoop 和 Spark 等大数据处理平台的集成,为用户提供了更加便捷的数据处理流程。
网络数据采集框架Nutch及其应用研究1. 引言1.1 Nutch框架简介Nutch框架是一个开源的网络数据采集框架,它可以帮助用户从互联网上获取大量的数据并进行处理。
该框架由Apache软件基金会开发和维护,采用Java语言编写,具有良好的跨平台性和扩展性。
Nutch框架的设计初衷是为了解决互联网上海量数据的采集和处理问题,为用户提供一个高效、可靠的数据采集解决方案。
Nutch框架的核心功能包括网络爬虫、数据存储、数据索引和搜索等,通过这些功能可以实现对互联网上各种类型数据的采集、存储和检索。
用户可以基于Nutch框架构建自己的定制化数据采集系统,根据自己的需求和规模进行扩展和优化。
Nutch框架是一个强大的数据采集工具,可以帮助用户快速高效地获取网络上的各种数据资源。
通过学习和使用Nutch框架,用户可以更好地理解网络数据采集的原理和方法,为自己的研究和应用提供更有力的支持。
1.2 研究背景在当今信息爆炸的时代,如何高效地获取和处理海量的网络数据成为了各行各业都面临的挑战之一。
随着互联网的迅猛发展,网络数据的规模和复杂度不断增加,传统的数据采集方法已经无法满足现代大数据的需求。
人们急需一种高效、可扩展、可定制的网络数据采集框架来帮助他们解决这一难题。
本研究将重点关注Nutch框架的原理与特点、应用领域、功能模块、在数据采集中的作用以及优缺点等方面展开探讨,旨在深入分析Nutch框架的特点和价值,为进一步应用和推广Nutch框架提供理论支持和实践指导。
1.3 研究意义研究Nutch框架的意义主要体现在以下几个方面:Nutch框架可以帮助研究人员快速、高效地收集网络上的数据,为相关研究提供数据支持;Nutch框架的应用广泛,涉及到搜索引擎、网络爬虫、舆情分析等领域,可以满足不同领域的需求;通过研究Nutch框架的原理和特点,可以促进网络数据采集技术的进步和发展,推动整个领域的发展;针对Nutch框架的优缺点,可以有针对性地改进和优化框架,提高数据采集的效率和质量。
nutch应用-安装与使用Nutch 使用之锋芒初试“工欲善其事,必先利其器。
”经过前文的“细解”,我们已经完成了Nutch在Windows中的安装。
接下来就让我们通过锋芒初试,来亲自体验一下Nutch的强大功能吧!Nutch的爬虫抓取网页有两种方式,一种方式是Intranet Crawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-web crawling,针对的是整个互联网,使用inject、generate、fetch和updatedb等更底层的命令。
本文将以使用Nutch为笔者在CSDN处的个人专栏(/zjzcl)文章内容建立搜索功能为例,来讲述Intranet Crawling的基本使用方法(假设用户电脑系统已安装好JDK、Tomcat和Resin,并做过相应的环境配置)。
1、设置Nutch的环境变量在Windows系统的环境变量设置中,增加NUTCH_JAVA_HOME变量,并将其值设为JDK的安装目录。
比如笔者电脑中JDK安装于D:\j2sdk1.4.2_09,因此将NUTCH_JAVA_HOME的值设为D:\j2sdk1.4.2_09。
2、Nutch抓取网站页面前的准备工作(1)在Nutch的安装目录中建立一个名为url.txt的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页。
笔者在此文件中写入如下内容:/zjzcl(2)编辑conf/crawl-urlfilter.txt文件,修改部分:# accept hosts in +^/zjzcl3、运行Crawl命令抓取网站内容双击电脑桌面上的Cygwin图标,在命令行窗口中输入:cd /cygdrive/i/nutch-0.7.1不明白此命令含义的读者请参见前《细解》一文,然后再输入:bin/nutch crawl url.txt -dir crawled -depth 3 -threads 4 >& crawl.log等待大约2分多钟后,程序运行结束。
Nutch 是一个开源Java 实现的搜索引擎。
它提供了我们运行自己的搜索引擎所需的全部工具。
包括全文搜索和Web爬虫。
Nutch使用方法简介:/pengpengfly/archive/2008/09/29/2994664.aspx nutch1.2 eclipse tomcat6.0 配置:/oliverwinner/blog/item/4be3f1370284b32f5ab5f565.htmlNutch 实战:介绍了开源搜索引擎Nutch 的基本信息,详细说明了在Eclispe 下运行Nutch 的步骤和需要注意的问题,还分析了部分源代码。
很好的文章Nutch 目录结构bin:用于命令行运行的文件;conf:Nutch的配置文件lib:一些运行所需要的jar文件;plugins:存放相应的插件;src:Nutch的所有源文件;webapps:web运行相关文件;nutch-0.9.war是Nutch所提供的基于Tomcat的应用程序包。
Nutch工作流程1. 将起始URL 集合注入到Nutch 系统之中。
2. 生成片段文件,其中包含了将要抓取的URL 地址。
3. 根据URL地址在互联网上抓取相应的内容。
4. 解析所抓取到的网页,并分析其中的文本和数据。
5. 根据新抓取的网页中的URL集合来更新起始URL集合,并再次进行抓取。
6. 同时,对抓取到的网页内容建立索引,生成索引文件存放在系统之中。
(1)准备需要的软件列表Cygwin (下载地址:/setup.exe)Jdk(1.4.2以上版本,下载地址/technetwork/java/javase/downloads/jdk-6u29-download-513648.html)Nutch(推荐使用0.9版本,下载地址/dyn/closer.cgi/lucene/nutch/)Tomcat(下载地址/)(2)安装软件1) Cygwin 打开安装程序Cygwin.exe后,在"Choose Installation Type"页选择"Install from Internet"(如果你已经把全部安装包下载到本地,就可以选择"Install from local directory"选项)。
经过好几天的尝试,终于成功在windows7的环境下将nutch成功运行出来了,下面将经验记下。
1、cygwin的安装:下载地址:/setup.exe(1)因为nutch自身的命令是要在linux环境下才能运行,所以先安装了cygwin,Cygwin 是一个在Windows下的模拟Linux系统程序。
Cygwin的安装:/cfree_ch/doc/help/UsingCF/CompilerSupport/Cygwin/Cygwin1 .htm这个网址对cygwin的安装步骤演示的很详细,对我们这些初步接触cygwin的人有很大的帮助。
(2)下面是我自己安装时的截图1)安装页面,点击下一步2)选择安装目录,可以根据默认,也可以根据自己需要换路径3)建立Downloads文件夹,接收下载包4)选择镜像地址,没有演示中说的:。
.cn代表中国的网站,下载会更快5)选择安装包6)安装完成2、下载安装apache-nutch-1.2-bin.zip并设置。
下载地址:/dist/nutch/(1)下载完成后将其解压到D盘,文件夹名为nutch-1.2(2)输入,打开到d盘目录下nutch-1.2文件夹,输入bin/nutch 进行nutch安装测试:出来一系列nutch的命令,证明nutch安装成功;(3)在Windows系统的环境变量设置中,添加NUTCH_JA V A_HOME环境变量:D:\jdk1.7.0_07。
并将其值设为JDK的安装目录。
(4)Nutch抓取网站页面前的预备工作1)在Nutch-1.2的安装目录下建立一个名为urls的文件夹,并在文件夹下建立url.text 文件,在文件中写入: (即要抓取网站的网址)2))修改网址过滤规则,编辑conf/crawl-urlfilter.txt文件,修改 部分:3)修改conf/nutch-site.xml代理信息,在<configuration>和</configuration>之间添加如下内容4)修改nutch-1.2\conf\nutch-default.xml文件,找<name></name> ,然后随便设置Value值注意:如果为空时,在爬行的时候可能出现空指针异常且在tomcat 中搜索时可能导致0条记录,所以务必加上。
细细品味Nutch——Nutch搜索引擎(第1期)精华集锦csAxp虾皮工作室/xia520pi/2014年3月18日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下面是软件的下载地址:●JDK官网:/technetwork/java/javase/downloads/index.html●Nutch官网:/●Tomcat官网:/当所需软件准备好之后,我们用“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/javacp /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的“JA V A_HOME”、“CLASSPATH”以及“PATH”内容。
在“/etc/profile”文件的尾部添加以下内容:# set java environmentexport JA V A_HOME=/usr/java/jdk1.6.0_31export CLASSPATH=.:$CLASSPATH:$JA V A_HOME/lib:$JA V A_HOME/jre/libexport PATH=$PATH:$JA V A_HOME/bin:$JA V A_HOME/jre/bin保存并退出,执行下面命令使其配置立即生效。
source /etc/profile最后验证一下JDK是否安装成功。
java -version2.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.gzmv apache-tomcat-7.0.27 tomcatchown -R hadoop:hadoop tomcat接着添加Tomcat环境变量,为了在以后系统启动后就配置好Tomcat所需的环境变量,要在“/etc/profile”文件中设置,并用“source /etc/profile”命令使其立即有效。
# set tomcat environmentexport CATALINA_HOME=/usr/tomcatexport CATALINA_BASE=/usr/tomcatexport 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”目录下面。
http服务器的端口是 80,Apache Tomcat服务器端口是8080。
二者不冲突,若 Apache有冲突,修改如下:<!-- 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.gzmv apache-nutch-1.4-bin nutch添加Nutch的环境变量,在“/home/hadoop/.bashrc”文件中添加如下内容。
# set nutch environmentexport NUTCH_HOME=/home/hadoop/nutchexport PATH=$PATH:$ NUTCH _HOME /runtime/local/bin添加完之后用“source .bashrc”使其立即生效。