大发龙虎大战你 好,游客 登录
背景:
阅读新闻

谈谈Hadoop和分布式Lucene

[日期:2009-01-18] 来源:  作者:马士华 [字体: ]

 

Lucene是大用的较多的开源大发龙虎大战搜索 引擎。本文不探讨Lucene如何实时更新(http://issues.apache.org/jira/browse/LUCENE-1313),和如何修改Lucene评分机制,添加如PageRank评分因子,本文只讨论分布式的Lucene。

 

similarity

 

说到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提供大发龙虎大战搜索 大发龙虎大战服务 。

大发龙虎大战推荐 打印 | 录入: | 阅读:
相关新闻      
本文评论   
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 大发龙虎大战本站 管理人员有权保留或大发龙虎大战删除 其管辖留言中的任意内容
  • 大发龙虎大战本站 有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款