2014-02-06 31 views
1

設置梗概:合併集合跨越多個碎片分裂

5×SolrCloud(Solr的4.6.1)節點實例(單獨的機器)。
該設置旨在存儲最近48小時的webapp日誌(這是相當激烈的......〜3MB /秒)

「日誌」集合有5個分片(每個節點實例一個)。
一個的logline代表「日誌」集合


如果我繼續存儲日誌文件,以這種「日誌」的收集,對碎片內核開始變得非常大,CPU圖表顯示實例花費越來越多的時間中的一個文件等待磁盤I/O。

因此,我的想法是每15分鐘創建一個新集合,並將它命名爲「logs-201402051400」,分散在5個實例中的碎片。文檔編寫者一旦創建,就會開始寫入新的集合。在某些時候,我會得到收集這樣的名單:

...
日誌-201402051400
日誌-201402051415
日誌-201402051430
日誌-201402051445
日誌-201402051500
...

由於SolrCloud中某些特定時間段內最多有192個集合(〜1000個核心)。看起來搜索性能應該會急劇下降。

所以,我想將目前未寫入的集合合併到一個大集合中(但仍分散在5個實例中)。我已經找到了有關如何合併核心的信息,但我如何合併集合?

回答

1

這可能不是您的查詢的完整答案 - 但有些事情告訴我您需要重做您的收藏的設計。

這是使用單個集合與多個碎片與多個集合之間的經典爭論。我想你應該設置一個單一的集合 - 然後使用Solr Cloud的動態分片功能(隱式路由器)來添加新的分片(對於更新的15分鐘的時間間隔)/刪除舊的分片(對於較早的15分鐘的時間間隔)。

管理單個集合意味着您將擁有單個端點,並且可以使您免於查詢多個集合的複雜性。

看看這個鏈接上的一個答案,談論在SolrCloud中使用隱式路由器進行動態分片。

How to add shards dynamically to collection in solr?