1. 程式人生 > >solrcloud和zookeeper的搭建、使用、心得、教訓

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

公司的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的詳細方法,而是搭建和使用過程中可能出現的問題以及萬萬要注意的地方。

BUG修補區:


1,java.lang.UnsupportedOperationException
   解決方案是,檢查scheam.xml下的_version欄位是不是沒有設定成long型別,新版的solr的_version不使用string型別,如果繼續使用,會報這類錯誤!

參考資料:
http://shiyanjun.cn/archives/100.html
這個步奏很靠譜,信得過,當然也要自己理解了先,他也漏了一些東西
http://blog.csdn.net/natureice/article/details/9109351
這個同上,也很值得參考
http://www.cnblogs.com/guozk/p/3498844.html
這個有各種操作命令,蠻詳細的
感謝這幾位分享的經驗,網際網路真好!

iteye日誌搬家到CSDN出問題,只好手動選取精華,複製過來,絕對本人原創。

相關推薦

linux環境使用SolrCloudZookeeper搭建分散式集群系統

使用虛擬機器(本例VMware)安裝CentOS6後修改網路配置 編輯--->虛擬網路編輯器,選中型別為NAT模式下的虛擬網路,將子網ip改為形如192.168.30.0 DHCP設定中開始ip地址和結束ip地址可以分別設定為192.168.30.100和192.168.

solrcloudzookeeper搭建使用心得教訓

公司的solr線上伺服器,分成差不多10個core給不同的部門不同的業務需求來使用。我接手以來,問題多多,煩擾多多。有不少問題亟待解決,首當其衝的是搜尋準確度、資料同步。搜尋準確度已經通過改用ansj分詞器和不斷優化的個人詞庫和停用詞庫來解決,這是個不斷優化的過程,需要長時

【新產品體驗】快如科技子彈簡訊APP體驗報告體驗心得優劣勢分析

8月20日,子彈簡訊橫空出世,微創新和營銷手段是這款APP的核心武器。我個人覺得這款APP還是個雛形、Demo或者說半成品,只能“矮子裡挑將軍”地分析一下這款半成品現有的亮眼之處。 (1)UI創新:最直觀的微創新。訊息介面重構,一級介面相較企業微信、釘釘,新增了三個元素:語

dubbo開發環境搭建與tomcat集成DEMO示例(最完整版本帶管理控制臺監控中心zookeeper

-s http服務 ppr context 正常 windows web容器 web.xml配置 web.xml 以windows為例,linux基本相同,開發環境一般linux,個人環境一般windows(如果不開額外vm的話)。 示例以dubbo官方自帶demo為例子

學習使用DockerDocker-ComposeRancher搭建部署Pipeline(一)

docker 部署 rancher 雲 微服務 說明 這篇文章是一系列文章的第一篇,在這一系列文章中,我們想要分享我們如何使用Docker、Docker-Compose和Rancher完成容器部署工作流的故事。我們想帶你從頭開始走過pipeline的革命歷程,重點指出我們這一路上遇到的

Python學習心得(五) random生成驗證碼MD5加密pickle與json的序列化反序列化

用法 div com ict file imp randint csdn == # -*- coding:utf-8 -*- import random as rd #驗證碼 import hashlib as hsl #MD5加密 import pickle,json

Zookeeper--0200--安裝與集群搭建常用命令客戶端工具

客戶端軟件 href 根節點 log nbsp ron lan 常用命令 .cn 看這裏, http://www.cnblogs.com/lihaoyang/p/8358153.html 1,先使用可視化客戶端軟件 ZooInspector 連接上集群中的一個節點,看下z

GitHubNode.jsHexo搭建個人部落格

GitHub、Node.js和Hexo搭建個人部落格 1.Git 1.1、下載 下載地址:https://git-scm.com/downloads 1.2、Git安裝 雙擊安裝,點選Next 填寫安裝路徑,點選Next 選中安裝內容,點選Next

zookeeper概念應用場景資料組織叢集搭建客戶端操作Java客戶端curator

  一、zookeeper簡介      1.1 zookeeper簡介      Apache的很多專案以動物來命令,比如Hadoop(大象)、Hive(小蜜蜂)、Pig(豬豬),這些專案都是hadoop生態系統的成員。Hadoop生態系統是為了解決大資料儲存、大資料計算和大資料資料分析的,解決大

搭建SpringSpring MVCMybatisFreemarker

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.

用Kibanalogstash快速搭建實時日誌查詢收集與分析系統

  Logstash是一個完全開源的工具,他可以對你的日誌進行收集、分析,並將其儲存供以後使用(如,搜尋),您可以使用它。說到搜尋,logstash帶有一個web介面,搜尋和展示所有日誌。 kibana 也是一個開源和免費的工具,他可以幫助您彙總、分析和搜尋重要資料日誌並提供友好的web介面。他可以為 L

如何使用Mediawiki搭建個人wiki系統以及wiki的部分基本操作設定

    日常開發中總會有許多東西需要記錄,很多軟體都可以做到這一點,例如有道雲筆記,或者寫部落格。但個人偏愛於Mediawiki,因為wiki可定製性強,總給人一種高階大氣的感覺。起初對wiki這種東西一無所知,受老總的影響,開始在公司推廣wiki,可惜到現在沒有推廣成功,不過自己倒是喜歡上這東西了。廢話

linux(centOS)下搭建node伺服器三 pm2管理保持後臺執行node應用

一、安裝pm2 全域性安裝pm2: npm install -g pm2 安裝完成檢視幫助命令(pm2 -h)報錯: -bash:pm2:command not found 執行: ln

zookeeper從入門到精通特性瞭解與環境搭建安裝

目錄 分散式協調服務-zookeeper 一、分散式環境的特點 (1)、分佈性 (2)、併發性:程式執行過程中,併發性操作是很常見的。比如同一個分散式系統中的多個節點,同時訪問一個共享資源。 資料庫、分散式儲存。 (3)、無序性:程

HadoopHbaseHivezookeeper版本匹配關係

Hadoop平臺中各個元件的版本匹配非常重要!不是所有元件都下載最新版本就好,版本不匹配和引發各種問題。 Hadoop和Hbase的匹配關係可以檢視Hbase官方文件,搜尋‘Hadoop version support matrix’: Hadoop和Hive的匹

如何使用DockerDocker-ComposeRancher搭建部署Pipeline(三)

在這一部分,我們將一步步的走進Rancher,細緻的探討Rancher將如何解決在部署與容器管理時出現的種種的問題。回顧教程的第二部分,你會發現我們已經將應用的部署遷移至Docker Compose,並且已經建立了一系列工作步驟來部署我們的應用。這將使得開發人員

zookeeper學習系列:三利用zookeeper做選舉

之前只理解zk可以做命名,配置服務,現在學習下他怎麼用作選舉和鎖,進一步還可構建master-slave模式的分散式系統。 為什麼叫Zoo?“因為要協調的分散式系統是一個動物園”。 ZooKeeper是一箇中性化的Service,用於管理配置資訊、命名、提供分散式同步,還能組合Service。所有這些種類的

[Revit]Autodesk Revit 二次開發整理(資料準備工作環境搭建

1 前言 Revit被Autodesk收購之後,整理和開放了一大部分API,供開發者實現自己的功能和程式,總體來說API的功能比較完善,畢竟市面上已經出現了各式各樣的外掛。 本人也是初學者,在Revit分類中分享一些自己記錄的筆記內容。 2 準備工作 工欲善其事,必先利其器。 2.1 語言 首先,定下你自己

基於資料庫rediszookeeper實現的分散式鎖

#### 基於資料庫 基於資料庫(MySQL)的方案,一般分為3類:基於表記錄、樂觀鎖和悲觀鎖 ###### 基於表記錄 用表主鍵或表字段加唯一性索引便可實現,如下; ``` CREATE TABLE `database_lock` ( `id` BIGINT NOT NULL AUTO_INCREM

四瀆《構建之法》——計劃估計敏捷流程項目經理用戶場景

理解 流程 ger 改進 學習 解決 可能 觀察 平衡 本周再次打開《構建之法》,這次我閱讀時重點在於學習敏捷流程、項目經理和用戶場景等相對較為宏觀的內容。 第六章開篇即簡單地介紹了敏捷開發的流程:Product Backlog—>Sprint Backlog—>