今天的技术分享来自川神,爆棚。
分享主题:Nutch
分享人:尚川
课程背景:Nutch诞生于2002年8月,是Apache旗下的一个用Java实现的开源搜索引擎项目,自Nutch1.2版本之后,Nutch已经从搜索引擎演化为网络爬虫,接着Nutch进一步演化为两大分支版本:1.X和2.X,最大的区别在于2.X对底层的数据存储进行了抽象以支持各种底层存储技术。在Nutch的进化过程中,产生了Hadoop、Tika和Gora三个Java开源项目。如今这三个项目都发展迅速,极其火爆,尤其是Hadoop,其已成为大规模数据处理的事实上的标准。Tika使用多种现有的开源内容解析项目来实现从多种格式的文件中提取元数据和结构化文本,Gora支持把大数据持久化到多种存储实现。
课程大纲:
1、Nutch是什么?
Nutch是Apache旗下的Java开源项目,最初是一个搜索引擎,现在是一个网络爬虫。
2、Nutch的设计初衷?
商业搜索引擎不开源,搜索结果不纯粹是根据网页本身的价值进行排序,而是有众多商业利益考虑。Nutch提供了开源的解决方案,帮助人们很容易地建立一个搜索引擎,为用户提供优质的搜索结果,并能从一台机器扩展到成百上千台。
3、为什么要学习Nutch?
搜索技术是信息时代的必备技术之一,没有搜索功能的软件是无法想象的,而搜索引擎是搜索技术的集大成者。通过Nutch的学习,可以对百度、谷歌这样的搜索巨头的内部机制有所了解,并能根据自己的需要打造适合自己的搜索引擎,当然,也可以把搜索技术应用到几乎所有的软件开发中
4、Nutch的设计目标 ?
- 每个月抓取几十亿网页
- 为这些网页维护一个索引
- 对索引文件执行每秒上千次的搜索
- 提供高质量的搜索结果
- 以最小的成本运作
5、Nutch的发展历程?
- 11年发展历程,3大分支版本
- 强调重用,诞生了Java开源项目Hadoop、Tika、Gora
- 不重新发明轮子,使用了大量第三方开源项目
6、Nutch的整体架构?
插件机制、数据抓取、数据解析、链接分析、建立索引、分布式搜索等。
对于一个搜索引擎来说,最终可能由成百上千台服务器组成,然而,初创公司最初可能只有几台机器作为尝试,随着公司的发展逐步增加机器,因此,线性可扩展的分布式存储与分布式计算是至关重要的。
Nutch参考了Google的两篇论文:MapReduce计算模型以及GFS存储模型,并做了实现,后来把这两大部分剥离出来形成独立的开源项目Hadoop。由此可知,Hadoop诞生于Nutch,核心由分布式计算和分布式存储组成,是MapReduce和GFS的JAVA开源实现。
Nutch使用HDFS作为存储实现一直持续了很多年,然而使用HDFS有许多限制,后来考虑对存储层进行抽象,剥离并形成了新的开源项目Gora,以支持多种存储技术,包括RDBMS和NoSQL。
对于搜索引擎来说,需要抓取各种各样的文件,解析这些不同格式的文件是一个难题,为了简化设计,也为了重用,于是诞生了Tika,一个专为内容分析而诞生的工具箱。
7、Nutch 3大分支版本?
- Nutch1.2是一个完整的搜索引擎
- Nutch1.7是一个基于HDFS的网络爬虫
- Nutch2.2.1是一个基于Gora的网络爬虫
- 1.X系列可用于生产环境、2.X系列还不成熟
8、Nutch的应用领域?
站内搜索引擎、全网搜索引擎、垂直搜索引擎、数据采集
9、nutch的使用?
一些具体的实践方法及演示
发表评论