nutch_
Nutch搜索引擎(第1期)_Nutch简介及安装
![Nutch搜索引擎(第1期)_Nutch简介及安装](https://img.taocdn.com/s3/m/9b3e4371a26925c52cc5bf8b.png)
细细品味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-1.2+Hadoop-0.20.2集群的分布式爬取
![Nutch-1.2+Hadoop-0.20.2集群的分布式爬取](https://img.taocdn.com/s3/m/1deb76220066f5335a812145.png)
Hadoop-0.20.2+ Nutch-1.2+Tomcat-7——分布式搜索配置随着nutch的发展,各模块逐渐独立性增强,我从2.1到1.6装过来,也没有实现整个完整的功能。
今天装一下nutch1.2,这应该是最后一个有war文件的稳定版本。
1. 准备工作下载apache-nutch-1.2-bin.zip、apache-tomcat-7.0.39.tar.gz、hadoop-0.20.2.tar.gz。
将下载的hadoop-0.20.2.tar.gz解压到/opt文件夹下。
将下载的apache-nutch-1.2-bin.zip解压到/opt文件夹下。
将下载的apache-tomcat-7.0.39.tar.gz解压到/opt文件夹下。
2. 配置hadoop-0.20.2(1) 编辑conf/hadoop-env.sh,最后添加export JAVA_HOME=/opt/java-7-sunexport HADOOP_HEAPSIZE=1000exportHADOOP_CLASSPATH=.:/opt/nutch-1.2/lib:/opt/hadoop-0.20.2export NUTCH_HOME=/opt/nutch-1.2/lib(2) 编辑/etc/profile,添加#Hadoopexport HADOOP_HOME=/opt/hadoop-0.20.2export PATH=$PATH:$HADOOP_HOME/bin(3) 编辑conf/core-site.xml<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name></name><value>hdfs://m2:9000</value></property><property><name>hadoop.tmp.dir</name><value>/opt/hadoop-0.20.2/tempdata/var</value></property><property><name>hadoop.native.lib</name><value>true</value><description>Should native hadoop libraries, if present, beused.</description></property></configuration>(4) 编辑conf/hdfs-site.xml<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name>.dir</name><value>/opt/hadoop-0.20.2/tempdata/name1,/opt/hadoop-1.0.4/tempdata /name2</value> #hadoop的name目录路径<description> </description><property><name>dfs.data.dir</name><value>/opt/hadoop-0.20.2/tempdata/data1,/opt/hadoop-1.0.4/tempdata/ data2</value><description> </description></property><property><name>dfs.replication</name><value>2</value></property></configuration>(5) 编辑conf/mapred-site.xml<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>mapred.job.tracker</name><value>m2:9001</value></property><property><name>mapred.local.dir</name><value>/opt/hadoop-0.20.2/tempdata/var</value></property><name>pression.type</name><value>BLOCK</value><description>If the job outputs are to compressed as SequenceFiles,how shouldthey be compressed? Should be one of NONE, RECORD or BLOCK.</description></property><property><name>press</name><value>true</value><description>Should the job outputs be compressed?</description></property><property><name>press.map.output</name><value>true</value></property>(6) 将conf/master和conf/slave文件写好。
网络数据采集框架Nutch及其应用研究
![网络数据采集框架Nutch及其应用研究](https://img.taocdn.com/s3/m/38227d3317fc700abb68a98271fe910ef12dae1b.png)
网络数据采集框架Nutch及其应用研究一、Nutch框架概述Nutch是一种全文搜索引擎和网络爬虫框架,是由Apache Lucene和Hadoop等开源软件组成的平台。
它包括爬虫、索引器和搜索器等模块,可以对互联网上的文本、图像、视频等数据进行采集、存储、处理和检索。
Nutch的设计目标是实现一个高度可扩展的网络爬虫系统,支持定制化开发和快速性能优化。
Nutch的架构基于分布式计算,由多个节点协同工作完成大规模数据采集和处理任务。
它使用Hadoop作为底层的分布式计算框架,可以支持海量数据的并行处理和计算。
同时,Nutch也提供了灵活的配置选项和丰富的插件机制,可以根据不同的需求和场景进行自定义开发和扩展功能。
1. 开源:Nutch是一种开源软件,可以自由获取和使用,具有较低的开发和维护成本。
2. 可扩展性强:Nutch采用分布式计算和插件机制,可以方便地增加和扩展新的功能模块和算法。
3. 支持多语言:Nutch可以支持多种语言的分词和搜索,包括英语、中文、日语等。
4. 支持自定义:Nutch可以根据用户的需求和场景进行自定义开发和优化,例如自定义爬虫策略、页面过滤规则、索引器等。
5. 数据可视化:Nutch可以将采集的数据进行可视化处理,例如生成统计图表、地理信息图等。
1. 信息检索Nutch可以通过网络爬虫批量采集互联网上的文本、图像、视频等信息,再通过索引器建立数据索引,最终通过搜索器实现信息检索。
在这一过程中,Nutch可以支持多种搜索算法和检索模式,并提供定制化开发选项。
2. 情感分析通过采集互联网上的社交媒体、博客、新闻等数据,Nutch可以支持情感分析的研究。
情感分析是指通过自然语言处理和机器学习技术,对文本内容进行情绪分类和评价的过程。
Nutch可以支持多语言的分词和情感分析,例如中文、英语等。
3. 数据挖掘通过采集互联网上的数据,Nutch可以为用户提供数据挖掘的服务。
数据挖掘是指通过计算机技术分析、提取、过滤和预测数据的过程,可以应用于商业分析、科研、市场调研等领域。
Nutch 的配置文件
![Nutch 的配置文件](https://img.taocdn.com/s3/m/329470d176a20029bd642d1d.png)
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类的对象。
基于Hadoop的Nutch分布式网络爬虫的研究9.2
![基于Hadoop的Nutch分布式网络爬虫的研究9.2](https://img.taocdn.com/s3/m/1c7eb13af111f18583d05ad1.png)
基于Hadoop的Nutch分布式主题主题网络爬虫的研究施磊磊,施化吉,朱玉婷(江苏大学计算机科学与通信工程学院,江苏镇江212013)摘要:针对Nutch分布式主题爬虫的爬取效率和爬取的准确度问题,本文提出了改进的主题判断和预测模型来提高下载网页的主题相关度和网页的质量,同时引入改进的PageRank 算法来计算链接主题网页的优先级,并搭建Hadoop分布式集群环境,以MapReduce分布式计算模型以达到高效率的分布式爬取,然后利用HBase、Zookeeper和Memcached来达到高效率的分布式存储,最后通过实验验证了Nutch分布式主题爬虫的高效性、准确性、扩展性和可靠性。
关键词:主题爬虫;Hadoop集群; Nutch; MapReduceResearch on Nutch distributed web crawlersubject oriented.SHI Lei-lei , SHI Hua-ji , ZHU Yu-tin(School of Computer Science and Telecommunication Engineering,Jiangsu University,Zhenjiang 212013,China)Abstract:For crawling crawling efficiency and accuracy problems Nutch crawler distributed topic, this paper proposes an improved model to predict and judge topics to improve the quality of downloaded pages and pages of the topic, while the introduction of the improved PageRank algorithm to calculate the link priorities and build Hadoop distributed cluster environment to MapReduce distributed computing model in order to achieve efficient crawling topic pages, preferably through experimental verification of the efficiency of the subject reptiles, scalability and reliability.Keywords:topic crawler;Hadoop cluster;Nutch;MapReduce1 引言Nutch是一个开源的垂直搜索引擎,它使用Java语言开发,具有跨平台应用的优点,Nutch作为主题网络爬虫和lucene的结合,功能上极其强悍,每个月数以亿计的网页爬取量,网页搜索的高速,开源的功能剖析都是我们选择研究它的关键因素。
Nutch爬虫
![Nutch爬虫](https://img.taocdn.com/s3/m/07e1381702020740be1e9bdc.png)
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相关框架视频教程(Hadoop、Hbase、Lucene、Solr、Tika、Gora)(13-20讲)
![Nutch相关框架视频教程(Hadoop、Hbase、Lucene、Solr、Tika、Gora)(13-20讲)](https://img.taocdn.com/s3/m/1f407400bb68a98271fefac3.png)
第十三讲1、改变负载三台机器,改变负载host2(NameNode、DataNode、TaskTracker)host6(SecondaryNameNode、DataNode、TaskTracker)host8(JobTracker 、DataNode、TaskTracker)指定SecondaryNameNode为host6:vi conf/masters指定host6scp conf/masters host6:/home/hadoop/hadoop-1.1.2/conf/mastersscp conf/masters host8:/home/hadoop/hadoop-1.1.2/conf/mastersvi conf/hdfs-site.xml<property><name>dfs.http.address</name><value>host2:50070</value></property><property><name>dfs.secondary.http.address</name><value>host6:50090</value></property>scp conf/hdfs-site.xml host6:/home/hadoop/hadoop-1.1.2/conf/hdfs-site.xmlscp conf/hdfs-site.xml host8:/home/hadoop/hadoop-1.1.2/conf/hdfs-site.xml指定JobTracker为host8:vi conf/mapred-site.xml<property><name>mapred.job.tracker</name><value>host8:9001</value></property>scp conf/mapred-site.xml host6:/home/hadoop/hadoop-1.1.2/conf/mapred-site.xml scp conf/mapred-site.xml host8:/home/hadoop/hadoop-1.1.2/conf/mapred-site.xml vi conf/core-site.xml<property><name>fs.checkpoint.dir</name><value>/home/hadoop/dfs/filesystem/namesecondary</value></property>scp conf/core-site.xml host6:/home/hadoop/hadoop-1.1.2/conf/core-site.xmlscp conf/core-site.xml host8:/home/hadoop/hadoop-1.1.2/conf/core-site.xml配置host8:host8上的脚本start-mapred.sh会启动host2和host6上面的TaskTracker,所以需要对host8执行:ssh-keygen -t rsa(密码为空,路径默认)ssh-copy-id -i .ssh/id_rsa.pub hadoop@host2ssh-copy-id -i .ssh/id_rsa.pub hadoop@host6ssh-copy-id -i .ssh/id_rsa.pub hadoop@host8可以在host8上面通过ssh无密码登陆host2和host6ssh host2ssh host6ssh host8在/home/hadoop/.bashrc 中追加:export PATH=/home/hadoop/hadoop-1.1.2/bin:$PATHhost2: 执行start-dfs.shhost8: 执行start-mapred.sh2、SecondaryNameNodessh host6停止secondarynamenodehadoop-1.1.2/bin/hadoop-daemon.sh stop secondarynamenode强制合并fsimage和eidtshadoop-1.1.2/bin/hadoop secondarynamenode -checkpoint force启动secondarynamenodehadoop-1.1.2/bin/hadoop-daemon.sh start secondarynamenode3、启用回收站<property><name>fs.trash.interval</name><value>10080</value></property>1、动态增加DataNode节点和TaskTracker节点以host226为例在host226上执行:指定主机名vi /etc/hostname指定主机名到IP地址的映射vi /etc/hosts增加用户和组addgroup hadoopadduser --ingroup hadoop hadoop更改临时目录权限chmod 777 /tmp在host2上执行:vi conf/slaves增加host226ssh-copy-id -i .ssh/id_rsa.pub hadoop@host226scp -r /home/hadoop/hadoop-1.1.2 hadoop@host226:/home/hadoop/hadoop-1.1.2在host8上执行:vi conf/slaves增加host226ssh-copy-id -i .ssh/id_rsa.pub hadoop@host226在host226上面执行:hadoop-daemon.sh start datanodehadoop-daemon.sh start tasktracker在/etc/hosts的配置文件中,localhost到ip地址的映射要放到ipv4的最后面1、限制hadoop节点连接NameNode:vi conf/hdfs-site.xml<property><name>dfs.hosts</name><value>/home/hadoop/hadoop-1.1.2/conf/include</value></property><property><name>dfs.hosts.exclude</name><value>/home/hadoop/hadoop-1.1.2/conf/exclude</value></property>加入集群节点vi /home/hadoop/hadoop-1.1.2/conf/includeJobTracker:vi conf/mapred-site.xml<property><name>mapred.hosts</name><value>/home/hadoop/hadoop-1.1.2/conf/include</value></property><property><name>mapred.hosts.exclude</name><value>/home/hadoop/hadoop-1.1.2/conf/exclude</value></property>加入集群节点vi /home/hadoop/hadoop-1.1.2/conf/include重启集群2、动态删除DataNode节点和TaskTracker节点vi /home/hadoop/hadoop-1.1.2/conf/exclude增加待删除的节点host226在NameNode上面执行:hadoop dfsadmin -refreshNodesvi hadoop-1.1.2/conf/slaves (去掉host226)vi hadoop-1.1.2/conf/include (去掉host226)hadoop dfsadmin -refreshNodes(使include的更改生效) rm hadoop-1.1.2/conf/excludeexclude主要是使一个datanode节点安全退役删除tasktracker方式一:vi /home/hadoop/hadoop-1.1.2/conf/exclude增加待删除的节点host226在JobTracker上面执行:hadoop mradmin -refreshNodesvi hadoop-1.1.2/conf/slaves (去掉host226)vi hadoop-1.1.2/conf/include (去掉host226)hadoop mradmin -refreshNodes(使include的更改生效) rm hadoop-1.1.2/conf/exclude删除tasktracker方式二:vi /home/hadoop/hadoop-1.1.2/conf/include删除待删除的节点host226在JobTracker上面执行:hadoop mradmin -refreshNodesvi hadoop-1.1.2/conf/slaves (去掉host226)1、运行基准测试hadoop jar hadoop-test-1.1.2.jarhadoop jar hadoop-test-1.1.2.jar DFSCIOTest -write -nrFiles 12 -fileSize 100000 -resFile test hadoop jar hadoop-test-1.1.2.jar DFSCIOTest -read -nrFiles 12 -fileSize 100000 -resFile test hadoop jar hadoop-test-1.1.2.jar DFSCIOTest -clearGanglia主要是用来监控大规模分布式系统的性能,如:cpu 、内存、硬盘、负载、网络流量等。
网络数据采集框架Nutch及其应用研究
![网络数据采集框架Nutch及其应用研究](https://img.taocdn.com/s3/m/c48d2e6d443610661ed9ad51f01dc281e53a56a3.png)
网络数据采集框架Nutch及其应用研究一、Nutch的基本原理和架构Nutch是一个由Java语言编写的网络数据采集和搜索引擎工具,它采用了分布式的架构,能够实现快速、高效地抓取互联网上的信息。
Nutch的基本原理是通过模拟用户浏览器的行为,从网页中抓取所需的信息,并将其存储到本地的数据库中。
在实际应用中,Nutch通常与Apache Hadoop和Apache Solr等工具配合使用,实现数据的分布式存储和检索。
Nutch的架构主要由以下几个组件组成:1. 调度器(Scheduler):负责调度抓取任务,确定抓取的网页地址和优先级。
2. 抓取器(Fetcher):实际执行抓取任务,将网页内容下载到本地。
3. 解析器(Parser):对抓取到的网页内容进行解析,提取出其中的文本和链接信息。
4. 存储器(Storage):将解析后的数据存储到本地的数据库中,以便后续的检索和分析。
二、Nutch在实际应用中的优势1. 高效的抓取能力:Nutch采用了分布式的抓取策略,能够同时处理多个抓取任务,大大提高了抓取的效率。
2. 灵活的配置选项:Nutch提供了丰富的配置选项,用户可以根据自己的需求对抓取策略、解析规则等进行定制化设置。
3. 丰富的扩展接口:Nutch提供了丰富的扩展接口,可以方便地与其他数据分析工具进行集成,满足不同应用场景的需求。
4. 开放源代码:Nutch是一个开源项目,用户可以自由地查看和修改其源代码,满足个性化定制的需求。
三、Nutch在实际应用中的不足之处1. 抓取策略的优化:Nutch的抓取策略虽然灵活,但在实际应用中需要根据具体的需求进行优化,避免出现重复抓取和漏抓的情况。
2. 分布式环境的配置和管理:Nutch的分布式架构需要依赖于其他组件(如Hadoop),在配置和管理方面需要花费一定的精力。
3. 对大规模数据的处理能力有限:虽然Nutch在小规模数据上有良好的表现,但在处理大规模数据时,性能会有所下降,需要进一步优化。
nutch介绍
![nutch介绍](https://img.taocdn.com/s3/m/697fc04c2b160b4e767fcf27.png)
搜索过程 Nutch提供了一个Fascade的NutchBean类供我 们使用,一段典型的代码如下
nutch的目标 nutch致力于让每个人能很容易, 同时花费很少 就可以配置世界一流的Web搜索引擎. 为了完成这 一宏伟的目标, nutch必须能够做到: • 每个月取几十亿网页 • 为这些网页维护一个索引 • 对索引文件进行每秒上千次的搜索 • 提供高质量的搜索结果 • 以最小的成本运作 这将是一个巨大的挑战。
Crawler工作流程 1. 创建一个新的WebDb (admin db -create). 2. 将抓取起始URLs写入WebDB中 (inject). 3. 根据WebDB生成fetchlist并写入相应的 segment(generate). 4. 根据fetchlist中的URL抓取网页 (fetch). 5. 根据抓取网页更新WebDb (updatedb).
爬虫,Crawler Index是Crawler抓取的所有网页的索引,它 是通过对所有单个segment中的索引进行合并处 理所得的。Nutch利用Lucene技术进行索引,所 以Lucene中对索引进行操作的接口对Nutch中的 index同样有效。但是需要注意的是,Lucene中 的segment和Nutch中的不同,Lucene中的 segment是索引index的一部分,但是Nutch中的 segment只是WebDB中各个部分网页的内容和索 引,最后通过其生成的index跟这些segment已经 毫无关系了。
爬虫,Crawler Crawler的重点在两个方面,Crawler的工作流 程和涉及的数据文件的格式和含义。数据文件主要 包括三类,分别是web database,一系列的 segment加上index,三者的物理文件分别存储在 爬行结果目录下的db目录下webdb子文件夹内, segments文件夹和index文件夹。那么三者分别 存储的信息是什么目录: 1.crawdb,linkdb 是web link目录,存放url 及url的互联关 系,作为爬行与重新爬行的依据,页面默认30天过期。 2.segments 是主目录,存放抓回来的网页。页面内容有 bytes[]的raw content 和 parsed text的形式。nutch 以广度优先的原则来爬行,因此每爬完一轮会生成一个 segment目录。 3.index 是lucene的索引目录,是indexs里所有index合并 后的完整索引,注意索引文件只对页面内容进行索引,没 有进行存储,因此查询时要去访问segments目录才能获 得页面内容。
网络数据采集框架Nutch及其应用研究
![网络数据采集框架Nutch及其应用研究](https://img.taocdn.com/s3/m/54cb7e50a9114431b90d6c85ec3a87c241288a43.png)
网络数据采集框架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应用-安装与使用](https://img.taocdn.com/s3/m/8dfec4d4b9f3f90f76c61bfa.png)
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 使用总结
![Nutch 使用总结](https://img.taocdn.com/s3/m/9447ba02cc175527072208ba.png)
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"选项)。
网络数据采集框架Nutch及其应用研究
![网络数据采集框架Nutch及其应用研究](https://img.taocdn.com/s3/m/453cdbe077eeaeaad1f34693daef5ef7ba0d12a5.png)
网络数据采集框架Nutch及其应用研究
Nutch是一个开源的网络数据采集框架,可以用于抓取和分析互联网上的海量数据。
它由Apache软件基金会开发,采用Java语言开发,具有可扩展性、高效性、数据抽取能
力和灵活性的特点,被广泛应用于搜索技术、舆情分析、数据挖掘等领域。
Nutch的主要特点包括:
1.可扩展性:可以在不影响原有代码的情况下,通过插件机制增加新的模块,如网页
解析器、URL生成器、数据存储器等。
2.高效性:采用分布式架构,支持多个节点并行抓取和处理数据,同时还能有效地去重、排重等处理。
3.数据抽取能力:支持多种格式的数据抽取,如HTML、XML、JSON等,还支持自定义
的数据抽取规则。
4.灵活性:可根据需求进行配置,支持多种数据存储方式,如数据库、文件系统、HDFS等。
1.搜索引擎:Nutch可用作搜索引擎的爬虫和索引器,并可以与Lucene等搜索引擎库结合使用,为搜索结果提供更优质的数据。
2.舆情分析:Nutch可以帮助企业对社会舆情进行抓取和分析,及时了解公众对企业
的看法,帮助企业制定应对策略。
3.数据挖掘:Nutch可以用于从互联网上抓取数据,并进行提取、转换、加载等数据
挖掘操作,用于市场调研、热点分析等领域。
由于Nutch具有可扩展性和灵活性的特点,因此可以根据实际需求来进行定制化开发,满足不同场景下的应用需求。
同时,Nutch的开放源代码和强大的社区支持,为用户提供
了更多的定制化和优化的机会。
nutch的基本工作流程理解
![nutch的基本工作流程理解](https://img.taocdn.com/s3/m/c56f5019ff00bed5b9f31db2.png)
今天研究了Nutch,差不多已经好几个小时了,到现在还没有搞定,也这么晚了,先记录下来,明天继续吧。
一开始很多时间都浪费在了cygwin的安装上了,bs这个软件的开发者了,一个不伦不类的软件安装程序,安装的时候还要从网上下载东东。
不过最后终于装成功了,先下载到本地后,再安装的(建议下载站点中选 TW 的比较块)。
下面是我安装CYGWIN和NUTCH的过程,都块成功了,但最后卡在了用户查询界面,输入东西什么都查不出来,不知怎么回事。
NUTCH的大致原理如下:安装步骤参考了该文章一、环境:1.操作系统:windowsXp,windows2000+2.javaVM:java1.5.x,设置JAVA_HOME到环境变量3.cygwin,当然这个不是必需的,只是nutch提供的脚本只能在shell环境下使用,所以使用cygwin来虚拟shell命令。
4.nutch版本:0.85.tomcat:5.0二、cygwin的安装:cygwin的安装在Nutch在Windows中安装之细解一文中有较为详细的介绍,此处不再介绍安装步骤,只介绍安装后需要如何判断是否能够使用:在cygwin 的安装目录下,查找x:\cygwin\cygwin\bin\sh.exe,存在此命令即可使用。
cygwin在删除后会发现无法再次成功安装的问题,可以通过注册表内的查找功能,删除所有包含cygwin内容的键值即可。
三、nutch的安装和配置:1。
从/nutch/release/下载0.8或更高的版本,解压缩后,放置到cygwin的根目录下,如图:图中可以看到nutch目录在cygwin的根目录下。
2。
在nutch/bin下,建立urls目录,然后建立一个url.txt文件,在url.txt 文件内写入一个希望爬行的url,例如:,目录结构如图:3。
打开nutch\conf\crawl-urlfilter.txt文件,把字符替换为url.txt内的url的域名,其实更简单点,直接删除 这几个字就可以了,也就是说,只保存+^http://([a-z0-9]*\.)*这几个字就可以了,表示所有http的网站都同意爬行。
windows下nutch的安装
![windows下nutch的安装](https://img.taocdn.com/s3/m/c6fd2f4c2e3f5727a5e962ce.png)
Nutch入门1准备将中文的API文档配置到tomcat,可以通过http://127.0.0.1/api/访问到api的主页即可2下载,安装cygwin官方主页:/2.1 选择install from local directory2.2 安装到的目录2.3 选择已经下载的安装文件所在的目录2.4 选择全部安装(install)……2.5 需要等很长时间……2.6 设置环境变量NUTCH_JA V A_HOME C:\jdk3抓取3.1 配置抓取的起始网站地址3.2 修改nutch-site.xml解释:Nutch中的所有配置文件都放置在总目录下的conf子文件夹中,最基本的配置文件是conf/nutch-default.xml。
这个文件中定义了Nutch的所有必要设置以及一些默认值,它是不可以被修改的。
如果你想进行个性化设置,你需要在conf/nutch-site.xml进行设置,它会对默认设置进行屏蔽。
Nutch考虑了其可扩展性,你可以自定义插件plugins来定制自己的服务,一些plugins 存放于plugins子文件夹。
Nutch的网页解析与索引功能是通过插件形式进行实现的,例如,对HTML文件的解析与索引是通过HTML document parsing plugin, parse-html实现的。
所以你完全可以自定义各种解析插件然后对配置文件进行修改,然后你就可以抓取并索引各种类型的文件了。
3.3 配置crawl-urlfilter.txt解释如下:●Nutch 的爬虫有两种方式⏹爬行企业内部网(Intranet crawling:针对少数网站进行,用crawl 命令。
⏹爬行整个互联网:使用低层的inject, generate, fetch 和updatedb 命令,具有更强的可控制性。
●举例⏹+^http://([a-z0-9]*\.)*/⏹+^http://(\.*)*◆句点符号匹配所有字符,包括空格、Tab字符甚至换行符:◆IP地址中的句点字符必须进行转义处理(前面加上“\”),因为IP地址中的句点具有它本来的含义,而不是采用正则表达式语法中的特殊含义。
nutch+crawl代码解析
![nutch+crawl代码解析](https://img.taocdn.com/s3/m/db53921dfad6195f312ba6a2.png)
Nutch-0.9中,org.apache.nutch.crawl.Crawl类中提供了一个入口主函数main,通过接收键入的命令行,根据命令行指定的参数对Nutch进行配置,从而启动Nutch抓取程序,通过阅读org.apache.nutch.crawl.Crawl类的源代码来了解Nutch是如何根据接收的命令行进行配置及其启动的。
org.apache.nutch.crawl.Crawl类的主函数如下所示:// 应该知道,Nutch查找文件系统是基于Linux系统的机制的,所以提供启动的命令与Linux 的Shell命令很相似。
public static void main(String args[]) throws Exception {if (args.length < 1) { // 检查命令行参数是否合法,如果小于1个参数,则给出提示。
System.out.println("Usage: Crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN N]"); return;}Configuration conf = NutchConfiguration.create(); // 使用静态类NutchConfiguration创建一个org.apache.hadoop.conf.Configuration实例,可以在Hadoop的源代码中查看到该类的定义(读取hadoop-site.xml配置文件)conf.addDefaultResource("crawl-tool.xml"); // 读取并设置抓取工具的配置文件,可以在nutch-0.9\conf目录下找到crawl-tool.xml文件JobConf job = new NutchJob(conf); // 抓取任务配置实例的创建Path rootUrlDir = null; // 初始URLs文件所在的目录,使用Hadoop的org.apache.hadoop.fs.Path类创建目录Path dir = new Path("crawl-" + getDate()); // 设置默认抓取到网页的存放目录。
nutch_1.2
![nutch_1.2](https://img.taocdn.com/s3/m/ddc47dbdc77da26925c5b000.png)
Nutch实验报告1.1安装Nutch1.1.1实验环境Linux操作系统,采用的是VMWare虚拟机下的Ubuntu 10.10系统。
1.1.2安装的必要软件1.JDK,采用的是JDK1.6版本,此次实验的版本是jdk-6u24-linux-i586.bin。
/technetwork/java/javase/downloads/index.html2.Tomcat,采用的是apache-tomcat-7.0版本,此次实验的版本是apache-tomcat-7.0.11.tar.gz。
/3.Nutch, 采用的是apache-nutch-1.2版本,此次实验的版本是apache-nutch-1.2-bin.tar.gz。
/1.1.3软件的安装方法和安装过程1.安装JDK1)将下载好的jdk的bin文件放到虚拟机环境下,例如,可以放在/home/root2)到jdk的bin文件目录下,执行命令,安装jdk。
安装命令:[root@ubuntu:/home/root]#sh jdk-6u24-linux-i586.bin3)修改环境变量编辑~/.bashrc文件[root@ubuntu:~]# vi ~/.bashrc在最后加入如下配置export JA V A_HOME=/home/root/jdk1.6.0_24export JA V A_BIN=/home/root/jdk1.6.0_24/binexport PATH=$PATH:$JA V A_HOME/binexport CLASSPATH=.:$JA V A_HOME/lib/dt.jar:$JA V A_HOME/lib/tools.jar 注意:在网上看其他资料是配置:/etc/environment但在配置后重启,出现无法进入系统的状况。
4)查看jdk是否安装成功命令如下:[root@ubuntu:~]# java –version如果出现下列结果,jdk安装成功。
Nutch中文分词的研究和改进
![Nutch中文分词的研究和改进](https://img.taocdn.com/s3/m/aa5f4c8bec3a87c24028c465.png)
Nutch中文分词的研究和改进摘要:介绍了在Nutch1.0中加入Paoding's Knives中文分词的原因及实现方法。
通过实例测试,对结果进行分析和比较,说明了Paoding's Knives中文分词能够较好地满足实际的中文搜索需求。
关键词:Nutch;搜索引擎;中文分词;Paoding's Knives1 中文分词和Nutch中文分词的缺点中文分词是构建检索类系统需要重点考虑的一个因素,它直接影响着搜索结果的相关度排序和搜索的效率及准确程度。
分词的准确性对搜索引擎来说十分重要,但如果分词速度太慢,即使准确性再高,对于搜索引擎来说也是不可用的,因为搜索引擎需要处理数以亿计的网页,如果分词耗用的时间过长,会严重影响搜索引擎内容更新的速度。
因此对于搜索引擎来说,分词的准确性和速度,二者都需要达到很高的要求。
Nutch的分词对英文的切分比较完善,在中文分词上使用的是默认的单字切分,即每个字被认为是一个词。
这种以单个汉字索引方式来分词的方法效果不是很理想,不能满足中文搜索的实际需求。
因此我们需要新的分词器,来实现对中文搜索的良好支持。
目前的中文分词组件有Paoding's Knives、CJKAnalyzer、JE、ICTCLAS等,其中Paoding's Knives是一个开源的,使用Java开发的分词组件。
它具有高效和高扩展性等特点,采用基于不限制个数的词典文件对文章进行有效切分,能够对词汇分类定义,能够对未知的词汇进行合理解析,成为首选的中文分词开源组件。
2 Nutch中文分词的实现2.1 Nutch分词架构Nutch分词的最底层使用的是lucene的Analyzer抽象类,它位于org.apache.lucene.analysis包。
NutchAnalyzer继承了Analyzer类,是Nutch中扩展分析文本的扩展点,所有用于解析文本的插件都得实现这个扩展点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nutch实验过程与学习心得1.1安装Nutch1.1.1实验环境Linux操作系统,采用的是VMWare虚拟机下的Ubuntu 10.10系统。
1.1.2安装的必要软件1.JDK,本人采用的是JDK1.6版本,为了方便大家学习,给出软件的下载链接,在下载时,注意选择linux下的版本,不要选择windows的版本,此次实验下载的是jdk-6u13-linux-i586.bin。
/technetwork/java/javase/downloads/index.html2.Tomcat,采用的是apache-tomcat-6.0版本,此次实验选择的是apache-tomcat-6.0.32.tar.gz。
/3.Nutch, 采用的是apache-nutch-1.1版本,此次实验选择的是apache-nutch-1.1-bin.tar.gz。
/4.最后尽量采用较新的版本,否则,可能出现其他问题。
1.1.3软件的安装方法和安装过程1.安装JDK1)将下载好的jdk的bin文件放到虚拟机环境下,例如,可以放在/home目录下(虚拟机和主机之间的文件传递可以简单通过U盘或移动硬盘,当然还有其他很多种方法,可自行选择)。
2)到jdk的bin文件目录下,执行命令,安装jdk。
安装命令:[root@localhost -]#sh jdk-6u13-linux-i586.bin一直按Enter键,知道需要选择yes or no,选择也是即可。
(注意:如果对于linux不太熟悉,最简单的方法就是在操作界面中启动终端,应用程序->附件->终端,然后即可再次之下输入命令行了。
一般情况下,进入终端后的结果:andy是本人linux系统下用户名,每个人都不同。
先获取root权限,命令如下:andy@andy-virtual-machine:~$ sudo –sH并且需要输入password,输入的password是不会在终端中显示的,命令执行后的结果:此时,已获得root权限。
)3)修改环境变量,在etc/environment文件中修改,如果在用户界面中直接点开,用可能是只读形式,所以不能修改,需在命令行窗口打开。
首先,转到etc目录下,根据自己的情况,输入cd命令,例如,从当前目录andy转到etc目录下,命令如下:[root@andy-virtual-machine:/home/andy]# cd ../../etc打开environment文件,命令如下:[root@andy-virtual-machina:/etc]# gedit environment在文件environment中修改:在PATH 中追加路径配置,添加CLASSPAHT和JA V A_HOME配置,根据自己jdk的路径配置,这里以我自己的路径配置为例。
PATH=“...:/home/andy/jdk1.6.0_13/bin”CLASSPATH=.:/home/andy/jdk1.6.0_13/libJA V A_HOME=/home/andy/ jdk1.6.0_13 /4)由于ubuntu可能会有默认的jdk,所以要将默认的jdk改成已经安装好的jdk。
命令如下:[root@andy-virtual-machine:~]# update-alternatives --install /usr/bin/javajava /home/andy/ jdk1.6.0_13/bin/java 300[root@andy-virtual-machine:~]# update-altenatives –install /usr/bin/javajava /home/andy/ jdk1.6.0_13/bin/javac 300再将安装的jdk加入到java选单中。
命令如下:[root@andy-virtual-machine:~]# update-alternatives --config java5)查看jdk是否安装成功命令如下:[root@andy-virtual-machine:~]# java –version如果出现下列结果,jdk安装成功。
2.安装nutch1)将下载好的文件apache-nutch-1.1-bin.tar.gz放到虚拟机环境下,在apache-nutch-1.1-bin.tar.gz文件目录下解压,本例中文件放在/home/andy目录下。
命令如下:[root@andy-virtual-machina:/home/andy]# tar zxvf apache-nutch-1.1- bin.tar.gz2)为了方便以后命令行的输入,可以将安装好的文件夹更改名称,这样安装好的文件夹的名称就是nutch了。
命令如下:[root@andy-virtual-machina:/home/andy]# mv 原文件名称nutch3)Nutch命令的测试,nutch文件夹目录下。
命令如下:[root@andy-virtual-machina:/home/andy/nutch]# bin/nutch3.安装tomcat1)将下载好的文件apache-tomcat-6.0.32.tar.gz放到虚拟机环境下,在apache-tomcat-6.0.32.tar.gz文件目录下解压,本例中文件放在/home/andy目录下。
命令如下:[root@andy-virtual-machina:/home/andy]# tar zvxf apache-tomcat-6.0.32.tar.gz2)更改安装好的文件夹名称。
命令如下:[root@andy-virtual-machina:/home/andy/]# mv 原文件名称tomcat3)将nutch自带的.war文件拷贝到tomcat的webapps文件夹下。
命令如下:[root@andy-virtual-machina:/home/andy/]# cd tomcat/webapps[root@andy-virtual-machina:~]#rm –rf ROOT*[root@andy-virtual-machina:~webapps]# cp ../../nutch/nutch*.warROOT.war4)启动和关闭tomcat,在bin目录下,start catalina.sh。
命令如下:[root@andy-virtual-machina:/home/andy/tomcat/bin]# catalina.sh start[root@andy-virtual-machina:/home/andy/tomcat/bin]# catalina.sh stop5)在浏览器中,打开http://localhost:8080(其中8080是tomcat的默认端口号)。
1.2Nutch 爬行实验1.2.1简单的爬行实验过程1.对nutch进行配置1)在nutch目录下进行,增加抓取页面,在本次实验中采用的是。
首先,增加一个url文件,在这里先增加一个目录urls,然后再在该目录下添加一个文件,文件名为sohu,将要抓取的页面写入其中。
命令如下:[root@andy-virtual-machina:/home/andy/nutch]# mkdir urls[root@andy-virtual-machina:/home/andy/nutch]# echo http://www.sohu.com/>>urls/sohu也可以使用gedit命令,添加文件。
2)改写nutch/conf目录下的crawl-urlfilter.txt文件,设定抓取信息。
命令如下:[root@andy-virtual-machina:/home/andy/nutch]# gedit conf/crawl-urlfilter.txt修改为# accept hosts in +^http://([a-z0-9]*\.)*/3)改写nutch/conf目录下的nutch-default.xml文件,设定搜索目录,例如,搜索目录名称定为crawl,可以自定义名称,但是要与下面的tomcat 设置相同。
命令如下:[root@andy-virtual-machina:/home/andy/nutch]# gedit conf/nutch-default .xml修改文件中的搜索目录。
<property><name>searcher.dir</name><value>crawl</value></property>2.对tomcat进行配置1)设定搜索目录,要与nutch-default.xml中设定的相同,此时要在tomcat目录下进行设置。
命令如下:[root@andy-virtual-machina:/home/andy/tomcat]# gedit webapps/RO OT/WEB-INF/classes/nutch-site.xml添加或修改部分代码,如下:<configuration><property><name>searcher.dir</name><value>/home/andy/nutch/crawl<value></property></configuration>3.开始抓取网站,以为例。
1)爬行命令,在nutch文件目录下,进行。
命令如下:[root@andy-virtual-machina:/home/andy/nutch]# bin/nutch crawl urls -dir crawl -depth 2 -threads 4 -topN 50 >& crawl.logUrls表示存放网址的文件目录;-dir crawl表示抓取后结果的存放记录;-depth表示爬行的深度;-threads表示并发进程;-topN表示每层上抓取的最大页面数。
1.3Nutch爬行实验结果1.3.1实验结果1.在crawl.log中记录如下。
crawl started in: crawl.demo3rootUrlDir = urlsthreads = 4depth = 2indexer=lucenetopN = 50Injector: startingInjector: crawlDb: crawl.demo3/crawldbInjector: urlDir: urlsInjector: Converting injected urls to crawl db entries.Injector: Merging injected urls into crawl db.Injector: doneGenerator: Selecting best-scoring urls due for fetch.Generator: startingGenerator: filtering: trueGenerator: normalizing: trueGenerator: topN: 50Generator: jobtracker is 'local', generating exactly one partition.Generator: Partitioning selected urls for politeness.Generator: segment: crawl.demo3/segments/20110311092949Generator: done.Fetcher: Your '' value should be listed first in'http.robots.agents' property.Fetcher: startingFetcher: segment: crawl.demo3/segments/20110311092949Fetcher: threads: 4QueueFeeder finished: total 1 records + hit by time limit :0fetching /-finishing thread FetcherThread, activeThreads=2-finishing thread FetcherThread, activeThreads=1-finishing thread FetcherThread, activeThreads=1-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-finishing thread FetcherThread, activeThreads=0-activeThreads=0, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=0Fetcher: doneCrawlDb update: startingCrawlDb update: db: crawl.demo3/crawldbCrawlDb update: segments: [crawl.demo3/segments/20110311092949] CrawlDb update: additions allowed: trueCrawlDb update: URL normalizing: trueCrawlDb update: URL filtering: trueCrawlDb update: Merging segment data into db.CrawlDb update: doneGenerator: Selecting best-scoring urls due for fetch.Generator: startingGenerator: filtering: trueGenerator: normalizing: trueGenerator: topN: 50Generator: jobtracker is 'local', generating exactly one partition. Generator: Partitioning selected urls for politeness.Generator: segment: crawl.demo3/segments/20110311093014 Generator: done.Fetcher: Your '' value should be listed first in 'http.robots.agents' property.Fetcher: startingFetcher: segment: crawl.demo3/segments/20110311093014Fetcher: threads: 4QueueFeeder finished: total 50 records + hit by time limit :0fetching /fetching/bill/s2010/jiedong/mkt/neitui/4501050708.swf fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=46fetching /bill/s2011/lilixing/dianxin/4501050211.swf Error parsing: /bill/s2010/jiedong/mkt/neitui/4501050708.swf: failed(2,0): Can't retrieve Tika parser for mime-type application/x-shockwave-flashfetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=44Error parsing: /bill/s2011/lilixing/dianxin/4501050211.swf:failed(2,0): Can't retrieve Tika parser for mime-type application/x-shockwave-flashfetching /fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=41fetching /fetching /videoshow/33533.html fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=37 fetching /fetching /fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=33 fetching /fetching /fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=29 fetching /fetching /fetching /fetching /fetching /20110303/n279634880.shtml -activeThreads=4, spinWaiting=0, fetchQueues.totalSize=24 fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=22 fetching /fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=19 fetching /fetching /passport/pp18030_31.js-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=17 fetching /fetching /mobile.shtml-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=15 fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=13 fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=12 -activeThreads=4, spinWaiting=0, fetchQueues.totalSize=12 -activeThreads=4, spinWaiting=0, fetchQueues.totalSize=12 fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=11 fetching /fetching /fetching /fetching /fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=6fetching /fetching /20110302/n279605838.shtml fetching /));sohuFlash1.write(fetching /passport/pi18030.201011300952.js fetching /-activeThreads=4, spinWaiting=0, fetchQueues.totalSize=1* queue: maxThreads = 1inProgress = 0crawlDelay = 1000minCrawlDelay = 0nextFetchTime = 1299807018652now = 12998070368050. /fetching /-finishing thread FetcherThread, activeThreads=3-finishing thread FetcherThread, activeThreads=2-activeThreads=2, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=2, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=2, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=2, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=2, spinWaiting=0, fetchQueues.totalSize=0-finishing thread FetcherThread, activeThreads=1-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=1, spinWaiting=0, fetchQueues.totalSize=0-finishing thread FetcherThread, activeThreads=0-activeThreads=0, spinWaiting=0, fetchQueues.totalSize=0-activeThreads=0Fetcher: doneCrawlDb update: startingCrawlDb update: db: crawl.demo3/crawldbCrawlDb update: segments: [crawl.demo3/segments/20110311093014] CrawlDb update: additions allowed: trueCrawlDb update: URL normalizing: trueCrawlDb update: URL filtering: trueCrawlDb update: Merging segment data into db.CrawlDb update: doneLinkDb: startingLinkDb: linkdb: crawl.demo3/linkdbLinkDb: URL normalize: trueLinkDb: URL filter: trueLinkDb: adding segment: file:/home/andy/nutch/crawl.demo3/segments/20110311093014LinkDb: adding segment: file:/home/andy/nutch/crawl.demo3/segments/20110311092949LinkDb: doneIndexer: startingIndexer: doneDedup: startingDedup: adding indexes in: crawl.demo3/indexesDedup: donemerging indexes to: crawl.demo3/indexAdding file:/home/andy/nutch/crawl.demo3/indexes/part-00000done mergingcrawl finished: crawl.demo32.浏览器测试结果。