當前位置:編程學習大全網 - 行動軟體 - nutch和elasticsearch的區別

nutch和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個副本,即下面的灰色部分。

在 生產環境中,隨著數據規模的增大,只需簡單地增加硬件機器節點即可,搜索引擎會自動地調整分片數以適應硬件的增加,當部分節點退役的時候,搜索引擎也會自 動調整分片數以適應硬件的減少,同時可以根據硬件的可靠性水平及存儲容量的變化隨時更改副本數,這壹切都是動態的,不需要重啟集群,這也是高可用的重要保 障。

  • 上一篇:西南石油大學兩個校區區別
  • 下一篇:推理要在晚餐後的SP總***有多少部每部多少集
  • copyright 2024編程學習大全網