首页 > 代码库 > nutch从搜索引擎到网络爬虫
nutch从搜索引擎到网络爬虫
人物介绍
姓名:DougCutting
个人名望:开发出开源全文检索引擎工具包Lucene。
个人简介/主要荣誉:除了 Lucene,还开发了著名的网络爬虫工具 Nutch,分布式系统基础架构Hadoop,这些大师级作品都是开源的。目前任职 Apache 软件基金会主席。
网络上对 Doug Cutting 的评价:“他开发出卓越超群的全文检索引擎工具包(Lucene/Solr)以及为世界打开了一扇通往大数据的大门。”“开源的Lucene 以及 Hadoop 为全球创造了无数的财富以及就业机会。”
拓展:ITWorld:2014年全球最杰出的14位编程天才
2014年7月29日, ITWorld 整理全球最杰出的 14 位程序员,一起来看下让我们膜拜的这些大神都有哪些?(排名不分先后)
地址:http://www.199it.com/archives/260767.html
从搜索引擎到网络爬虫
一、Nutch相关介绍
1、简介:
Nutch是Apache旗下Java开源项目,最初是一个搜索引擎,现在是一个网络爬虫。
(1)、搜索引擎中国排名:
(2)、网络爬虫
又称网页蜘蛛,是一种按照一定的规则,自动抓取万维网信息的程序或者脚本。
2、Nutch设计初衷
开源、公平:商业搜索引擎不开源,搜索结果不是纯粹的根据网页本身的价值进行排序,而是用众多的商业利益考虑。有的搜索引擎允许竞价排名,比如百度,这样有的搜索结果不全是和站点内容相关。
Nutch是开放源代码,因此任何人都可以查看它的排序算法是如何工作的。Nutch对学术搜索和政府类站点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。
自己搜索引擎:如果你不喜欢其它搜索引擎展现结果的方式,那就用Nutch写自己的搜索引擎吧。Nutch非常灵活,可以被很好的客户定制并集成到你的应用程序中。使用Nutch的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。
我们并没有google 的源代码,因此学习搜索引擎Nutch 是个不错的选择。了解一个大型分布式的搜索引擎如何工作是一件让人很受益的事情。
3、Nutch发展历程
Nutch诞生于2002年8月,是apache旗下的一个用Java实现的开源索引引擎项目,子Nutch1.2版本之后,Nutch已经从搜索引擎演化为网络爬虫,接着Nutch进一步演化为两大分支版本:1.X和2.X,最大区别在于2.X对底层的数据存储进行了抽象以支持各种底层存储技术。
在Nutch的进化过程中,产生了Hadoop、Tika和Gora三个Java开源项目。如今三个项目都发展迅速,极其火爆,尤其是Hadoop,已成为大规模数据处理的事实上的标准。
Tika使用多种现有的开源内容解析项目来实现从多种格式的文件中提取元数据和结构化文本,Gora支持把大数据持久化到多种存储实现。
-------------------------------时间表----------------------------------
2002年8月由Doug Cutting发起,托管于Sourceforge,之后发布了0.4、
0.5、0.6三个版本
2004年9月Oregon State University(俄勒冈州立大学)采用Nutch
2004年9月Creative Commons(知识共享)推出基于Nutch的搜索服务
2005年1月加入Apache的孵化器
2005年6月孵化结束成为Lucene的子项目
2005年8月发布版本0.7( Apache Lucene sub-project)
2005年10月发布版本0.7.1
2006年3月发布版本0.7.2
2006年7月发布版本0.8(全新的架构,基于Hadoop0.4 ,Hadoop诞生)
2006年9月发布版本0.8.1
2007年4月发布版本0.9
2009年3月发布版本1.0(Tika诞生,0.1-incubating)
2010年4月Nutch成为Apache顶级项目
2010年6月发布版本1.1
2010年9月发布版本1.2
2011年6月发布版本1.3(从搜索引擎到网络爬虫)
2011年11月发布版本1.4
2012年6月发布版本1.5
2012年7月发布版本2.0( 2.X Gora诞生,table-basedarchitecture )
2012年7月发布版本1.5.1
2012年8月Nutch诞生十周年
2012年10月发布版本2.1( 2.X开始支持elasticsearch )
2012年12月发布版本1.6
2013年6月发布版本2.2(crawler-commons 诞生)
2013年6月发布版本1.7(crawler-commons 诞生)
2013年7月发布版本2.2.1
-----------------------------------------------------------------------
4、为什么要学习Nutch
搜索技术是信息时代的必备技术之一,没有搜索功能的软件是无法想象的,而搜索引擎是搜索技术的集大成者。通过Nutch的学习,可以对百度、谷歌这样的搜索巨头的内部机制有所了解,并能根据自己的需要打造适合自己的搜索引擎,当然,也可以把搜索技术应用到几乎所有的软件开发中。
5、Nutch的设计目标
每个月抓取几十亿网页
为这些网页维护一个索引
对索引文件执行每秒上千次的搜索
提供高质量的搜索结果
以最小的成本运作
6、Nutch的三大分支版本
上文讲了Nutch1.X和Nutch2.X的区别,主要是2.X对底层数据存储进行了抽象,以支持各种底层存储技术。
1.X系列可用于生产环境、2.X系列还不成熟
这里可以对Nutch整体分为3大分支版本:
Nutch1.2是一个完整的搜索引擎
Nutch1.7是一个基于HDFS的网络爬虫
Nutch2.2.1是一个基于Gora的网络爬虫
7、Nutch的整体架构
插件机制、数据抓取、数据解析、链接分析、建立索引、分布式搜索等。
插件机制:对于一个搜索引擎来说,最终可能由成百上千台服务器组成。然而,初创公司最初可能只有几台机器作为尝试,随着公司的发展逐步增加机器,因此,线性可扩展的分布式存储与分布式计算是至关重要的。
Hadoop诞生:Nutch参考了Google的两篇论文:MapReduce计算模型以及GFS存储模型,并做了实现,后来把这两大部分剥离出来形成独立的开源项目Hadoop。由此可知,Hadoop诞生于Nutch,核心由分布式计算和分布式存储组成,是MapReduce和GFS的Java开源实现。
Gora:Nutch使用HDFS作为存储实现一直持续了很多年,然而使用HDFS有很多限制,后来考虑对存储层进行抽象,剥离并形成了新的开源项目Gora,以支持多种存储技术,包括RDBMS和NoSQL.
Tika:对于搜索引擎来说,需要抓取各种各样的文件,解析这些不同格式的文件是一个难题,为了简化设计,也为了重用,于是诞生了Tika,一个专门为内容分析而诞生的工具箱。
8、Nutch的应用领域
站内搜索引擎、全网搜索引擎、垂直搜索引擎、数据采集。
9、Nutch的不足
所有文件都是只能写一次
批量处理架构导致无实时性
没有用户管理图形界面,只有命令行接口
Web2.0的普及导致的js分析和身份认证等问题
10、Nutch与Hadoop
Hadoop是大数据的核心技术之一,而Nutch集Hadoop之大成,是Hadoop的源头。学习Hadoop没有数据怎么办?用Nutch抓!学了Hadoop的Map Reduce以及HDFS,没有实用案例怎么办?学习Nutch!Nutch的很多代码是用Map Reduce和HDFS写的,哪里还能找到比Nutch更好的Hadoop应用案例呢?
二、Nutch的下载
1、Nutch所有版本下载地址:
http://archive.apache.org/dist/nutch/
2、Nutch官网下载地址:
网址:http://nutch.apache.org/downloads.html
进入显示如下最新版本: 2.2.1
注意: bin是运行包、src是源码包、tar是Linux包。
Linux虚拟机安装版本可以选择后缀:bin.tar.gz (如:apache-nutch-1.9. bin.tar.gz)
nutch从搜索引擎到网络爬虫