分布式全文检索系统分布式全文检索系统SolrCloud简介简介
前言
本文简单描述SolrCloud的特性,基本结构和入门,基于Solr4.5版本。
Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库。Solr是以Lucene为基础实现的文本检索应用服务。
SolrCloud是Solr4.0版本开发出的具有开创意义的基于Solr和Zookeeper的分布式搜索方案,或者可以说,SolrCloud是Solr的
一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式,这些方式部署的Solr不具有SolrCloud的
特色功能。
特色
SolrCloud有几个特色功能:
1、集中式的配置信息
使用ZK进行集中配置。启动时可以指定把Solr的相关配置文件上传Zookeeper,多机器共用。这些ZK中的配置不会再拿到本地
缓存,Solr直接读取ZK中的配置信息。配置文件的变动,所有机器都可以感知到。
另外,Solr的一些任务也是通过ZK作为媒介发布的。目的是为了容错。接收到任务,但在执行任务时崩溃的机器,在重启后,
或者集群选出候选者时,可以再次执行这个未完成的任务。
2、自动容错
SolrCloud对索引分片,并对每个分片创建多个Replication。每个Replication都可以对外提供服务。一个Replication挂掉不会
影响索引服务。
更强大的是,它还能自动的在其它机器上帮你把失败机器上的索引Replication重建并投入使用。
3、近实时搜索
立即推送式的replication(也支持慢推送)。可以在秒内检索到新加入索引。
4、查询时自动负载均衡
SolrCloud索引的多个Replication可以分布在多台机器上,均衡查询压力。如果查询压力大,可以通过扩展机器,增加
Replication来减缓。
5、自动分发的索引和索引分片
发送文档到任何节点,它都会转发到正确节点。
6、事务日志
事务日志确保更新无丢失,即使文档没有索引到磁盘。
其它值得一提的功能有:
1、索引存储在HDFS上
索引的大小通常在G和几十G,上百G的很少,这样的功能或许很难实用。但是,如果你有上亿数据来建索引的话,也是可以
考虑一下的。我觉得这个功能最大的好处或许就是和下面这个“通过MR批量创建索引”联合实用。
2、通过MR批量创建索引
有了这个功能,你还担心创建索引慢吗?
3、强大的RESTful API
通常你能想到的管理功能,都可以通过此API方式调用。这样写一些维护和管理脚本就方便多了。
4、优秀的管理界面
主要信息一目了然;可以清晰的以图形化方式看到SolrCloud的部署分布;当然还有不可或缺的Debug功能。
概念
Collection:在SolrCloud集群中逻辑意义上的完整的索引。它常常被划分为一个或多个Shard,它们使用相同的Config Set。
如果Shard数超过一个,它就是分布式索引,SolrCloud让你通过Collection名称引用它,而不需要关心分布式检索时需要使用
的和Shard相关参数。