nutch_
- 格式:doc
- 大小:239.50 KB
- 文档页数:12
细细品味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是个不错的选择。
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框架概述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的配置文件主要有三类: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分布式主题主题网络爬虫的研究施磊磊,施化吉,朱玉婷(江苏大学计算机科学与通信工程学院,江苏镇江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 是一个基于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) 函数完成的。
第十三讲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的基本原理和架构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及其应用研究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实验过程与学习心得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.浏览器测试结果。