谈谈Hadoop和分布式Lucene
http://hi.baidu.com/lewutian
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提供搜索服务。
http://hi.baidu.com/lewutian推荐文章:
1. Lucene Demo安装,Linux
2. Lucene:基于Java的全文检索引擎简介
3. Sphinx(狮身人面)比lucene还牛的搜索引擎
4. 关于lucene 结构及内层的研究(一)
5. 学习用Lucene.net做全文搜索(1)
6. Lucene的平行索引和同时搜索多个索引
7. Lucene Query类结构
8. Lucene中文分析器的中文分词准确性和性能比较
9. Lucene的score()实现
10. Lucene 中文引擎,庖丁解牛的辞典参数配置方法
11. lucene.net学习心得
12. lucene结构学习
13. 实现基于lucene的三个功能:1-分页 2-按时间排序 3-检索某时间范围内的内容
14. 把lucene索引放在内存中提供查询服务
15. Lucene的平行索引和同时搜索多个索引
分享到:
相关推荐
南理工 魏松杰 对应他的英文版本PPT复习可用,同时是学习分布式系统的很好的PPT,分布式系统ppt对应分布式系统第五版英文版ppt,复习,自学可用,了解分布式系统,共10章,01-概述,02-系统模型,03-进程间通信,04-...
分布式系统理论体系非常庞大,涉及知识面也非常广博,本文精心选择了部分在工程实践中应用广泛、简单有效的分布式理论、算法、协议加以介绍。全文分为两大部分,第一部分介绍了分布式系统的一些基本概念并框定了本文...
本书分为三大部分,即分布式系统基础理论、分布式系统常用技术以及经典的分布式系统案例分析。第一部分主要介绍分布式系统基础理论知识,总结一些在设计分布式系统时需要考虑的范式、知识点以及可能会面临的问题,...
《大规模分布式系统架构与设计实战》写到,分布式并行计算的基本原理解剖;分布式协调的实现,包括如何实现公共配置管理,如何实现分布式锁,如何实现集群管理等;分布式缓存的实现,包括如何提供完整的分布式缓存来...
分布式存储基础、Ceph、cinder及华为软件定义的存储方案.pdf分布式存储基础、Ceph、cinder及华为软件定义的存储方案.pdf分布式存储基础、Ceph、cinder及华为软件定义的存储方案.pdf分布式存储基础、Ceph、cinder及...
《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...
SpringCloud分布式微服务项目Common通用依赖模块抽离示例代码 SpringCloud分布式微服务项目Common通用依赖模块抽离示例代码 SpringCloud分布式微服务项目Common通用依赖模块抽离示例代码 SpringCloud分布式微服务...
分布式 数据库 参考文献 分布式数据库分布式 数据库 参考文献 分布式数据库分布式 数据库 参考文献 分布式数据库分布式 数据库 参考文献 分布式数据库
分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构体系描述 分布式架构...
容错技术,分布式数据管理,分布式文件系统的设计问题与实现方法,分布式调度,分布式共享存储器技术以及基于对象的分布式系统,以及相关的前沿主题,包括web服务、网格、移动系统和无处不在系统等。通过这门课程的...
有关分布式计算的主题是多种多样的,许多研究人员正在研究关于分布式硬 件结构和分布式软件设计的各方面问题以开发利用其潜在的并行性和容错性。在这一章里,我 们将考虑一些基本概念以及与分布式计算相关的一些问题...
本书是Tanenbaum先生对所著的《分布式操作系统》的升级更新,是分布式系统的权威教材。全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和...
33节点符合分布式电源电力系统配电网的潮流计算
【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】分布式相关面试题大全面试题【BAT必备】...
分布式开发的技术关键分布式开发的技术关键分布式开发的技术关键分布式开发的技术关键
SpringBoot面向线上支付平台的分布式微服务架构研究 SpringBoot面向线上支付平台的分布式微服务架构研究 SpringBoot面向线上支付平台的分布式微服务架构研究 SpringBoot面向线上支付平台的分布式微服务架构研究 ...
《大规模分布式存储系统:原理解析与架构实战》是分布式系统领域的经典著作,由阿里巴巴高级技术专家“阿里日照”(OceanBase核心开发人员)撰写,阳振坤、章文嵩、杨卫华、汪源、余锋(褚霸)、赖春波等来自阿里、...
购物车分布式Session处理方案,一个用户的分布式的购物车在集群分布式的情况下怎么处理解决Session共享的问题
分布式存储技术及应用,分布式存储技术及应用,分布式存储技术及应用
本书较为全面地介绍了分布式系统领域的一些基本概念,提出了分布式系统的各种问题,如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式...