當前位置:成語大全網 - 漢語詞典 - solr jvm配置有多大?

solr jvm配置有多大?

0×00開頭照例是扯淡。

自從各種脫褲子事件開始層出不窮,我在學校學乖了,所有地方的密碼都改成了不壹樣。重要賬號的密碼定期更換,我甚至開始用假名,怕自己生出來18代祖宗。給自己起了壹個新的網名“星彩”,似乎是個不錯的名字。其實是我們老家的罵人方言,意思是腦殘的人...-_-||| |

這只是壹個名字。姓氏方面,每個賬號的註冊信息按照千孫趙、李、周、吳、鄭王的姓氏向下排列。什麽張興才,李興才,王興才...所以我也不知道自己“提拔人才”多久了。終於有壹天,我接到了壹個陌生的電話:餵,是馬興才先生嗎?

好吧,合適的終於來了,我就按名字搜了壹下,得知我用這個名字做了某個網站,然後就通過各種渠道搜了壹下。果然,破站扒了我的褲子。

果斷下了褲子,然後壹發不可收拾,走上了收藏褲子的道路,直到有壹天,我發現收藏已經很豐富了,粗略估計有幾十億條數據,拍著腦袋想,這個不能隨便收藏,我也成立了壹個社工庫來用...

0×01簡介

如何建設社工圖書館?這種海量數據不是簡單的用mysql建個庫,然後做個php查詢Select * from sgk where username像“% xxxxx%”,就能做到的。也不是某些幼稚的人想隨便找個4g內存,amd雙核破電腦就能提出來。以上語句和系統配置真正用於社工庫查詢,查壹條記錄可能需要半個小時。好在這個問題早就被壹個叫全文搜索引擎的東西解決了。更好的消息是,大多數全文搜索引擎都是開源的,不需要花錢。

目前互聯網上已經搭建的社工庫大多是mysql+coreseek+php,coreseek是基於sphinx的優秀全文搜索引擎。但它的缺點是比較輕量,壹旦數據量超過幾個億就會有點不堪重負,構建集群的分布式性能也不理想。如果要考慮未來數據量增加的情況,還是要用其他方案,所以我用了solr。

solr基於著名的Lucene框架,基於java,可以通過jdbc接口導入各種數據庫和各種格式的數據,非常適合開發壹個企業級的海量數據搜索平臺,提供了完善的Solr雲集群功能。更重要的是,Solr的數據查詢完全基於http,可以通過簡單的post參數返回json、xml、php、python、ruby、csv等格式。

以前的solr本質上是壹組servlet,必須放到Tomcat中才能運行。從solr5開始,它構建了自己的jetty,配置良好,可以獨立使用,可以處理大量並發請求。具體架構我們後面再說。現在讓我們先安裝和配置solr。

0×02安裝和配置

以下是我在整個構建和測試過程中使用的軟硬件平臺,本文的所有內容都是在這個平臺上完成的:

軟件配置:Solr 5.5,MySQL 5.7,JDK 8,Tomcat 8 Windows 10/Ubuntu 14 lts

硬件配置:i7 4770k,16G DDR3,2T西部數據黑盤。

2.1 mysql數據庫

關於Mysql數據庫的安裝和配置,這裏就不贅述了,除了提壹下,對於社工庫這種查詢任務遠不止插入和更新的應用,最好使用MyISAM引擎。

構建數據庫後,創建壹個名為newsgk的新庫,然後創建壹個名為b41sgk的表,其結構如下:

Id bigint主鍵自動增長。

用戶名varchar用戶名

電子郵件varchar郵箱

密碼varchar密碼

Salt varchar密碼或第二個密碼中的salt。

Ip varchar ip,地址,電話號碼等信息。

站點varchar數據庫的源站點

下壹步是將所有收集到的褲子導入到這個表中。這裏推薦navicat,可以支持多種格式的導入。具體過程相當枯燥,需要很大的耐心。這裏就不廢話了,我就自己動手吧。目前我初步導入的數據量大概是6543.8+0億。

2.2 Solr結構和配置

首先下載solr:

$ wget

解壓:

$ tar zxvf solr-5.5.0.tgz

安裝jdk8:

$ sudo add-apt-repository PPA:webupd 8 team/Java

$ sudo apt-get更新

$ sudo apt-get安裝oracle-java8-installer

$ sudo apt-get安裝oracle-java8-set-default

因為java是跨平臺的,所以windows和linux下的solr是同壹個壓縮包,這裏不解釋Windows下jdk的安裝。

輸入解壓縮的solr文件夾的bin目錄。solr.cmd和solr分別是windows和linux下的啟動腳本:

因為社工庫是海量的大數據,而jvm默認只用512m內存,遠遠不夠,所以我們需要對其進行修改,打開solr.in.sh文件,找到這壹行:

SOLR _西普="512m "

根據妳的數據量,改高壹點。我這裏換成4G,換完之後保存。在windows下略有不同,所以需要在solr.in.cmd文件中修改這壹行:

設置SOLR _ JAVA _ MEM =-xms 512m-xmx 512m

同樣,512m都修改為4G。

Solr的啟動、重啟和停止命令是:

$ ./solr start

$ ./solr重啟–p 8983

$ ./Solr stop–全部

在linux下,solr也可以通過install_solr_service.sh腳本作為服務安裝,它會在後臺自動運行。

Solr安裝好了,現在我們需要從mysql導入數據。在導入之前,我們需要創建壹個核心,這是Solr獨有的概念。每個核心都是查詢、數據、索引等的集合。妳可以把它想象成壹個獨立的數據庫。讓我們創建壹個新的核心:

在solr-5.5.0/server/solr子目錄下新建壹個文件夾,命名為solr_mysql,這是核心的名字,下面創建兩個子目錄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,並對其進行如下修改:

這個文件負責配置導入的數據源。請根據mysql的實際設置修改數據源的內容。以下實體的內容必須嚴格按照mysql中社工庫表的結構填寫,列名要和數據庫中的完全壹致。

然後打開solrconfig.xml先找到這壹段:

真實的

托管模式

全部註釋掉,添加壹行並將其更改為:

& lt!-

真實的

托管模式

-& gt;

這是因為solr5及以上版本默認使用managed-schema來管理模式,需要更改為可手動修改。

然後我們需要關閉建議,它為搜索提供智能提示。我們在社工圖書館不用這個功能。重要的是,建議會嚴重拖慢solr的啟動速度。在超過十億個數據的情況下,打開建議可能會導致solr開始加載核心幾個小時!

同樣在solrconfig.xml中,找到這樣壹段話:

我的建議者

模糊LookupFactory

文檔字典工廠

價格

真實的

10

建議

刪除所有這些,然後保存solrconfig.xml文件。

接下來,復制托管模式,將其重命名為schema.xml(不要刪除原始文件),打開它並找到以下位置:

只保留_version_和_root_ nodes,然後刪除所有字段dynamicField和copyField,並添加以下部分:

身份證明(identification)

這裏的uniqueKey是配置文件中原來的那個,用來指定索引字段,必須保留。創建壹個名為keyword的新字段,用於聯合查詢,即當需要同時使用多個字段進行關鍵字查詢時,可以用這個字段名代替,以增加查詢效率,後面的copyField用於指定要復制到keyword的字段。註意關鍵字等字段,以下多值屬性必須為真。

用戶名、郵箱、關鍵詞字段用於檢索查詢關鍵詞,其類型指定為text_ik,這是我們自己創建的壹種類型,因為solr內置了中文分詞,但是效果並不好,所以需要添加IKAnalyzer中文分詞引擎來查詢中文。下載IKAnalyzer for solr5的源碼包,然後用Maven編譯得到壹個文件IKAnalyzer-5.0.jar,放在Solr-5 . 5 . 0/server/Solr-web app/web app/we b-INF/lib目錄下,然後在solrconfig.xml的fieldType部分添加以下內容:

保存後,核心的配置完成,但是要導入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-web app/web app/we b-INF/lib中,然後重啟Solr,就可以開始數據導入了。