人物介绍


姓名: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.X2.X,最大区别在于2.X对底层数据存储进行了抽象支持各种底层存储技术

在Nutch的进化过程中,产生了HadoopTikaGora三个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,核心分布式计算分布式存储组成,是MapReduceGFSJava开源实现

Gora:Nutch使用HDFS作为存储实现一直持续了很多年,然而使用HDFS有很多限制,后来考虑对存储层进行抽象,剥离并形成了新的开源项目Gora,以支持多种存储技术,包括RDBMSNoSQL.

Tika:对于搜索引擎来说,需要抓取各种各样的文件,解析这些不同格式的文件是一个难题,为了简化设计,也为了重用,于是诞生了Tika,一个专门为内容分析而诞生的工具箱。

8、Nutch的应用领域

站内搜索引擎、全网搜索引擎、垂直搜索引擎、数据采集

9、Nutch的不足

所有文件都是只能写一次

    批量处理架构导致无实时性

    没有用户管理图形界面,只有命令行接口

Web2.0的普及导致的js分析和身份认证等问题

10、Nutch与Hadoop

Hadoop是大数据的核心技术之一,而NutchHadoop之大成,是Hadoop的源头。学习Hadoop没有数据怎么办?用Nutch抓!学了Hadoop的Map
Reduce以及HDFS,没有实用案例怎么办?学习Nutch!Nutch的很多代码是用Map ReduceHDFS写的,哪里还能找到比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从搜索引擎到网络爬虫的更多相关文章

  1. Tomcat和搜索引擎网络爬虫的攻防

    不知道广大程序员朋友们注意到一个现象么?使用百度是无法搜索到淘宝网的网页.为什么会造成这种现象?这就要从网络爬虫说起了. 咱们程序员假如自己搭设个人网站,在上面分享少量自己的技术文章,面临的一个重要问 ...

  2. Python网络爬虫与如何爬取段子的项目实例

    一.网络爬虫 Python爬虫开发工程师,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页 ...

  3. 一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎, ...

  4. 【架构】基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎, ...

  5. 基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

    基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎 网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并 ...

  6. Apache Nutch v2.3 发布,Java实现的网络爬虫

    http://www.oschina.net/news/59287/apache-nutch-2-3 Apache Nutch v2.3已经发布了,建议所有使用2.X系列的用户和开发人员升级到这个版本 ...

  7. [Search Engine] 搜索引擎技术之网络爬虫

    随着互联网的大力发展,互联网称为信息的主要载体,而如何在互联网中搜集信息是互联网领域面临的一大挑战.网络爬虫技术是什么?其实网络爬虫技术就是指的网络数据的抓取,因为在网络中抓取数据是具有关联性的抓取, ...

  8. 【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

    详细可参考 (1)书箱:<这就是搜索引擎><自己动手写网络爬虫><解密搜索引擎打桩实践> (2)[搜索引擎基础知识1]搜索引擎的技术架构 (3)[搜索引擎基础知识2 ...

  9. 网络爬虫与搜索引擎优化(SEO)

    爬虫及爬行方式 爬虫有很多名字,比如web机器人.spider等,它是一种可以在无需人类干预的情况下自动进行一系列web事务处理的软件程序.web爬虫是一种机器人,它们会递归地对各种信息性的web站点 ...

随机推荐

  1. 虚拟机vmware centos7 扩展磁盘空间

    0.思路 创建一个新的逻辑分区,将新的逻辑分区格式化ext3(或其他类型)的文件系统,mount到磁盘空间不够的文件系统,就跟原来的分区/文件系统一样的使用 1.准备 1.1 注意使用VMware自带 ...

  2. Scrapy-Redis分布式策略

    Scrapy-Redis分布式策略 原理图: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Sla ...

  3. UI设计教程:如何在设计中运用颜色

    灰度优先 我们习惯在设计阶段的早期就开始调整颜色和色调.但是,当你意识到自己花了3个小时来调整主色调的时候,你发现这种行为毫无帮助.虽然把玩颜色很有吸引力,但是你应该避免在设计初期进行这种行为. 相反 ...

  4. 摹客iDoc201901-2新功能点评

    2019才刚刚开始,摹客团队就已经蓄势待发.马不停蹄地给大家带来了又一份惊喜.实话说,这次小摹都忍不住要点个赞!下面就赶紧带大家看看iDoc又更新了哪些新功能: 1.标注和评论融合.协作更高效 iDo ...

  5. 用php脚本比较MySQL两个数据库的结构差异

    define('DATABASE1', 'mysql://root:password@127.0.0.1/db1'); $dbi1 = new DbMysql; $dbi1->dbh = DAT ...

  6. Python : locals and globals

    Python有两个内置的函数,locals() 和globals(),它们提供了基于字典的访问局部和全局变量的方式.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字 ...

  7. iOS中四种实例变量的范围类型@private@protected@public@package

    文档上记录是这样的 The Scope of Instance Variables Toenforce the ability of an object to hide its data, the c ...

  8. NOIP2017普及组T2题解

    还是神奇的链接 上面依然是题目. 这道题依然很简单,比起2015年的普及组t2好像还是更水一些. 不过这道题能讲的比第一题多. 我们一起来看一下吧! 这一题,我们首先将书的编号全部读入,存在一个数组里 ...

  9. python之面向对象篇6

    一.继承与派生 什么是继承 继承一种新建类的方式,新建的类称为子类或者派生类,被继承的类称为父类或基类或超类 子类会遗传父类的一系列属性 python支持多继承 注意: 在python3中,如果没有显 ...

  10. 55.UIbutton点击切换颜色

    #import "ViewController.h" #define width_w     [UIScreen mainScreen].bounds.size.width #de ...