1. 程式人生 > >Solr入門學習(一)—— Solr 的安裝、啟動與關閉

Solr入門學習(一)—— Solr 的安裝、啟動與關閉

Server : Ubuntu 16.04
Java Version : 1.8
Solr Version : 7.4.0

Solr 下載與安裝

首先,到 http://lucene.apache.org/solr/downloads.html 獲取 Solr 的下載地址,然後使用 wget 命令下載到伺服器上。

wget http://mirror.bit.edu.cn/apache/lucene/solr/7.4.0/solr-7.4.0.tgz

下載完成後解壓檔案。

tar -zxvf solr-7.4.0.tgz

檢視當前目錄,發現 Solr 已安裝到本地。

[email protected]:/usr/local/java# ls
activemq  hadoop  jdk1.8.0_161  kafka  solr-7.4.0  zookeeper

Solr 的啟動

為了啟動 Solr,我們需要到 Solr 安裝檔案下的 bin 目錄裡執行啟動指令碼,如下所示:

cd /usr/local/java/solr-7.4.0/bin/
./solr start -e cloud

該命令會在本地啟動 Solr 叢集。

不過,輸入該命令後,Solr 不會馬上啟動,還有幾個步驟需要完成。

1. 設定節點數

執行啟動命令後,Solr 首先會顯示提示語:

Welcome to the SolrCloud example!

This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:

這邊要求我們設定啟動節點數,預設是 2。這裡我們直接按 ENTER 鍵選擇預設選項。

2.設定埠號

接著,Solr 提示我們設定埠號:

Ok, let's start up 2 Solr nodes for your example SolrCloud cluster.
Please enter the port for node1 [8983]:

如果 Solr 預設埠沒有被佔用且我們沒有特殊需求,直接按 ENTER 選擇預設埠即可。

此時,Solr 會為我們的兩個節點分別分配預設埠號 89837857,並在兩個節點上初始化例項。此外,Solr 還會啟動內建的 Zookeeper,並將以上兩個節點註冊到 Zookeeper 上。成功執行的資訊如下:

Starting up Solr on port 8983 using command:
"/usr/local/java/solr-7.4.0/bin/solr" start -cloud -p 8983 -s "/usr/local/java/solr-7.4.0/example/cloud/node1/solr"

Waiting up to 180 seconds to see Solr running on port 8983 [\]  
Started Solr server on port 8983 (pid=1898). Happy searching!
      
Starting up Solr on port 7574 using command:
"/usr/local/java/solr-7.4.0/bin/solr" start -cloud -p 7574 -s "/usr/local/java/solr-7.4.0/example/cloud/node2/solr" -z localhost:9983

Waiting up to 180 seconds to see Solr running on port 7574 [\]  
Started Solr server on port 7574 (pid=2105). Happy searching!

- 2018-08-10 17:05:06.693; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at localhost:9983 ready

3.建立集合

啟動成功後,Solr 會提示你建立集合,這裡我們輸入 testCollection 並按 ENTER 鍵確認。

Now let's create a new collection for indexing documents in your 2-node cluster.
Please provide a name for your new collection: [gettingstarted] 
testCollection

接著,Solr 會提示你設定分片數和副本數,這裡直接都按預設處理。

4.指定配置

建立集合後,Solr 會要求你指定配置檔案集。

Please choose a configuration for the testCollection collection, available options are:
_default or sample_techproducts_configs [_default]

關於這個配置檔案集,官網給的說明是這樣:

A collection must have a configSet, which at a minimum includes the two main configuration files for Solr: the schema file (named either managed-schema or schema.xml), and solrconfig.xml.

意思就是,每個集合必須指定一個 configSet,且這個 configSet 至少要包含兩個主要的配置檔案: schema 檔案和 solrconfig.xml 檔案。

這裡我們注意到,Solr 提示我們目前有兩個可用的配置檔案集選項,分別是 _defaultsample_techproducts_configs。這兩者實際上是 Solr 預設好的配置檔案集,使用者可以直接使用。由於後續示例需要,這裡我們選擇 sample_techproducts_configs,按 ENTER 鍵確認。

至此,Solr 啟動成功,我們可以看到如下資訊輸出:

Created collection 'testCollection' with 2 shard(s), 2 replica(s) with config-set 'testCollection'

Enabling auto soft-commits with maxTime 3 secs using the Config API

POSTing request to Config API: http://localhost:8983/solr/testCollection/config
{"set-property":{"updateHandler.autoSoftCommit.maxTime":"3000"}}
Successfully set-property updateHandler.autoSoftCommit.maxTime to 3000


SolrCloud example running, please visit: http://localhost:8983/solr

現在,我們可以通過 http://localhost:8983/solr 訪問 Solr 的 Web 管理頁面了!

注:啟動過程中遇到 N 個問題,均記錄在文章底部。


Solr 的關閉與重啟

關閉 Solr 是一件比較簡單的事情,只需執行以下命令即可:

[email protected]:/usr/local/java/solr-7.4.0/bin# ./solr stop -all
Sending stop command to Solr running on port 8983 ... waiting up to 180 seconds to allow Jetty process 1898 to stop gracefully.
Sending stop command to Solr running on port 7574 ... waiting up to 180 seconds to allow Jetty process 2105 to stop gracefully.

如果想針對某埠進行關閉,只需加入埠引數與埠號:

solr stop -p 8983

但是,Solr 的重啟和我們的初次啟動略有不同。

首先,我們要啟動第一個節點:

[email protected]:/usr/local/java/solr-7.4.0/bin$ ./solr start -c -p 8983 -s ../example/cloud/node1/solr
Waiting up to 180 seconds to see Solr running on port 8983 [\]  
Started Solr server on port 8983 (pid=16514). Happy searching!

第一個節點啟動成功後,我們開始啟動第二個節點,並告訴它如何連線 Zookeeper:

panda:/usr/local/java/solr-7.4.0/bin$ ./solr start -c -p 7574 -s ../example/cloud/node2/solr -z localhost:9983
Waiting up to 180 seconds to see Solr running on port 7574 [\]  
Started Solr server on port 7574 (pid=16735). Happy searching!

現在,我們可以繼續使用 Solr 了!


遇到的問題

問題1:Max Processes Limit

筆者用的伺服器是阿里雲的超低配版本,預設的最大限制使用者程序數是 7857,因此在啟動 Solr 時就馬上看到警告:

*** [WARN] ***  Your Max Processes Limit is currently 7857. 
 It should be set to 65000 to avoid operational disruption. 
 If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh

原本想只是一個警告罷了,忽略就好,結果還是 GG 了。

ERROR: Failed to start Solr using command: "/usr/local/java/solr-7.4.0/bin/solr" start -cloud -p 8983 -s "/usr/local/java/solr-7.4.0/example/cloud/node1/solr" Exception : org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)

既然這樣,那就只能正視問題了。

首先,檢視一下系統限制的最大使用者程序數:

[email protected]:/# ulimit -u
7857

確認是 7857 沒錯了。

那麼現在,我們需要解決的就是更改這個預設值。在筆者的環境中,max user processes 可以在 /etc/security/limits.conf 檔案中進行設定,格式為<domain> <type> <item> <value>,詳情如下:

root soft nproc 65535
root hard nproc 65535
* soft nproc 65535
* hard nproc 65535

儲存後重啟會話,發現該值已經變成 65535 了。

[email protected]:~# ulimit -u
65535

注:CentOS 的配置檔案似乎在 /etc/security/limits.d 資料夾下。

問題2:不能使用 root 使用者

解決了上一個問題後,筆者歡快地重新嘗試啟動 Solr:

WARNING: Starting Solr as the root user is a security risk and not considered best practice. Exiting.
         Please consult the Reference Guide. To override this check, start with argument '-force'

ERROR: Failed to start Solr using command: "/usr/local/java/solr-7.4.0/bin/solr" start -cloud -p 8983 -s "/usr/local/java/solr-7.4.0/example/cloud/node1/solr" Exception : org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)

orz,結果告訴筆者不能用 root 使用者啟動 Solr。當然,可以使用 -force 引數強行跳過這個檢測,但既然官方說這樣做不好,那就乖乖聽話吧。(換使用者就換使用者,您開心就好。)

su panda
問題3:檔案讀寫許可權

筆者又滿心歡喜地重新嘗試啟動 Solr:

ERROR: Logs directory /usr/local/java/solr-7.4.0/example/cloud/node1/solr/../logs could not be created. Exiting

ERROR: Failed to start Solr using command: "/usr/local/java/solr-7.4.0/bin/solr" start -cloud -p 8983 -s "/usr/local/java/solr-7.4.0/example/cloud/node1/solr" Exception : org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)

結果被告知沒有許可權建立日誌檔案。

好吧,才想起來自己現在不是 root 使用者,要先為 Solr 資料夾設定檔案讀寫許可權。

[email protected]:/usr/local/java# chmod -R 777 solr-7.4.0/

OK,至此所有問題都解決啦!

相關推薦

Solr入門學習—— Solr安裝啟動關閉

Server : Ubuntu 16.04 Java Version : 1.8 Solr Version : 7.4.0 Solr 下載與安裝 首先,到 http://lucene.apache.org/solr/downloads.html 獲取 Sol

Python入門學習安裝Eclipse開發環境

  近日,山東省在其最新出版的小學資訊科技六年級教材中,加入了Python的內容。      簡單來說,Python是一種廣泛使用的高階程式語言,屬於通用型程式語言,由荷蘭人Guido van Rossum創造。它的第一版釋出於1991年。由於可擴充套件性,

Solr入門學習—— Solr 的基本查詢

Server : Ubuntu 16.04 Java Version : 1.8 Solr Version : 7.4.0 資料準備 Solr 剛剛安裝後,是沒有任何資料的,所以此時我們無法進行任何查詢。幸運的是,官方為使用者提供了索引工具以及樣本資料,方便

maven入門淺析-----maven安裝配置建立專案骨架編譯測試打包執行

一、下載及安裝 1.1 下載maven 3.2.5 先到官網http://maven.apache.org/download.cgi 下載3.2.5版本(目前最新是3.3.9),下載完成後,解壓到某個目錄(本文中是E:\apachemaven) 2.1 配置環境變數 系統

curator原始碼 初始化啟動關閉

Curator框架是zookeeper客戶端框架,官網有句話說的很簡潔:curator對於zookeeper就像Guava對於java。 重複策略,例項化,眾多實用的食譜選單(分散式鎖,計數器,佇列,柵欄,訊號量,路徑快取)。 初始化 1.直接呼叫

solr學習-solr 7.2.1搭建windows系統

1、下載solr,官方地址:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.2.1/,下載檔案solr-7.2.1.zip;2、安裝java8並配置環境變數;3、下載tomcat8;4、solr7.2.1解壓

MySQL學習ODBC 安裝

oca local new cmd 密碼 服務 關閉 mysql 系統 寫前說明 初次接觸MySQL,都說MySQL各種好。我也來學習學習。之前只有SQLServer2008的經驗,其實也只是皮毛。因為SQLServer還是比較容易上手的。也不麻煩。但是自己

win10系統docker學習——docker安裝

tle png 問題: 方案 start htm 完成後 系統 mage windows系統中目前有兩種安裝docker的方式,分別為boot2docker和docker toolbox。按照官方說明和實際安裝過程來講,推薦使用docker toolbox方

VueJS入門學習

try pre 發的 沒有 cnpm lan light install 上一個   剛剛接觸VueJs的時候,還不懂NodeJs是什麽,單頁面應用是什麽?隨著慢慢的深入慢慢的理解了這些東西。簡單介紹一些VueJs,一個頁面一個Vue實例,包含了頁面中控件所需要的方法,事件

NS3入門學習之指令碼執行例項

 ns3中使用的編譯系統是waf,所有的c++工程都需要經過waf編譯後執行,除錯時也需要waf的。 在3.1.3中還是使用C++寫指令碼,在/ns-3.1.3/examples/tutorial/的second.cc指令碼中可以看出來,在3.2.6以上版本中已經增加了python

MySQL學習資料庫安裝配置全程圖解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

OpenCV入門學習

OpenCV入門學習(2) IplImage* img = cvLoadImage(argv[1]); 上面的函式程式碼聲明瞭一個IPLImage* 影象指標,然後根據影象名稱的字串argv[1],將影象載入到記憶體中。 影象結構體IplImage IplImage

Dart 入門學習1—— 環境安裝

寫在前面: 最近同事介紹說flutter不錯,想學習一下,於是就看了看。Flutter 使用 dart 寫的,所以需要先學習一下dart 語言。 Dart 的學習主要就從這兩個網站來看了。其中中文社群中的Dart 學習筆記非常全面,值得認真閱讀。 環境安裝:

Java NIO入門學習

本文為NIO入門學習的第一篇,將會介紹NIO中幾個重要的概念。 I/O即輸入輸出,指的是計算機和外界的介面,或者是單個程式同計算機其他部分的介面。 在Java1.4之前的I/O系統中,提供的都是面向流的I/O系統,系統每次處理一個位元組,輸入流(input stream)生

基於c++的網路開發庫boost.Asio學習 Ubuntu安裝boost以及問題解決

執行環境:Ubuntu 12.04   版本: boost 1.68 下載網址:http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download

RabbitMQ學習-RabbitMQ安裝

一、rabbitmq安裝過程: cd ~/Downloads/ mkdir rabbitmq cd rabbitmq/ wget http://www.rabbitmq.com/releases/r

dotConnect for Oracle入門指南安裝

【下載dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技術上,為基於Oracle資料庫的應用程式提供完整的解決方案。它為設計應用程式結構帶來了新的方法,提高工作效率,使資料庫應用程式的開發更簡便。 d

Mybatis框架入門學習

什麼是MyBatis?        MyBatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java

Linux執行緒入門學習-認識執行緒

1. 執行緒的概念 執行緒,又稱輕量級程序,是程序中執行運算的最小單位,是程序中的一個實體,是被系統獨立排程和分派的基本單位,主要有以下特點: 1)執行緒自己不擁有系統資源,只擁有一點在執行中必不可少的資源; 2)與同屬一個程序的其它執行緒共享程序所擁有的全

Hibernate入門學習

都說年底了,大夥應該都在衝回款,忙的不可開交啊啥的。唯獨我這個剛轉正三個月的閒來無事,只得在上班時間來給自己充充電,也不好玩別的,畢竟剛來公司不久,沒有那些老鳥膽子大,凡事低調點,就開始看起了視訊。下面簡單記錄下自己學習到的東西,今天一天看了Hibernate的學習視訊,自