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
這個有各類操做命令,蠻詳細的
感謝這幾位分享的經驗,互聯網真好!運維

相關文章
相關標籤/搜索