久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么對SolrCloud集群Collection進行手動二次Sharding

162次閱讀
沒有評論

共計 5354 個字符,預(yù)計需要花費 14 分鐘才能閱讀完成。

本篇內(nèi)容主要講解“怎么對 SolrCloud 集群 Collection 進行手動二次 Sharding”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學(xué)習(xí)“怎么對 SolrCloud 集群 Collection 進行手動二次 Sharding”吧!

基于 SolrCloud 4.3.1+Tomcat 7 搭建了搜索服務(wù)器集群,一個 Collection 對應(yīng) 3 個節(jié)點上的 3 個分片(Shard),同時包含對應(yīng)分片的副本(Replica),此時,該 Collection 一共有 6000 萬左右 Document,平均每個分片大約接近 2000 萬。

SolrCloud 集群節(jié)點的具體分布,如圖所示:

只有 shard1 有一個副本,并且位于不同的節(jié)點上。

隨著索引數(shù)據(jù)量的增長,如果我們的 Collection 的每個分片都不斷的增大,最后導(dǎo)致單個分片在搜索的時候,相應(yīng)速度成為瓶頸,那么,我們 要考慮將每個分片再次進行分片。因為第一次系統(tǒng)規(guī)劃時已經(jīng)設(shè)置好分片數(shù)量,所以每個分片所包含的 Document 數(shù)量幾乎是相同的,也就是說,再次分片 后,重新得到的分片的數(shù)量是原來的二倍。

目前,SolrCloud 不支持自動分片,但是支持手動分片,而且手動分片后得到的新的分片所包含的 Document 數(shù)量有一定的差異(還不清 楚 SolrCloud 是否支持手動分片后大致均分一個分片)。下面,我們看一下,在進行手動分片過程中,需要執(zhí)行哪些操作,應(yīng)該如何重新規(guī)劃整個 SolrCloud 集群。

首先,我增加了一個節(jié)點(slave6 10.95.3.67),把集群中原來的配置文件、solr-cloud.war 及其 Tomcat 服務(wù)器都拷貝到這個新增的節(jié)點上,目的是將 10.95.3.62 上的 shard1 再次分片,然后將再次得到分片運行在新增的 10.95.3.67 節(jié)點上。啟動新增節(jié)點的 Tomcat 服務(wù)器,它自動 去連接 ZooKeeper 集群,此時 ZooKeeper 集群增加 live_nodes 數(shù)量,主要是通過在 Tomcat 的啟動腳本中增加如下內(nèi)容:

JAVA_OPTS= -server -Xmx4096m -Xms1024m -verbose:gc -Xloggc:solr_gc.log -Dsolr.solr.home=/home/hadoop/applications/solr/cloud/multicore -DzkHost=master:2188,slave1:2188,slave4:2188

這樣,就能告知 ZooKeeper 集群有新節(jié)點加入 SolrCloud 集群。

如上圖所示,我們打算將 shard1 進行二次手動分片,執(zhí)行如下命令即可:

curl http://master:8888/solr-cloud/admin/collections?action=SPLITSHARD collection=mycollection shard=shard1

這個過程花費的時間比較長,而且可能會伴有如下異常相應(yīng)信息:

[html] view plaincopy

?xml version= 1.0  encoding= UTF-8 ?  

response  

lst name= responseHeader int name= status 500 /int int name= QTime 300138 /int /lst lst name= error str name= msg splitshard the collection time out:300s /str str name= trace org.apache.solr.common.SolrException: splitshard the collection time out:300s 

 at org.apache.solr.handler.admin.CollectionsHandler.handleResponse(CollectionsHandler.java:166) 

 at org.apache.solr.handler.admin.CollectionsHandler.handleSplitShardAction(CollectionsHandler.java:300) 

 at org.apache.solr.handler.admin.CollectionsHandler.handleRequestBody(CollectionsHandler.java:136) 

 at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) 

 at org.apache.solr.servlet.SolrDispatchFilter.handleAdminRequest(SolrDispatchFilter.java:608) 

 at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:215) 

 at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:155) 

 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 

 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 

 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 

 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 

 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 

 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 

 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 

 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 

 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 

 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 

 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 

 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 

 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 

 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 

 at java.lang.Thread.run(Thread.java:722) 

/str int name= code 500 /int /lst  

/response  

Solr 這個版本,實際真正的執(zhí)行手動分片的動作已經(jīng)在 SolrCloud 集群中進行,可以忽略這個異常。我們需要注意的是,在進行手動分片的時候,盡量不要在集 群操作比較頻繁的時候進行,例如,我就是在保持 10 個線程同時進行索引的過程中進行手動分片的,觀察服務(wù)器狀態(tài),資源消費量比較大,而且速度很慢。

在執(zhí)行手動分片的過程中,我們可以通過 Web 管理頁面。觀察當(dāng)前集群中節(jié)點的狀態(tài)變化。

提交上面的命令以后,可以看到,集群中新增節(jié)點的狀態(tài),如圖所示:

上面的狀態(tài)是“Recovering”,也就是在將 shard1 中分成兩個子分片,新增節(jié)點加入到集群,準備接收分片(或者對應(yīng)的復(fù)制副本),如上圖可見,shard3 和 shard1 在新增節(jié)點上分別增加了一個副本。

接續(xù)看集群狀態(tài)變化,如圖所示:

在 shard1 所在節(jié)點(10.95.3.62)上,將 shard1 分成了兩個子分片:shard1_0 和 shard1_1,此時,在 10.95.3.62 節(jié)點上有 3 個分片出于“Active”狀態(tài)。實際上,到目前為止,子分片 shard1_0 和 shard1_1 已經(jīng)完全接管了 shard1 分片,只是沒有從 圖中自動離線退出,這個就需要我們在管理頁面你上手動“unload”掉不需要的 shard。

這時,新得到的兩個子分片,并沒有處理之前 shard1 的兩個副本,他們也需要進行分片(實際上是重新復(fù)制新分片的副本),這個過程,如圖所示:

等待“Recovering”恢復(fù)完成以后,我們就可以看到進入“Active”狀態(tài)的節(jié)點圖,如圖所示:

手動分片的工作基本已經(jīng)完成,這時候,如果繼續(xù)索引新的數(shù)據(jù),shard1 及其副本不會再接收請求,所以數(shù)據(jù)已經(jīng)在再次分片的子分片上,請求也會發(fā)送到那些子分片的節(jié)點上,下面需要將之前的 shard1 及其分片 unload 掉,即退出集群,要處理的分片主要包含如下幾個:

mycollection_shard1_replica1
mycollection_shard1_replica_2
mycollection_shard1_replica_3

一定不要操作失誤,否則可能會造成索引數(shù)據(jù)丟失的。unload 這幾個分片以后,新的集群的節(jié)點分布,如圖所示:

shard1_0 和 shard1_1 兩個新的分片,對應(yīng)的副本,分別如下所示:

mycollection_shard1_0_replica1
mycollection_shard1_0_replica2
mycollection_shard1_0_replica3

mycollection_shard1_1_replica1
mycollection_shard1_1_replica2
mycollection_shard1_1_replica3

下面,我們對比一下,手動二次分片以后,各個節(jié)點上 Document 的數(shù)量,如下表所示:

分片 / 副本名稱所在節(jié)點文檔數(shù)量 mycollection_shard1_0_replica110.95.3.6218839290mycollection_shard1_0_replica210.95.3.6718839290mycollection_shard1_0_replica310.95.3.6118839290mycollection_shard1_1_replica110.95.3.62957980mycollection_shard1_1_replica210.95.3.61957980mycollection_shard1_1_replica310.95.3.67957980mycollection_shard2_replica110.95.3.6223719916mycollection_shard3_replica110.95.3.6123719739mycollection_shard3_replica110.95.3.6723719739

可見,二次分片的 shard1_1 上面,Document 數(shù)量相比于其它分片,十分不均。

SolrCloud 也正在不斷的更新中,在后續(xù)的版本可能會更多地考慮到分片的問題。另外,對于某個節(jié)點上的分片如果過大,影響了搜索效率,可以考慮另一種方案,就是重建索引,即使新增節(jié)點,重新索引再次重新分片,并均勻地分布到各個節(jié)點上。

到此,相信大家對“怎么對 SolrCloud 集群 Collection 進行手動二次 Sharding”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計5354字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 新密市| 德令哈市| 新昌县| 玛纳斯县| 丘北县| 抚顺县| 泊头市| 南开区| 宜良县| 岑溪市| 札达县| 镇康县| 巴里| 武威市| 昆明市| 平顺县| 闵行区| 吴忠市| 衢州市| 平度市| 金坛市| 尼玛县| 永登县| 沙河市| 常州市| 平罗县| 松桃| 大同县| 于都县| 衡南县| 仙桃市| 环江| 余干县| 泰兴市| 通海县| 威宁| 南昌县| 女性| 普安县| 江门市| 临沂市|