Lucene是大家用的最多的开源搜索引擎。本文不探讨Lucene如何实时更新(http://issues.apache.org/jira/browse/LUCENE-1313),和如何修改Lucene评分机制,添加如PageRank评分因子,本文只讨论分布式的Lucene。
说到Lucene一般都会提到Nutch,Hadoop最早是Doung Cutting为了Nutch的crawler和indexer所开发的做为nutch的两个package。Hadoop在Nutch中的作用就是抓取页面和建立索引。其抓取和建索引详见页面。因为Hadoop的seek能力限制,Nutch的分布式搜索使用手动配置的机制,缺少管理索引能力和服务器的机制。具体步骤:在webserver中修改search-servers.txt把搜索服务的服务器地址和服务端口添加进去,然后把nutch-site.xml中的searcher.dir指到search-servers.txt保存的目录,在提供搜索服务的服务器上手动的从HDFS中拷贝索引文件到本地。启动DistributedSearch.Server提供搜索服务。Nutch节点失效通过搜索请求IPC调用的超时来通知。
Lucene另一种分布式搜索是使用Solr(本人不太熟悉Solr)。所有的更新是在Solr的主服务器,通过cron自动分发到搜索服务器。搜索通过只定shards的host:port/base_url分发到各个搜索服务器。url例子:http://localhost:8983/solr/select?shards=192.168.1.27:8983/solr,192.168.1.28:8983&q=solr。缺点是没有全局的Lucene评分机制中的idf、lengthNorm因子,没有节点失效处理机制。由于分发document到shards使用uniqueId.hashCode() % numServers机制,可扩展性大打折扣。最近Rackspace结合Sorl,Hadoop和Tomcat来搜索邮件日志数据,文档中看不出使用何种机制失效处理机制等。
在Hadoop的wiki中提到由HP Lab实现的Distributed Lucene,但是自从08年5月18日提交了一次source后就没了下文。
Katta分布式搜索是101tec.com贡献的一个开源项目。主要目的提供高有效性的搜索服务,并提供负载平衡。Katta使用zookeeper保证主节点和搜索节点的有效性,指派索引文件给搜索节点,察觉搜索节点的失效。每一个搜索节点在启动时往zookeeper的“/nodes”节点写一个短暂的znode。主节点设定watch事件察觉这个znode的变化。即当节点和zookeeper server连接断开时,zookeeper自动把这个znode删除,并通知主节点。同样,相同的程序处理主节点失效。当前只有一个活动的主节点往zookeeper中写“/master” 这个znode。备用的主节点设定watch事件察觉这个znode的变化,并把自己变成活动的主节点。当有新的索引被部署时在zookeeper中“/index” znode下添加一个znode,主节点把这个索引分配给搜索节点。“/nodes-to-shards”目录保存每一个搜索节点的znode,在每一个znode下是这个搜索节点被分配的索引文件列表。“/shards-to-nodes”目录保存每一个搜索节点的znode,在每一个znode下是这个搜索节点已经部署的索引文件列表。
Katta现阶段没有实时更新。(正在计划,可能类似于Dynamo,更新的一致性,采用类似于 Quorum 系统的一致性协议实现),没有LRU或LFU缓存策略。其分布式TF-IDF的解决方案:分为两次发送请求。首先向每个搜索节点发送获取document frequency(只读取tis文件)的请求,然后再向每个搜索节点发送搜索请求,把document frequency和query一起发送。
在Hadoop的contrib中的index是使用MapReduce建立Lucene索引的,不是用来搜索用的。
通过上面的软件,我们可以建立一个自动化的搜索服务。建立一个web控制服务器来监控整个过程。先使用hadoop的MapReduce来建立索引,在提交job是设定job.end.notification.url到我们的控制服务器,控制服务器接受到建立索引的任务已经完成,就可把索引分配给Katta提供搜索服务。
分享到:
相关推荐
在这样的背景下,本文提出了基于Hadoop分布式计算平台的设计方案,其中包括利用LIRE(Lucene Image Retrieval)开发包来提取图像特征。LIRE是基于Lucene全文搜索引擎的扩展,专门用于图像内容检索。它能够以分布式的...
Hadoop是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来...Hadoop分布式安装与配置手册 Hadoop权威指南原版 hadoop权威指南中文第二版 Hadoop实战-陆嘉恒 分布式基础学习 用+Hadoop+进行分布式并行编程
* HDFS(Hadoop Distributed File System):一个分布式文件系统,用于存储和管理海量数据。 * MapReduce:一个计算模型,用于处理海量数据的计算任务。 2. Hadoop 的应用场景: * 分布式并行编程:Hadoop 可以...
随着信息技术的迅速发展,非结构化知识呈现爆炸性增长,...在未来的应用中,这种基于文本聚类与分布式Lucene的知识检索技术,有望在大数据环境下得到更广泛的应用,为非结构化知识的管理和检索提供更加高效的技术支持。
综上所述,该文档详细地介绍了如何基于Hadoop分布式系统构建一个适用于地质环境大数据的框架,该框架通过整合Hadoop的各个组件,提供了一个全面的数据处理、分析、存储和可视化的能力。这对于未来地质环境大数据的...
该系统的设计充分利用了Hadoop的分布式处理能力,结合了Lucene框架的全文索引功能和Solr的企业级检索特性,以及SparkStreaming的实时数据处理优势,形成了一个能够提供企业级智能云检索服务的高效系统。通过这样的...
本文将深入探讨如何在Hadoop平台上构建一个分布式搜索引擎,并结合"SearchEngine-master"项目,详细解析其关键技术和实现步骤。 一、Hadoop基础与搜索引擎概述 Hadoop由Apache基金会开发,主要由HDFS(Hadoop ...
Linux下Nutch分布式配置和使用.pdf Lucene+Nutch源码.rar Lucene学习笔记.doc nutch_tutorial.pdf nutch二次开发总结.txt nutch入门.pdf nutch入门学习.pdf Nutch全文搜索学习笔记.doc Yahoo的Hadoop教程.doc [硕士...
在IT领域,Hadoop和Lucene是两个非常重要的开源项目,它们分别在大数据处理和全文检索方面发挥着关键作用。本文将深入探讨标题为“hadoop.contrib/lucene源码”的主题,即如何在Hadoop MapReduce框架下利用Lucene来...
它与现有的分布式文件系统有很多近似的地方,但又和这些文件系统有很明显的不同。HDFS是高容错的,设计为部署在廉价硬件上的。HDFS对应用程序的数据提供高吞吐量,而且适用于那些大数据集应用程序。HDFS开放了一些...
标题 "如何将Lucene索引写入Hadoop" 指涉的是在大数据处理场景下...这个过程涉及对Hadoop和Lucene的深入理解,以及对分布式系统的调优技能。通过合理的设计和优化,我们可以构建出一个能够处理海量数据的强大搜索系统。
Elasticsearch是一个基于Lucene的分布式搜索服务器,其设计目的是提供一个分布式的、可扩展的全文搜索引擎,同时也具备数据的聚合和统计分析能力。而Hadoop是一个由Apache软件基金会开发的开源框架,它允许使用简单...
这是一个分布式索引框架,使用Apache Hadoop,Apache Lucene和Apache Tika对大量数据进行索引。
开源分布式数据库Hadoop PPT,Hadoop 使用了POSIX的设计来实现对文件系统文件流的读取。HDFS(Hadoop FileSystem)原来是Apache Nutch搜索引擎(从Lucene发展而来)开发的一个部分,后来独立出来作为一个Apache子...
Hadoop是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来专门负责分布式存储以及分布式运算的项目。简单地说,Hadoop是一个实现可靠、可扩展、分布式运算的开源软件平台,它也是Google著名的分布式文件...