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

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

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

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,`(*∩_∩*)′

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下。

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

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的详细方法,而是搭建和使用过程中可能出现的问题以及万万要注意的地方。

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

solrcloud和zookeeper的搭建、使用、心得、教训相关推荐

  1. solrCloud集群的搭建

    什么是solrCloud SolrCloud是solr提供的分布式搜索方案 适用情景:大规模,容错,分布式索引,检索 soLrCloud是基于solr和zookeeper的分布式搜索方案, zooke ...

  2. zookeeper在搭建的时候,解决后台启动为standalone模式问题

    zookeeper在搭建的时候,解决后台启动为standalone模式问题 参考文章: (1)zookeeper在搭建的时候,解决后台启动为standalone模式问题 (2)https://www. ...

  3. Hadoop生态圈-zookeeper本地搭建以及常用命令介绍

    Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...

  4. springboot+dubbo+zookeeper详细搭建

    springboot+dubbo+zookeeper框架搭建 环境搭建 启动zookeeper 启动dubbo-addmin-2.6.0监控平台(可省) 服务提供者 引包 配置参数 启动类 demo ...

  5. springboot+dubbo+zookeeper+maven搭建微服务详细教程

    前言: 本文将使用springboot+dubbo+zookeeper+maven搭建一套微服务. 需要提前在本地配置的环境: maven环境 zookeeper环境(在我本地zookeeper在21 ...

  6. ZooKeeper源码阅读心得分享+源码基本结构+源码环境搭建

    首发CSDN:徐同学呀,原创不易,转载请注明源链接.我是徐同学,用心输出高质量文章,希望对你有所帮助. 一.心得分享 如何阅读ZooKeeper源码?从哪里开始阅读?最近把ZooKeeper源码看了个 ...

  7. SolrCloud详解及搭建

    1. 什么是SolrCloud 1.1. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud ...

  8. solrCloud伪集群搭建

    前情: 采用伪集群部署方式,在同一台服务器上部署3个zookeeper,3个solr服务.结构如下图: 1,下载压缩包,zookeeper,solr zookeeper3.4.10下载地址:https ...

  9. ZooKeeper快速搭建

    原文地址:http://nileader.blog.51cto.com/1381108/795230 下载PDF版本 本文是ZooKeeper的快速搭建,旨在帮助大家以最快的速度完成一个ZK集群的搭建 ...

  10. zookeeper环境搭建以及测试

    2019独角兽企业重金招聘Python工程师标准>>> 1.  搭建开发环境 (http://zookeeper.apache.org/)首先下载最新版 zookeeper-3.4. ...

最新文章

  1. SideFX Houdini FX中文版
  2. webstorm两个文件比对_webstorm/phpstorm配置连接ftp快速进行文件比较(上传下载/同步)操作...
  3. c语言tracert程序一直超时,traceroute – tracert命令返回超时
  4. JavaScript使用hash表方式实现数组去重。
  5. 汽车电子嵌入式技术篇(二) -autosar中的嵌入式系统函数的调用
  6. 使用开源工具ELK可视化 Azure NSG日志
  7. html键盘制作,HTML手写键盘(一)
  8. java实验_Java实验报告(实验一)
  9. 2020年中国冷链物流行业发展报告
  10. 纯手写实现HashMap
  11. mysql5.6配置区分大小写
  12. linux启动找不到,pxe启动的时候找不到pxelinux.0的原因
  13. java材质_教程 - JAVA版材质包制作教程 | MineBBS 我的世界中文论坛
  14. 自动驾驶车辆控制 最终项目作业 实现分析
  15. 软件项目需求变更申请单模板
  16. womic网络错误_无线麦克风WO Mic
  17. python 复制到剪贴板_Python脚本将文本复制到剪贴板
  18. 百度地图模拟签到考勤程序
  19. 如何获取微信用户openid
  20. android 实体 快捷键,as快捷键

热门文章

  1. 在Mac上将WebP图像批量转换为JPG的方法
  2. 分区丢失导致文件丢失?巧用EasyreCovery找回
  3. 详解Guitar Pro的自动化编辑器之节拍自动化
  4. JDK下Bin目录的工具介绍
  5. line vty 0 4 和line vty 5 15 区别
  6. 使用MHA对mysql主从架构中的主节点做高可用
  7. 【原】Eclipse部署Maven web项目到tomcat服务器时,没有将lib下的jar复制过去的解决办法...
  8. Telnet 服务器软件的安装
  9. centos下的nginx安装工作记录20130701
  10. 几个关于oracle 11g ASM的问题