1. 程式人生 > >Solr叢集搭建,zookeeper叢集搭建,Solr分片管理,Solr叢集下的DataImport,分詞配置。

Solr叢集搭建,zookeeper叢集搭建,Solr分片管理,Solr叢集下的DataImport,分詞配置。

1   什麼是SolrCloud

  SolrCloud(solr 雲)是Solr提供的分散式搜尋方案,當你需要大規模,容錯,分散式索引和檢索能力時使用 SolrCloud。當一個系統的索引資料量少的時候是不需要使用SolrCloud的,當索引量很大,搜尋請求併發很高,這時需要使  用SolrCloud來滿足這些需求。

  SolrCloud是基於Solr和Zookeeper的分散式搜尋方案,它的主要思想是使用Zookeeper作為叢集的配置資訊中心。

  它有幾個特色功能:

  1)集中式的配置資訊

  2)自動容錯

  3)近實時搜尋

  4)查詢時自動負載均衡

1.1  Zookeeper是個什麼玩意?

  顧名思義zookeeper就是動物園管理員,他是用來管hadoop(大象)、Hive(蜜蜂)、pig(小豬)的管理員, Apache Hbase和 Apache Solr 的分散式叢集都用到了zookeeper;Zookeeper:是一個分散式的、開源的程式協調服務,是hadoop專案下的一個子專案。

1.2   Zookeeper可以幹哪些事情

  1、配置管理

  在我們的應用中除了程式碼外,還有一些就是各種配置。比如資料庫連線等。一般我們都是使用配置檔案的方式,在程式碼中引入這些配置檔案。但是當我們只有一種配置,只有一臺伺服器,並且不經常修改的時候,使用配置檔案是一個很好的做法,但是如果我們配置非常多,有很多伺服器都需要這個配置,而且還可能是動態的話使用配置檔案就不是個好主意了。這個時候往往需要尋找一種集中管理配置的方法,我們在這個集中的地方修改了配置,所有對這個配置感興趣的都可以獲得變更。比如我們可以把配置放在資料庫裡,然後所有需要配置的服務都去這個資料庫讀取配置。但是,因為很多服務的正常執行都非常依賴這個配置,所以需要這個集中提供配置服務的服務具備很高的可靠性。一般我們可以用一個叢集來提供這個配置服務,但是用叢集提升可靠性,那如何保證配置在叢集中的一致性呢? 這個時候就需要使用一種實現了一致性協議的服務了。Zookeeper就是這種服務,它使用Zab這種一致性協議來提供一致性。現在有很多開源專案使用Zookeeper來維護配置,比如在HBase中,客戶端就是連線一個Zookeeper,獲得必要的HBase叢集的配置資訊,然後才可以進一步操作。還有在開源的訊息佇列Kafka中,也使用Zookeeper來維護broker的資訊。在Alibaba開源的SOA框架Dubbo中也廣泛的使用Zookeeper管理一些配置來實現服務治理。

  2、名字服務

  名字服務這個就很好理解了。比如為了通過網路訪問一個系統,我們得知道對方的IP地址,但是IP地址對人非常不友好,這個時候我們就需要使用域名來訪問。但是計算機是不能是別域名的。怎麼辦呢?如果我們每臺機器裡都備有一份域名到IP地址的對映,這個倒是能解決一部分問題,但是如果域名對應的IP發生變化了又該怎麼辦呢?於是我們有了DNS這個東西。我們只需要訪問一個大家熟知的(known)的點,它就會告訴你這個域名對應的IP是什麼。在我們的應用中也會存在很多這類問題,特別是在我們的服務特別多的時候,如果我們在本地儲存服務的地址的時候將非常不方便,但是如果我們只需要訪問一個大家都熟知的訪問點,這裡提供統一的入口,那麼維護起來將方便得多了。

  3、分散式鎖

  其實在第一篇文章中已經介紹了Zookeeper是一個分散式協調服務。這樣我們就可以利用Zookeeper來協調多個分散式程序之間的活動。比如在一個分散式環境中,為了提高可靠性,我們的叢集的每臺伺服器上都部署著同樣的服務。但是,一件事情如果叢集中的每個伺服器都進行的話,那相互之間就要協調,程式設計起來將非常複雜。而如果我們只讓一個服務進行操作,那又存在單點。通常還有一種做法就是使用分散式鎖,在某個時刻只讓一個服務去幹活,當這臺服務出問題的時候鎖釋放,立即fail over到另外的服務。這在很多分散式系統中都是這麼做,這種設計有一個更好聽的名字叫LeaderElection(leader選舉)。比如HBase的Master就是採用這種機制。但要注意的是分散式鎖跟同一個程序的鎖還是有區別的,所以使用的時候要比同一個程序裡的鎖更謹慎的使用。

  4、叢集管理

  在分散式的叢集中,經常會由於各種原因,比如硬體故障,軟體故障,網路問題,有些節點會進進出出。有新的節點加入進來,也有老的節點退出叢集。這個時候,叢集中其他機器需要感知到這種變化,然後根據這種變化做出對應的決策。比如我們是一個分散式儲存系統,有一箇中央控制節點負責儲存的分配,當有新的儲存進來的時候我們要根據現在叢集目前的狀態來分配儲存節點。這個時候我們就需要動態感知到叢集目前的狀態。還有,比如一個分散式的SOA架構中,服務是一個叢集提供的,當消費者訪問某個服務時,就需要採用某種機制發現現在有哪些節點可以提供該服務(這也稱之為服務發現,比如Alibaba開源的SOA框架Dubbo就採用了Zookeeper作為服務發現的底層機制)。還有開源的Kafka佇列就採用了Zookeeper作為Cosnumer的上下線管理。

2   Solr叢集的結構


3   Solr叢集的搭建

  本教程的這套安裝是單機版的安裝,所以採用偽叢集的方式進行安裝,如果是真正的生產環境,將偽叢集的ip改下就可以了,步驟是一樣的。

  SolrCloud結構圖如下:

 

  需要三個zookeeper節點

四個solr節點

4   Zookeeper叢集的搭建

4.1   軟體環境

三個zookeeper例項。Zookeeper也是java開發的所以需要安裝jdk。

1、Linux系統

2、Jdk環境。

3、Zookeeper。

伺服器及軟體資訊資訊

1

192.168.106.80

伺服器上的位置:/usr/local/apache-tomcat-7.0.73

伺服器ip和埠號:192.168.106.80:8080

JDK-Version: 1.7.0_79

Zookeeper: /home/tuzq/software/zookeeper

2

192.168.106.81

伺服器上的位置:/usr/local/apache-tomcat-7.0.73

伺服器ip和埠號:192.168.106.81:8080

JDK-Version: 1.7.0_79

Zookeeper: /home/tuzq/software/zookeeper

3

192.168.106.82

伺服器上的位置:/usr/local/apache-tomcat-7.0.73

伺服器ip和埠號:192.168.106.82:8080

JDK-Version: 1.7.0_79

Zookeeper: /home/tuzq/software/zookeeper

4

192.168.106.83

伺服器上的位置:/usr/local/apache-tomcat-8.5.12

伺服器ip和埠號:192.168.106.83:8080

JDK-Version: 1.7.0_79

  使用偽分散式實現solr叢集。需要三個zookeeper例項,4個tomcat例項,可以在一臺虛擬機器上模擬。建議虛擬機器1G以上記憶體。

其中,192.168.106.83伺服器上的tomcat是8.5的,當然也可以從其它伺服器上拷貝一個完整的過來,使用命令如下:

[[email protected] local]# ls

apache-tomcat-7.0.73  bin  etc  games  include  java  lib  lib64  libexec  redis  sbin  share  solrcloud  src

[[email protected] local]# pwd

/usr/local

##下面的意思是從當前的/usr/local中將apache-tomcat-7.0.73拷貝到192.168.106.83root使用者下的/usr/local目錄下。

[[email protected] local]# scp -r apache-tomcat-7.0.73 [email protected]:/usr/local/

The authenticity of host '192.168.106.83 (192.168.106.83)' can't be established.

RSA key fingerprint is dc:55:2c:80:6a:9e:3d:a5:56:d7:0d:41:ba:d2:56:3c.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.106.83' (RSA) to the list of known hosts.

[email protected]'s password:

拷貝完後,進入83的/usr/local下檢視內容

[[email protected] local]# pwd

/usr/local

[[email protected] local]# ls

apache-tomcat-7.0.73  apache-tomcat-8.5.12  bin  etc  games  include  jdk1.8.0_73  lib  lib64  libexec  sbin  share  solrcloud  src

[[email protected] local]#

4.2   Zookeeper的安裝步驟

    關於Zookeeper的叢集安裝配置參考:http://blog.csdn.net/tototuzuoquan/article/details/54003140

5   Solr例項的搭建

第一步:在4臺伺服器上分別安裝tomcat,具體的軟體安資訊參考上面的4.1章節。

第二步:將solr-4.10.3.tgz.tgz分別上傳到/home/tuzq/software下。

效果圖如下:

解壓solr-4.10.3.tar.gz壓縮包。

cd /home/tuzq/software

tar –zxvf solr-4.10.3.tgz.tgz

解壓命令執行完成之後執行ls命令,當前所在目錄下多了一個solr-4.10.3

[[email protected] software]# ls

apache-tomcat-8.5.12.tar.gz  jdk-8u73-linux-x64.tar.gz  solr-4.10.3  solr-4.10.3.tgz.tgz

從壓縮包中複製solr.war到tomcat。

其中192.168.106.80、192.168.106.81、192.168.106.82,192.168.106.83這三臺伺服器執行的命令如下:

[[email protected] software]# cd /home/tuzq/software/solr-4.10.3/example/webapps

[[email protected] webapps]# ls

solr.war

[[email protected] webapps]#cp -R solr.war /usr/local/apache-tomcat-7.0.73/webapps

[[email protected] webapps]# cd /usr/local/apache-tomcat-7.0.73/webapps

[[email protected] webapps]# ls

docs  examples  host-manager  manager  ROOT  solr.war

      建立/usr/local/solrcloud這個資料夾,並將/home/tuzq/software/solr-4.10.3/example的solr檔案拷貝到/usr/local/solrcloud,並將solr名稱改成solrhome

[[email protected] local] cd /usr/local

[[email protected] local] mkdir solrcloud

拷貝solr,並改變solr的名稱

[[email protected] example]# cd /home/tuzq/software/solr-4.10.3/example

[[email protected] example]# ls

contexts example-DIH example-schemaless logs README.txt scripts solr-webapp  webapps   etc  exampledocs  lib   multicore  resources   solr     start.jar

[[email protected] example]# cp -R solr /usr/local/solrcloud

[[email protected] example]# cd /usr/local/solrcloud

[[email protected] solrcloud]# ls

solr

[[email protected] solrcloud]#mv solr solrhome

[[email protected] solrcloud]# ls

solrhome

[[email protected] solrcloud]#

     修改solrhome下的solr.xml

[[email protected] solrcloud]# cd solrhome

[[email protected] solrhome]# ls

bin  collection1  README.txt  solr.xml  zoo.cfg

[[email protected] solrhome]# pwd

/usr/local/solrcloud/solrhome

192.168.106.80伺服器上的配置修改如下(其中下面紅色部分表示的tomcat所在的伺服器的ip和埠號):

<solr>

  <solrcloud>

    <str name="host">${host:192.168.106.80}</str>

    <int name="hostPort">${jetty.port:8080}</int>

    <str name="hostContext">${hostContext:solr}</str>

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

  </solrcloud>

  <!—下面的配置暫時不動-->

  <shardHandlerFactory name="shardHandlerFactory"

    class="HttpShardHandlerFactory">

    <int name="socketTimeout">${socketTimeout:0}</int>

    <int name="connTimeout">${connTimeout:0}</int>

  </shardHandlerFactory>

</solr>

    192.168.106.81伺服器上的配置修改如下(其中下面紅色部分表示的tomcat所在的伺服器的ip和埠號):

<solr>

  <solrcloud>

    <str name="host">${host:192.168.106.81}</str>

    <int name="hostPort">${jetty.port:8080}</int>

    <str name="hostContext">${hostContext:solr}</str>

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

  </solrcloud>

  <!—下面的配置暫時不動-->

  <shardHandlerFactory name="shardHandlerFactory"

    class="HttpShardHandlerFactory">

    <int name="socketTimeout">${socketTimeout:0}</int>

    <int name="connTimeout">${connTimeout:0}</int>

  </shardHandlerFactory>

</solr>

     192.168.106.82伺服器上的配置修改如下(其中下面紅色部分表示的tomcat所在的伺服器的ip和埠號):

<solr>

  <solrcloud>

    <str name="host">${host:192.168.106.82}</str>

    <int name="hostPort">${jetty.port:8080}</int>

    <str name="hostContext">${hostContext:solr}</str>

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

  </solrcloud>

  <!—下面的配置暫時不動-->

  <shardHandlerFactory name="shardHandlerFactory"

    class="HttpShardHandlerFactory">

    <int name="socketTimeout">${socketTimeout:0}</int>

    <int name="connTimeout">${connTimeout:0}</int>

  </shardHandlerFactory>

</solr>

192.168.106.83伺服器上的配置修改如下(其中下面紅色部分表示的tomcat所在的伺服器的ip和埠號):

<solr>

  <solrcloud>

    <str name="host">${host:192.168.106.83}</str>

    <int name="hostPort">${jetty.port:8080}</int>

    <str name="hostContext">${hostContext:solr}</str>

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

  </solrcloud>

  <!—下面的配置暫時不動-->

  <shardHandlerFactory name="shardHandlerFactory"

    class="HttpShardHandlerFactory">

    <int name="socketTimeout">${socketTimeout:0}</int>

    <int name="connTimeout">${connTimeout:0}</int>

  </shardHandlerFactory>

</solr>

第三步:重新啟動tomcat(192.168.106.81~83四臺都重啟,以重啟81為例),解壓war包。

[[email protected] bin] cd /usr/local/apache-tomcat-7.0.73/bin

[[email protected] bin]# ./shutdown.sh

[[email protected] bin]# ./startup.sh

#通過下面的命令檢視tomcat啟動情況

[[email protected] bin]# ps -ef | grep tomcat | grep -v grep

#進入webapp目錄下,檢視solr.war的解壓情況

[[email protected] bin] cd /usr/local/apache-tomcat-7.0.73/webapps

[[email protected] webapps]# ls

docs  examples  host-manager  manager  ROOT  solr  solr.war

注意:要先停掉tomcat,然後再刪除這個solr.war

[[email protected] bin] cd /usr/local/apache-tomcat-7.0.73/bin

[[email protected] bin]# ./shutdown.sh

[[email protected] bin] cd /usr/local/apache-tomcat-7.0.73/webapps

[[email protected] webapps]# rm -rf solr.war

[[email protected] webapps]# ls

docs  examples  host-manager  manager  ROOT  solr

#重啟一下tomcat.

[[email protected] bin] cd /usr/local/apache-tomcat-7.0.73/bin

[[email protected] bin]# ./startup.sh

把solr-4.10.3目錄下example目錄下的關於日誌相關的jar包新增到solr工程中。

#新增擴充套件依賴包(日誌包)

[[email protected] ext]# cd /home/tuzq/software/solr-4.10.3/example/lib/ext

[[email protected] ext]# ls

jcl-over-slf4j-1.7.6.jar  jul-to-slf4j-1.7.6.jar  log4j-1.2.17.jar  slf4j-api-1.7.6.jar  slf4j-log4j12-1.7.6.jar

 [[email protected] ext] cp -R * /usr/local/apache-tomcat-7.0.73/webapps/solr/WEB-INF/lib/

cd solr-4.10.3

#在WEB-INFO下建立一個classes目錄

cd /usr/local/apache-tomcat-7.0.73/webapps/solr/WEB-INF

mkdir classes

#將日誌檔案拷貝到classes目錄下

cp -r /home/tuzq/software/solr-4.10.3/example/resources/log4j.properties /usr/local/apache-tomcat-7.0.73/webapps/solr/WEB-INF/classes

第四步:建立solrhome。修改web.xml指定solrhome的位置。

cd /usr/local/apache-tomcat-7.0.73/webapps/solr/WEB-INF

vim web.xml

<env-entry>

<env-entry-name>solr/home</env-entry-name>

<env-entry-value>/usr/local/solrcloud/solrhome</env-entry-value>

<env-entry-type>java.lang.String</env-entry-type>

</env-entry>


6   solr叢集的搭建

6.1   第一步

把solrhome中的配置檔案上傳到zookeeper叢集。使用zookeeper的客戶端上傳。

客戶端命令位置:/home/tuzq/software/solr-4.10.3/example/scripts/cloud-scripts

    使用zookeeper統一管理配置檔案。需要把solrhome下的collection/的conf檔案上傳至zookeeper

執行下邊的命令將/usr/local/solrcloud/solrhome/collection1/conf下的配置檔案上傳到zookeeper(此命令為單條命令,雖然很長。此命令在solr-4.10.3/example/scripts/cloud-scripts/目錄下:

./zkcli.sh -zkhost 192.168.106.80:2181,192.168.106.81:2181,192.168.106.82:2181 -cmd upconfig -confdir /usr/local/solrcloud/solrhome/collection1/conf -confname myconf

紅色字型部分的ip表示zookeeper叢集的ip地址以及對應的埠。

 

檢視配置檔案是否上傳成功:

[[email protected] bin]# cd /home/tuzq/software/zookeeper/bin

[[email protected] bin]# ./zkCli.sh

Connecting to localhost:2181

 [zk: localhost:2181(CONNECTED) 8] ls /

[configs, zookeeper, myboys, mygirls]

[zk: localhost:2181(CONNECTED) 1] ls /configs

[myconf]

 [zk: localhost:2181(CONNECTED) 13] ls /configs/myconf

[currency.xml, mapping-FoldToASCII.txt,protwords.txt, scripts.conf, synonyms.txt, stopwords.txt, velocity,_schema_analysis_synonyms_english.json, admin-extra.html, update-script.js,_schema_analysis_stopwords_english.json, solrconfig.xml,admin-extra.menu-top.html, elevate.xml, schema.xml, clustering,mapping-ISOLatin1Accent.txt, spellings.txt, xslt, _rest_managed.json, lang,admin-extra.menu-bottom.html]

[zk: localhost:2181(CONNECTED) 14]

6.2   第三步

修改每一臺solr的tomcat 的 bin目錄下catalina.sh檔案中加入DzkHost指定zookeeper伺服器地址:

[[email protected] bin]#cd /usr/local/apache-tomcat-7.0.73/bin

[[email protected] bin]#vim catalina.sh

JAVA_OPTS="-DzkHost=192.168.106.80:2181,192.168.106.81:2181,192.168.106.82:2181"        

紅色字型的ip表示zookeeper叢集的ip以及埠號(注意:每個之間的逗號之間不允許有空格)

(可以使用vim的查詢功能查詢到JAVA_OPTS的定義的位置,然後新增,可以在catalina.sh的第二行新增)


6.4   第四步

重新啟動tomcat

一個主節點多個備份節點,叢集只有一片。

6.5   第五步

建立一個兩片的collection,每片是一主一備。

使用以下命令建立:

 


6.6   第六步

刪除collection1.

http://192.168.106.81:8080/solr/admin/collections?action=DELETE&name=collection1

 

7、配置dataimport外掛

1、  將/home/tuzq/software/solr-4.10.3下的contrib和dist拷貝到/usr/local/solrcloud(四臺伺服器都需要這樣做)

[[email protected] solr-4.10.3]# cd /home/tuzq/software/solr-4.10.3

[[email protected] solr-4.10.3]# cp -R contrib /usr/local/solrcloud

[[email protected] solr-4.10.3]# cp -R dist /usr/local/solrcloud

使用下面的方式將資料匯入所需的jar放到相應的位置:

[[email protected] contrib]# cd /usr/local/solrcloud/contrib

[[email protected] contrib]# mkdir db

[[email protected] contrib]# cd db

[[email protected] db]# mkdir lib

進入:/home/tuzq/software/solr-4.10.3/dist,將: solr-dataimporthandler-4.10.3.jar、solr-dataimporthandler-extras-4.10.3.jar放到

solr-dataimporthandler-4.10.3.jar  solr-dataimporthandler-extras-4.10.3.jar最終上傳到lib資料夾下

最後的效果如下:

[[email protected] lib]# pwd

/usr/local/solrcloud/contrib/dataimporthandler/lib

[[email protected] lib]# ls

solr-dataimporthandler-4.10.3.jar  solr-dataimporthandler-extras-4.10.3.jar

[[email protected] lib]#

最終將mysql-connector-java-5.1.38.jar放入到:/usr/local/solrcloud/contrib/db/lib中

cd /usr/local/solrcloud/contrib/db/lib

最終效果如下:

[[email protected] lib]# pwd

/usr/local/solrcloud/contrib/db/lib

[[email protected] lib]# ls

mysql-connector-java-5.1.38.jar

[[email protected] lib]#

[[email protected] lib] cd /usr/local/apache-tomcat-7.0.73/webapps/solr/WEB-INF/lib

將IKAnalyzer2012_FF.jar和IKAnalyzer2012FF_u1.jar放入到該資料夾下:

將IK-Analyzer-2012FF\src下的ext.dic、IKAnalyzer.cfg.xml、stopword.dic上傳到:/usr/local/apache-tomcat-7.0.73/webapps/solr/WEB-INF/classes

3、  以192.168.106.80為例,發現在之前放置的如下檔案/usr/local/solrcloud/solrhome/collection1/conf,已經在建立叢集的時候給刪除了。這時候進入:/home/tuzq/software/solr-4.10.3/example/solr/collection1/conf,在下面建立一個data-config.xml檔案,檔案內容是:

<?xml version="1.0" encoding="UTF-8" ?> 

<dataConfig>  

         <dataSource type="JdbcDataSource"  

                     driver="com.mysql.jdbc.Driver"  

                     url="jdbc:mysql://192.168.106.80:3306/solr"

                     user="root"  

                     password="123456"/>

         <document>  

                   <entity name="product" query="SELECT pid,name,catalog,catalog_name,price,description,picture FROM products">

                             <field column="pid" name="id"/>

                             <field column="name" name="product_name"/>

                             <field column="catalog" name="product_catalog"/>

                             <field column="catalog_name" name="product_catalog_name"/>

                             <field column="price" name="product_price"/>

                             <field column="description" name="product_description"/>

                             <field column="picture" name="product_picture"/>

                   </entity>  

         </document>

</dataConfig>

修改schema.xml:

內容如下:


<fieldType name="text_ik" class="solr.TextField">

      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

    </fieldType>

         <!--定義field,指定field的type屬性為text_ik-->

         <field name="title_ik" type="text_ik" indexed="true" stored="true" />

    <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

         <!-- 商品名稱 -->

         <field name="product_name" type="text_ik" indexed="true" stored="true" />

         <!-- 商品分類id -->

         <field name="product_catalog" type="string" indexed="true" stored="true" />

         <!-- 商品分類名稱 -->

         <field name="product_catalog_name" type="string" indexed="true" stored="true" />

         <!-- 商品價格 -->

         <field name="product_price" type="float" indexed="true" stored="true" />

         <!-- 商品描述 -->

         <field name="product_description" type="text_ik" indexed="true" stored="false" />

         <!-- 商品圖片 -->

         <field name="product_pic" type="string" indexed="false" stored="true" />

         <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

         <!--

         使用複製域、將product_name和product_description

         都複製到product_keywords,當搜尋product_keywords的時候

         -->

         <copyField source="product_name" dest="product_keywords"/>

         <copyField source="product_description" dest="product_keywords"/>

<lib dir="${solr.install.dir:../..}/contrib/extraction/lib" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="${solr.install.dir:../..}/contrib/clustering/lib/" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="${solr.install.dir:../..}/contrib/langid/lib/" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="${solr.install.dir:../..}/contrib/velocity/lib" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-velocity-\d.*\.jar" />

  <lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib" regex=".*\.jar"/>

  <lib dir="${solr.install.dir:../..}/contrib/db/lib" regex=".*\.jar"/>

接著將/home/tuzq/software/solr-4.10.3/example/solr/collection1/conf中的配置檔案上傳到zookeeper。

進入/home/tuzq/software/solr-4.10.3/example/scripts/cloud-scripts:

執行如下命令:

cd /home/tuzq/software/solr-4.10.3/example/scripts/cloud-scripts

./zkcli.sh -zkhost 192.168.106.80:2181,192.168.106.81:2181,192.168.106.82:2181 -cmd upconfig -confdir /home/tuzq/software/solr-4.10.3/example/solr/collection1/conf -confname myconf

接著訪問:http://192.168.106.80:8080/solr


點選data-config.xml檔案

結果如下(發現數據庫連線已經修改過來了):

重啟tomcat叢集。

[[email protected] bin] cd /usr/local/apache-tomcat-7.0.73/bin

[[email protected] bin]# ./shutdown.sh

[[email protected] bin]# ./startup.sh

接著訪問:http://192.168.106.80:8080/solr/

直接執行Execute,發現可以進行資料同步了。

 

最後:

進入

執行查詢之後,發現右側已經有資料了。

 ============================================

最後,solr叢集搭建好之後,就可以用於呼叫了,案例如下(關於jar的獲取參考:http://blog.csdn.net/tototuzuoquan/article/details/61709204):

相關推薦

Solr叢集搭建zookeeper叢集搭建Solr分片管理Solr叢集DataImport配置

1   什麼是SolrCloud  SolrCloud(solr 雲)是Solr提供的分散式搜尋方案,當你需要大規模,容錯,分散式索引和檢索能力時使用 SolrCloud。當一個系統的索引資料量少的時候是不需要使用SolrCloud的,當索引量很大,搜尋請求併發很高,這時需要

【Google、在奮鬥】不要總想著未來因為未來不是你想的那樣、沉做下去不去患得患失

Github地址: https://github.com/Jay-Goo 強大的Seekbar: https://github.com/Jay-Goo/RangeSeekBar 漂亮的多選框: https://github.com/Jay-Goo/MultiSelectPop

Tika提取pdf文字的內容並用IKAnalyzer進行處理

package test; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.tika.metadata.Metadata;

搜尋引擎solr系列---solr配置

  分詞我理解的是,輸入的一句話,按照它自己定義的規則分為常用詞語。 首先,Solr有自己基本的型別,string、int、date、long等等。   對於string型別,比如在你的core/conf/manage-schema檔案中,配置一個欄位型

solr中ik配置同義詞、停止、自定義

版本說明(不同版本配置可能不同): solr : 5.0.0  ik: IKAnalyzer2012FF_u2.jar 一、停止詞和自定義詞庫  IKAnalyzer2012FF_u2.jar複製到solr-5.0.0/server/solr-webapp/webapp/W

solrCloud叢集搭建solr-6.5.1zookeeper-3.4.10)

Solr 是一個基於 Apache Lucene 之上的搜尋伺服器,它是一個開源的、基於 Java 的、執行在Servlet容器(如Apache Tomcat或Jetty)的資訊檢索庫。它旨在驅動功能強大的文件檢索應用程式 - 無論您需要根據使用者的查詢將資料服務到何處,Solr 都可以為您服務

伺服器叢集熱備搭建思路

之前在公司搭建的叢集伺服器,用的6臺伺服器做的叢集,現在有時間記錄下整體思路,本文是個人搭建伺服器的思路,供參考。 所用資源:ip:一個移動,一個聯通。分別為100MBps           

elasticsearch5.x叢集搭建ikhead外掛

目標: 1,安裝elasticsearch叢集(一個伺服器,兩個節點) 2,安裝head外掛 3,使用ik分詞器 現狀: 1,系統centos6.9+jdk1.8 2,提前修改好ulimit,調整

主從DNS伺服器叢集搭建同步更新及加密DDNS的搭建

主從DNS伺服器叢集的搭建 前面的內容已經講到如何搭建DNS伺服器了,現在要給主DNS伺服器配置其他從屬DNS伺服器來分擔壓力 主伺服器: vim /etc/named.conf還原配置 vim /etc/named.rfc1912.zones 修改引數如下:當主DNS有更新時

高效能高併發網站架構教你搭建Redis5快取叢集

一、Redis叢集介紹 Redis真的是一個優秀的技術,它是一種key-value形式的NoSQL記憶體資料庫,由ANSI C編寫,遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 Redis最大的特性是它會將所有資料都放在記憶體中,所以讀寫速度效

Solr叢集搭建詳細教程(二) Solr服務在Linux上的搭建詳細教程

三、solr叢集搭建 注意,在搭建solr叢集前,建議最好有一個solr服務是已經搭建好的,可以簡化大量重複的配置操作。 單機solr服務搭建過程參看我的這篇文章: Solr服務在Linux上的搭建詳細教程 這個單機solr服務在solr叢集搭建第二步和第三步裡需要,搭建好一個solr服務後,就可以進

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

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

本地搭建hadoop叢集--hbase和zookeeper的安裝

zookeeper的安裝 1、解壓tar包 2、修改配置檔案 cd conf cp -a zoo_sample.cfg zoo.cfg vim zoo.cfg 配置 dataDir=/opt/module/zookeeper-3.4.12/data 以

品優購專案筆記day01——(SOA架構Dubbox及小demoZookeeper專案打包管理中心linux環境部署與專案架構搭建

此部落格是為了記錄業餘時間每一天課程的所學 1.什麼是SOA架構 SOA是Service-Oriented Architecture的首字母簡稱,它是一種支援面向服務的架構樣式。從服務、基於服務開發和服務的結果來看,面向服務是一種思考方式。其實SOA架構更多應用於網際網路專案開發。

Spark叢集搭建+基於zookeeper的高可用HA

export JAVA_HOME=/usr/java/jdk1.8.0_20/ export SCALA_HOME=/home/iespark/hadoop_program_files/scala-2.10.6/ export HADOOP_HOME=/home/iespark/hadoop_program

ZooKeeper搭建叢集模式

        在叢集和單機兩種模式下,我們基本完成了分別針對生產環境和開發環境ZooKeeper服務的搭建,已經可以滿足絕大多數場景了。         現在我們再來看看另外一種情況,如果你手上有且只有一臺比較好的機器(大體是——CPU核數大於10,記憶體大於等於8GB)

Hadoop2.7.3 HA高可靠性叢集搭建(Hadoop+Zookeeper)

一.概述       在hadoop1時代,只有一個NameNode。如果該NameNode資料丟失或者不能工作,那麼整個叢集就不能恢復了。這是hadoop1中的單點問題,也是hadoop1不可靠的表現。    

Linux基於Hadoop的大資料環境搭建步驟詳解(HadoopHiveZookeeperKafkaFlumeHbaseSpark等安裝與配置

Linux下基於Hadoop的大資料環境搭建步驟詳解(Hadoop,Hive,Zookeeper,Kafka,Flume,Hbase,Spark等安裝與配置) 系統說明 搭建步驟詳述 一、節點基礎配置 二、H

淘淘商城23_Linux上的操作_solr叢集搭建zookeeper叢集搭建

安裝包連結: 百度網盤: 連結:https://pan.baidu.com/s/13m_kjoZiN2cVH_nIGs0a9w  提取碼:be17    一、概念理解 1. 什麼是SolrCloud SolrCloud(solr 雲)是So

hadoop分散式搭建(+zookeeper6臺機器)

前期準備(這裡使用的centOS6,hadoop2.2.0【這是64位的hadoop2.2.0的安裝包和原始碼包下載地址:http://download.csdn.net/detail/vinsuan1993/9812599】): 1.修改Linux主機名 2.修改IP