2014-02-06 32 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?