solrcloud和zookeeper的搭建、使用、心得、教训

      公司的solr线上服务器,分红差很少10个core给不一样的部门不一样的业务需求来使用。我接手以来,问题多多,烦扰多多。有很多问题亟待解决,首当其冲的是搜索准确度、数据同步。搜索准确度已经经过改用ansj分词器和不断优化的我的词库和停用词库来解决,这是个不断优化的过程,须要长时间的跟进才有明显效果。第二个数据同步问题,其实包括了快捷新建搜索core、搜索性能负载、数据同步和宕机恢复等。之前是各类分散的处理方案。数据同步我本身写了个rest的webservice接口来分别实现,宕机恢复甚至只能手工处理,性能负载是IT运维部门来解决。如今大部分弃用,直接上solrcloud!html

      花了差很少一周的时间,搞定了solrcloud。其实搭建起来一两个小时就OK了,时间都花在理解原理和进阶使用上,各类问题,头疼,这周也加了很多班,真心很艰辛!有时候想一想真是no zuo no die,其实旧有的方案彻底是能够用的,并且是本身辛苦写成的,如今要推翻重来,并且要深刻理解,随便一个问题都能焦头烂额,我好歹也是搞过nutch、hadoop的人,如今在solrcloud上头疼的程度倒是史无前例。solrcloud+zookeeper网上资料可谓多矣,惋惜一万篇均可以合成一篇,基本上都是写如何搭建,而后就没了,各类抄袭,各类点到为止。这也是中文开源界的一个很差的现象,你们都反复分享已经有的技术;有难度的技术,你们又不肯意分享。结果找资料,百度上翻了几十页,内容都大差不差。蛋疼的谷歌上不了。WIKI文档又多数是英文的,不多有翻译的,在此要感谢一些把solrcloud的wiki翻译过来的兄弟。啰啰嗦嗦说了好多,其实最终仍是想劝告作开发的,多作些原创的东西,多看文档,多理解原理而不是人云亦云。好了,下来写写我开发过程当中的心得和教训吧!java


1,zookeeper安装。单机分布式都可,网上资料多多,这个也比hadoop搭建容易,之后有兴趣准备写个脚本,一键安装zookeeper服务。linux

2,solr安装。注意在linux上安装时候,solr.xml不要在window上编辑再上传!!!这是很小的事情,可是很容易形成不明因此的bug.血的教训,zookeeper同步数据会重写solr.xml,由于window和linux各类不一样的东东,会让在linux上没法重写!致使slor服务重启后没法装载solr的core,一直处于Down的状态。若是你的solrcloud里某个solr物理节点状态是down,请vi solr.xml,看里面是不是不少~M(常常用linux的人懂的)。另外建议把solr.xml里的注释所有去掉!不须要在solr.xml里建立core,咱们有强大的zookeeper,`(*∩_∩*)′web

3,上传core的配置文件。这里说下理解性的东西,一旦理解就一切好说。zookeeper上的文件系统相似HDFS。./zkCli.sh -server localhost:2181
能够查看zookeeper分布式上的文件结构,全部的core配置文件在confs里,全部的core(cloud里用的是collection这个概念)在collections里。上传配置文件命令以下:
java -classpath .:/usr/local/tomcat7/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost hadoop34:2181,hadoop36:2181 -confdir /usr/local/soft/solr-space/alpha_wenuser/conf -confname alpha_wenuser
这里把alpha_wenuser集合(core)的配置文件上传到两台分布式机器下。若是你的配置里有dataimport相关的,在这里或者之后建立core(集合)时候会报错,须要把dataimport相关的jar放在tomcat下的solr的lib里,而不是以前单机solr那样放在solr_home的dist下。apache

4,建立集合。一旦配置文件上传OK了,你能够为所欲为的建立集合了,不须要本机蛋疼的操做,一条命令就够了。命令以下
curl 'http://hadoop36/solr/admin/collections?action=CREATE&name=alpha_wenuser&numShards=1&replicationFactor=1&collection.configName=alpha_wenuser'
具体含义,百度一下,你们都知道的,就不罗嗦了。tomcat

5,宕机测试。上面OK了solrcloud就OK了。什么,你说怎么会这么简单,好吧,就是这么简单。难的是此起彼伏的bug。若是你认真看我上面的操做,基本上全部的bug均可以免了。如今随便关掉一台solr机器,测试下leader是否切换成功,再重启solr机器,看这solr节点是down仍是Active,若是是down,好吧兄弟,去查看solr.xml吧,必然有我刚才说的问题,解决方法就是删掉,直接换成example里的solr.xml吧。而后删掉集合,命令以下
curl'http://hadoop36/solr/admin/collections?action=DELETE&name=alpha_wenuser'
再重复步奏4,步奏5。服务器


上面说的很乱,其实本文不是告诉你搭建solrcloud的详细方法,而是搭建和使用过程当中可能出现的问题以及万万要注意的地方。app

参考资料:
http://shiyanjun.cn/archives/100.html 
这个步奏很靠谱,信得过,固然也要本身理解了先,他也漏了一些东西
http://blog.csdn.net/natureice/article/details/9109351
这个同上,也很值得参考
http://www.cnblogs.com/guozk/p/3498844.html
这个有各类操做命令,蛮详细的
感谢这几位分享的经验,互联网真好!运维

相关文章
相关标签/搜索