`

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

阅读更多

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

 

搜索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩、高可用。对大量信息的索引与搜索都可以在近乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据,同时提供了全方面的选项,可以对该引擎的几乎每个方面进行定制。支持RESTful的API,可以使用JSON通过HTTP调用它的各种功能,包括搜索、分析与监控。此外,还为Java、PHP、Perl、Python以及Ruby等各种语言提供了原生的客户端类库。

 

网络爬虫通过将抓取到的数据进行结构化提取之后提交给搜索引擎进行索引,以供查询分析使用。由于搜索引擎的设计目标在于近乎实时的复杂的交互式查询,所以搜索引擎并不保存索引网页的原始内容,因此,需要一个近乎实时的分布式数据库来存储网页的原始内容。

 

分布式数据库架构在Hbase+Hadoop之上,是一个典型的分布式在线实时随机读写架构。极强的水平伸缩性,支持数十亿的行和数百万的列,能够对网络爬虫提交的数据进行实时写入,并能配合搜索引擎,根据搜索结果实时获取数据。

 

网络爬虫、分布式数据库、搜索引擎均运行在普通商业硬件构成的集群上。集群采用分布式架构,能扩展到成千上万台机器,具有容错机制,部分机器节点发生故障不会造成数据丢失也不会导致计算任务失败。不但高可用,当节点发生故障时能迅速进行故障转移,而且高伸缩,只需要简单地增加机器就能水平线性伸缩、提升数据存储容量和计算速度。

 

网络爬虫、分布式数据库、搜索引擎之间的关系:

 

1、网络爬虫将抓取到的HTML页面解析完成之后,把解析出的数据加入缓冲区队列,由其他两个线程负责处理数据,一个线程负责将数据保存到分布式数据库,一个线程负责将数据提交到搜索引擎进行索引。

 

2、搜索引擎处理用户的搜索条件,并将搜索结果返回给用户,如果用户查看网页快照,则从分布式数据库中获取网页的原始内容。

 

整体架构如下图所示:

 


 

爬虫集群、分布式数据库集群、搜索引擎集群在物理部署上,可以部署到同一个硬件集群上,也可以分开部署,形成1-3个硬件集群。

 

网络爬虫集群有一个专门的网络爬虫配置管理系统来负责爬虫的配置和管理,如下图所示:

 

 

搜索引擎通过分片(shard)和副本(replica)实现了高性能、高伸缩和高可用。分片技术为大规模并行索引和搜索提供了支持,极大地提高了索引和搜索的性能,极大地提高了水平扩展能力;副本技术为数据提供冗余,部分机器故障不影响系统的正常使用,保证了系统的持续高可用。

 

有2个分片和3份副本的索引结构如下所示:

 

 

 

 

一个完整的索引被切分为0和1两个独立部分,每一部分都有2个副本,即下面的灰色部分。

 

在生产环境中,随着数据规模的增大,只需简单地增加硬件机器节点即可,搜索引擎会自动地调整分片数以适应硬件的增加,当部分节点退役的时候,搜索引擎也会自动调整分片数以适应硬件的减少,同时可以根据硬件的可靠性水平及存储容量的变化随时更改副本数,这一切都是动态的,不需要重启集群,这也是高可用的重要保障。

 

 

  • 大小: 25.8 KB
  • 大小: 22.6 KB
  • 大小: 16.8 KB
分享到:
评论
1 楼 fallstar2000 2015-01-11  
你好,我们打算做一个商业应用的nutch爬虫项目,请教下是使用1.x的版本 还是2.x 的版本好一些?

相关推荐

    搜索引擎nutch配置

    Nutch是一款开源的网络爬虫软件,主要用于收集、索引和搜索互联网上的数据。它在大数据领域中占有重要地位,尤其对于构建自定义搜索引擎的项目非常实用。Nutch的设计理念是模块化,允许用户根据需求进行定制和扩展。...

    分布式搜索引擎nutch开发

    Nutch是一款开源的、基于Java实现的全文搜索引擎,它主要用于构建大规模的网络爬虫系统,并提供了对抓取的网页进行索引和搜索的功能。Nutch与Hadoop紧密集成,能够充分利用分布式计算的优势,处理海量数据。在本篇中...

    Nutch入门教程 高清 带书签

    Nutch是Apache软件基金会开发的一款开源搜索引擎项目,主要用于网络数据抓取和索引。这个“Nutch入门教程 高清 带书签”的资源,很显然是为了帮助初学者快速理解并掌握Nutch的基本操作和核心概念。下面,我们将深入...

    nutch使用&Nutch;入门教程

    Nutch可以与Solr或Elasticsearch等搜索引擎集成,实现快速高效的搜索功能。此外,还可以与HBase等NoSQL数据库配合,用于大规模数据存储和检索。 七、实战教程 “Nutch使用.pdf”和“Nutch入门教程.pdf”这两份文档...

    apache-nutch-1.4

    - **Solr和Elasticsearch**:Nutch可以与Apache Solr或Elasticsearch集成,提供高性能的搜索功能。 - **HBase**:Nutch也可与HBase结合,用于存储和检索大规模数据。 7. **社区支持** - **文档**:Nutch项目提供...

    apache-nutch的源码

    8. **集成其他系统**:Nutch不仅可以与Solr或Elasticsearch等搜索引擎集成,也可以与其他数据分析工具如HBase、Spark等配合使用,实现更复杂的业务需求。 9. **学习资源**:Apache Nutch的官方文档、社区论坛以及...

    Apache Nutch v2.4.zip

    Nutch 可以作为数据分析系统的一部分,与其他工具(如 HBase、Solr 或 Elasticsearch)结合,构建完整的数据获取和检索平台。 总结来说,Apache Nutch v2.4 提供了一个强大且灵活的框架,适合于学习网络爬虫技术、...

    apach-nutch-1.9-bin.tar.gz

    6. **Nutch 与其他组件集成**:尽管Nutch 1.9不直接支持HBase,但它可以与Solr或Elasticsearch等搜索服务器集成,提供更高级的搜索功能。你还可以通过Hadoop MapReduce进一步扩展Nutch的功能。 7. **优化与监控**:...

    apache-nutch-2.1

    Nutch 不仅可以抓取网页,还可以通过 Solr 或 Elasticsearch 等搜索服务器提供搜索服务,让用户能够基于抓取的数据进行查询。 9. **社区支持**: Apache Nutch 有着活跃的社区,用户可以在邮件列表、论坛等平台上...

    test(nutch)

    在实际应用中,Nutch通常与其他工具和框架集成,例如与HBase用于存储原始网页,与Solr或Elasticsearch用于提供搜索服务,以及与Gora或Avro用于数据持久化。 【压缩包子文件的文件名称列表】:尽管列表中只有一个名...

    ElasticSearch笔记

    Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,主要设计用于实时处理大量数据,提供快速、近实时的搜索和分析能力。它的核心构建基于Lucene,一个强大的Java库,专注于信息检索和全文搜索。然而,Elastic...

    大数据采集技术-大数据采集技术概述.pptx

    数据分析则可以借助于工具如Mllib(Spark的机器学习库)、Hive(基于Hadoop的数据仓库工具)以及Elasticsearch(实时全文搜索和分析引擎)等。 大数据采集技术的应用广泛,包括但不限于: - **商业智能**:帮助...

Global site tag (gtag.js) - Google Analytics