A. linux怎樣設置solr開機啟動
linux系統開機啟瞎歷廳動腳本爛含 /etc/init.d
裡面添磨隱加你的程序啟動命令。
B. 安裝solr前必須安裝Tomcat嗎solr在Linux中的安裝方法有哪幾種
不用 開發的時候 也可以使用jettey 來運行
C. 如何用Solr搭建大數據查詢平台
0×00 開頭照例扯淡
自從各種脫褲門事件開始層出不窮,在下就學乖了,各個地方的密碼全都改成不一樣的,重要帳號的密碼定期更換,生怕被人社出祖宗十八代的我,甚至開始用起了旦銀假名字,我給自己起一新網名」興才」,這個看起來還不錯的名字,其實是我們家鄉罵人土話,意思是腦殘人士…. -_-|||額好吧,反正是假的,不要在意這些細節。
這只是名,至於姓氏么,每個帳號的注冊資料那裡,照著百家姓上趙錢孫李周吳鄭王的依次往下排,什麼張興才、李興才、王興才……於是也不知道我這樣」興才」了多久,終於有一天,我接到一塵斗個陌生電話:您好,請問是馬興才先生嗎?
好么,該來的終於還是模兄宴來了,於是按名索驥,得知某某網站我用了這個名字,然後通過各種途徑找,果然,那破站被脫褲子了。
果斷Down了那個褲子,然後就一發不可收拾,走上了收藏褲子的不歸路,直到有一天,我發現收藏已經非常豐富了,粗略估計得好幾十億條數據,拍腦袋一想,這不能光收藏啊,我也搭個社工庫用吧……
0×01 介紹
社工庫怎麼搭呢,這種海量數據的東西,並不是簡單的用mysql建個庫,然後做個php查詢select * from sgk where username like 『%xxxxx%』這樣就能完事的,也不是某些幼稚騷年想的隨便找個4g內存,amd雙核的破電腦就可以帶起來的,上面這樣的語句和系統配置,真要用於社工庫查詢,查一條記錄恐怕得半小時。好在這個問題早就被一種叫做全文搜索引擎的東西解決了,更好的消息是,全文搜索引擎大部分都是開源的,不需要花錢。
目前網上已經搭建好的社工庫,大部分是mysql+coreseek+php架構,coreseek基於sphinx,是一款優秀的全文搜索引擎,但缺點是比較輕量級,一旦數據量過數億,就會有些力不從心,並且搭建集群做分布式性能並不理想,如果要考慮以後數據量越來越大的情況,還是得用其他方案,為此我使用了solr。
Solr的基礎是著名的Lucene框架,基於java,通過jdbc介面可以導入各種資料庫和各種格式的數據,非常適合開發企業級的海量數據搜索平台,並且提供完善的solr cloud集群功能,更重要的是,solr的數據查詢完全基於http,可以通過簡單的post參數,返回json,xml,php,python,ruby,csv等多種格式。
以前的solr,本質上是一組servlet,必須放進Tomcat才能運行,從solr5開始,它已經自帶了jetty,配置的好,完全可以獨立使用,並且應付大量並發請求,具體的架構我們後面會講到,現在先來進行solr的安裝配置。
0×02 安裝和配置
以下是我整個搭建和測試過程所用的硬體和軟體平台,本文所有內容均在此平台上完成:
軟體配置: solr5.5,mysql5.7,jdk8,Tomcat8 Windows10/Ubuntu14.04 LTS
硬體配置: i7 4770k,16G DDR3,2T西數黑盤
2.1 mysql資料庫
Mysql資料庫的安裝和配置我這里不再贅述,只提一點,對於社工庫這種查詢任務遠遠多於插入和更新的應用來說,最好還是使用MyISAM引擎。
搭建好資料庫後,新建一個庫,名為newsgk,然後創建一個表命名為b41sgk,結構如下:
id bigint 主鍵 自動增長
username varchar 用戶名
email varchar 郵箱
password varchar 密碼
salt varchar 密碼中的鹽或者第二密碼
ip varchar ip、住址、電話等其他資料
site varchar 資料庫的來源站點
接下來就是把收集的各種褲子全部導入這個表了,這里推薦使用navicat,它可以支持各種格式的導入,具體過程相當的枯燥乏味,需要很多的耐心,這里就不再廢話了,列位看官自己去搞就是了,目前我初步導入的數據量大約是10億條。
2.2 Solr的搭建和配置
首先下載solr:
$ wget http://mirrors.hust.e.cn/apache/lucene/solr/5.5.0/solr-5.5.0.tgz
解壓縮:
$ tar zxvf solr-5.5.0.tgz
安裝jdk8:
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ sudo apt-get install oracle-java8-set-default
因為是java跨平台的,Windows下和linux下solr是同一個壓縮包,windows下jdk的安裝這里不再說明。
進入解壓縮後的solr文件夾的bin目錄,solr.cmd和solr分別是windows和linux下的啟動腳本:
因為社工庫是海量大數據,而jvm默認只使用512m的內存,這遠遠不夠,所以我們需要修改,打開solr.in.sh文件,找到這一行:
SOLR_HEAP=」512m」
依據你的數據量,把它修改成更高,我這里改成4G,改完保存. 在windows下略有不同,需要修改solr.in.cmd文件中的這一行:
set SOLR_JAVA_MEM=-Xms512m -Xmx512m
同樣把兩個512m都修改成4G。
Solr的啟動,重啟和停止命令分別是:
$ ./solr start
$ ./solr restart –p 8983
$ ./solr stop –all
在linux下還可以通過install_solr_service.sh腳本把solr安裝為服務,開機後台自動運行。
Solr安裝完成,現在我們需要從mysql導入數據,導入前,我們需要先創建一個core,core是solr的特有概念,每個core是一個查詢、數據,、索引等的集合體,你可以把它想像成一個獨立資料庫,我們創建一個新core:
在solr-5.5.0/server/solr子目錄下面建立一個新文件夾,命名為solr_mysql,這個是core的名稱,在下面創建兩個子目錄conf和data,把solr-5.5.0/solr-5.5.0/example/example-DIH/solr/db/conf下面的所有文件全部拷貝到我們創建的conf目錄中.接下來的配置主要涉及到三個文件, solrconfig.xml, schema.xml和db-data-config.xml。
首先打開db-data-config.xml,修改為以下內容:
<dataConfig>
<dataSource name="sgk" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/newsgk" user="root" password="password" batchSize="-1" />
<document name="mysgk">
<entity name="b41sgk" pk="id" query="select * from b41sgk">
<field column="id" name="id"/>
<field column="username" name="username"/>
<field column="email" name="email"/>
<field column="password" name="password"/>
<field column="salt" name="salt"/>
<field column="ip" name="ip"/>
<field column="site" name="site"/>
</entity>
</document>
</dataConfig>
這個文件是負責配置導入數據源的,請按照mysql實際的設置修改datasource的內容,下面entity的內容必須嚴格按照mysql中社工庫表的結構填寫,列名要和資料庫中的完全一樣。
然後打開solrconfig.xml,先找到這一段:
<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>
把它全部注釋掉,加上一行,改成這樣:
<!-- <schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>-->
<schemaFactory class="ClassicIndexSchemaFactory"/>
這是因為solr5 以上默認使用managed-schema管理schema,需要更改為可以手動修改。
然後我們還需要關閉suggest,它提供搜索智能提示,在社工庫中我們用不到這樣的功能,重要的是,suggest會嚴重的拖慢solr的啟動速度,在十幾億數據的情況下,開啟suggest可能會導致solr啟動載入core長達幾個小時!
同樣在solrconfig.xml中,找到這一段:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str> <!-- org.apache.solr.spelling.suggest.fst -->
<str name="dictionaryImpl">DocumentDictionaryFactory</str> <!-- org.apache.solr.spelling.suggest. -->
<str name="field">cat</str>
<str name="weightField">price</str>
<str name="suggestAnalyzerFieldType">string</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
把這些全部刪除,然後保存solrconfig.xml文件。
接下來把managed-schema拷貝一份,重命名為schema.xml (原文件不要刪除),打開並找到以下位置:
只保留_version_和_root_節點,然後把所有的field,dynamicField和Field全部刪除,添加以下的部分:
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="username" type="text_ik" indexed="true" stored="true"/>
<field name="email" type="text_ik" indexed="true" stored="true"/>
<field name="password" type="text_general" indexed="true" stored="true"/>
<field name="salt" type="text_general" indexed="true" stored="true"/>
<field name="ip" type="text_general" indexed="true" stored="true"/>
<field name="site" type="text_general" indexed="true" stored="true"/>
<field name="keyword" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<Field source="username" dest="keyword"/>
<Field source="email" dest="keyword"/>
<uniqueKey>id</uniqueKey>
這里的uniqueKey是配置文件中原有的,用來指定索引欄位,必須保留。新建了一個欄位名為keyword,它的用途是聯合查詢,即當需要同時以多個欄位做關鍵字查詢時,可以用這一個欄位名代替,增加查詢效率,下面的Field即用來指定復制哪些欄位到keyword。注意keyword這樣的欄位,後面的multiValued屬性必須為true。
username和email以及keyword這三個欄位,用來檢索查詢關鍵字,它們的類型我們指定為text_ik,這是一個我們創造的類型,因為solr雖然內置中文分詞,但效果並不好,我們需要添加IKAnalyzer中文分詞引擎來查詢中文。在https://github.com/EugenePig/ik-analyzer-solr5下載IKAnalyzer for solr5的源碼包,然後使用Maven編譯,得到一個文件IKAnalyzer-5.0.jar,把它放入solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目錄中,然後在solrconfig.xml的fieldType部分加入以下內容:
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
保存後,core的配置就算完成了,不過要導入mysql數據,我們還需要在mysql網站上下載mysql-connector-java-bin.jar庫文件,連同solr-5.5.0/dist目錄下面的solr-dataimporthandler-5.5.0.jar,solr-dataimporthandler-extras-5.5.0.jar兩個文件,全部拷貝到solr-5.5.0/server/solr-webapp/webapp/WEB-INF/lib目錄中,然後重啟solr,就可以開始數據導入工作了。
D. 如何在 Ubuntu 14/15 上配置 Apache Solr-Linux中國
~/.vnc/xstartup #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS #這句是重點 startxfce4 & [ -x /etc/vnc/xstartup ] && exec /逗余etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & 對於 startxfce4 & 這一行: 如果是GNOME桌面,改成 gnome-session & 如果是KDE桌面,改成 startkde & 如果是Unity桌面,並且存在/usr/share/gnome-session/sessions/ubuntu.session,則改為: "/usr/bin/gnome-session --session=ubuntu" & 不建山檔滾議在Ubuntu Server上安裝圖形界面,管理Linux伺服器最好還是喜歡使用ssh客戶端和sftp圖形客戶端,在ssh里通過命令來管理Linux伺服器,在 sftp圖形客戶端里上傳下載以及調用本地你自己喜歡的編輯器遠程編輯伺服器文件,習慣後遠比你像Windows那樣打開遠程桌面來管理和編輯文件快. Windows上ssh客戶蠢改端我推薦PuTTY,sftp客戶端推薦WinSCP和FileZilla.Linux上直接終端用ssh,文件管理器默認支持sftp協議,或者也可以用FileZilla.Linux可以這樣弄快捷方式: ssh.sh #!/bin/sh chmod 600 /home/eeche/.ssh/id_rsa xfce4-terminal -e "ssh [email protected] -p 22 -i /home/eeche/.ssh/id_rsa" sftp.sh #!/bin/sh chmod 600 /home/eeche/.ssh/id_rsa ssh-add /home/eeche/.ssh/id_rsa thunar sftp://[email protected]:22/ #pcmanfm sftp://[email protected]:22/ #nautilus --no-desktop --geometry=800x600 sftp://[email protected]:22/
E. 如何在 Ubuntu 14/15 上配置 Apache Solr-Linux中國
1)System Update 系統更新
使用一個具有 sudo 許可權的非 root 用戶登錄你的 Ubuntu 伺服器,在接下來的所有安裝和使用 Solr 的步驟中都會使用它。
登錄成功後,使用下面的命令,升級你的系統到最新的更新及補丁:
$ sudo apt-get update
2) 安裝 JRE
要安裝 Solr,首先需要安裝 JRE (Java Runtime Environment) 作為基礎環境,因為 solr 和 tomcat 都是基於Java.所以,我們需要安裝最新版的 Java 並配置 Java 本地環境.
要想安裝最新版的 Java 8,我們需要通過以下命令安裝 Python Software Properties 工具包
$ sudo apt-get install python-software-properties
完成後,配置最新版 Java 8的倉庫
$ sudo add-apt-repository ppa:webupd8team/java
現在你可以通過以下命令更新包源列表,使用『apt-get』來安裝最新版本的 Oracle Java 8。
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
在安裝和配置過程中,點擊'OK'按鈕接受 Java SE Platform 和 JavaFX 的Oracle 二進制代碼許可協議Oracle Binary Code License Agreement。
在安裝完成後,運行下面的命令,檢查是否安裝成功以及查看安裝的版本。
kash@solr:~$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
執行結果表明我們已經成功安裝了 Java,並達到安裝 Solr 最基本的要求了,接著我們進行下一步。
安裝 Solr
有兩種不同的方式可以在 Ubuntu 上安裝 Solr,在本文中我們只用最新的源碼包來演示源碼安裝。
要使用源碼安裝 Solr,先要從官網下載最新的可用安裝包。復制以下鏈接,然後使用 'wget' 命令來下載。
$ wget http://www.us.apache.org/dist/lucene/solr/5.3.1/solr-5.3.1.tgz
運行下面的命令,將這個已歸檔的服務解壓到 /bin 目錄。
$ tar -xzf solr-5.3.1.tgz solr-5.3.1/bin/install_solr_service.sh --strip-components=2
運行腳本來啟動 Solr 服務,這將會先創建一個 solr 的用戶,然後將 Solr 安裝成服務。
$ sudo bash ./install_solr_service.sh solr-5.3.1.tgz
Solr 安裝
使用下面的命令來檢查 Solr 服務的狀態。
$ service solr status
Solr 狀態
創建 Solr 集合:
我們現在可以使用 Solr 用戶添加多個集合。就像下圖所示的那樣,我們只需要在命令行中指定集合名稱和指定其配置集就可以創建多個集合了。
$ sudo su - solr -c "/opt/solr/bin/solr create -c myfirstcollection -n data_driven_schema_configs"
創建集合
我們已經成功的為我們的第一個集合創建了新核心實例目錄,並可以將數據添加到裡面。要查看庫中的默認模式文件,可以在這里找到: '/opt/solr/server/solr/configsets/datadrivenschema_configs/conf' 。
使用 Solr Web
可以使用默認的埠8983連接 Apache Solr。打開瀏覽器,輸入 http://your_server_ip:8983/solr 或者 http://your-domain.com:8983/solr. 確保你的防火牆允許8983埠.
http://172.25.10.171:8983/solr/
Web訪問Solr
在 Solr 的 Web 控制台左側菜單點擊 'Core Admin' 按鈕,你將會看見我們之前使用命令行方式創建的集合。你可以點擊 'Add Core' 按鈕來創建新的核心。
添加核心
就像下圖中所示,你可以選擇某個集合並指向文檔來向裡面添加內容或從文檔中查詢數據。如下顯示的那樣添加指定格式的數據。
{
"number": 1,
"Name": "George Washington",
"birth_year": 1989,
"Starting_Job": 2002,
"End_Job": "2009-04-30",
"Qualification": "Graation",
"skills": "Linux and Virtualization"
}
添加文件後點擊 'Submit Document'按鈕.
F. solr在linux tomcat上的配置問題
是可以啟動,但是你沒有添加SolrCore啊,一個SolrCore就相當閉知段於一個"索引庫"。轎譽你怎麼配置的,肯定有問題啊。提示信息都說了,要像猛模顯示UI,至少需要一個SolrCore啊。
G. 如何在linux中啟動solr
1.2. tomcat調優
調優tomcat 加大內存和連接數
MaxThread 500
MinSpareThread 25
MaxSpareThread75
Xmx 1024M
1.3. 操作系統網路參數優化
用做測試的各台伺服器,均在/etc/sysctl.conf配置文件中增加如下內核參數:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 5
1.4. 下載solr
下載地址:http://lucene.apache.org/solr/
詳情請見:http://lucene.apache.org/solr/
2. 安裝過程
2.1. 安裝tomcat6
安裝完tomcat後修改./conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
註:如果沒有設置URIEncoding="UTF-8",在提交查詢的select的url會出現亂碼,當然也就查不到了。
2.2. 拷貝solr.war
將下載的solr包下面的dist文件夾中的apache-solr-1.4.1.war 拷貝到 tomcat的webapps 並且改名為 solr.war 一般情況下會自動生成相應的文件夾。
2.3. 拷貝其它
新建/opt/solr-tomcat/solr文件夾,把下載的solr包中的example/solr文件夾下面的所有文件放入到/opt/solr-tomcat/solr裡面。
2.4. 配置solr.home
最後一步 配置添加solr.home環境變數,可以有二種方式(兩種取其一即可):
a)基於環境變數
linux在當前用戶的環境變數中(.bash_profile)或在./bin/catalina.sh中添加如下環境變數:
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr"
b)基於JNDI
在tomcat的conf文件夾建立Catalina文件夾,然後在Catalina文件夾中在建立localhost文件夾,在該文件夾下面建立 solr.xml,Xml代碼:
<Context docBase="/usr/local/tomcat6/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="Java.lang.String" value="/opt/solr-tomcat/solr" override="true" />
</Context>
註:如果沒有設定solr.solr.home環境變數或JNDI的情況下,Solr查找./solr,因此在啟動時候需要切換到/opt/solr-tomcat
3. 驗證安裝
訪問solr管理界面 http://ip:port/solr
3.1. 打開管理後台
打開瀏覽器,輸入:http://192.168.10.85:18080/solr/admin/
(註:多核心時為這個地址http://192.168.10.85:18080/solr/,首頁會列出多核的鏈接,點擊進入),就可以訪問solr服務了
3.2. 如果出現如下圖示,表示配置成功
H. Linux裡面es和Solr區別是什麼
1.查詢性能不同。當實時建立鬧跡索引的時候,solr會產生io阻塞,而es則不會,es查詢性能要高於solr;
2.檢索效率不同。在不斷動態添加數據的時候,solr的檢索效率會變的低下,而es則沒有什麼變化;
3.管理方式不腔滾同。Solr利用zookeeper進行分布式管理,而es自身帶有分布式系統管液圓並理功能。Solr一般都要部署到web伺服器上;
4.文件格式不同。Solr支持更多的格式數據[xml,json,csv等],而es僅支持json文件格式;