【问题标题】:Direction of DSE Solr cluster capacity planningDSE Solr集群容量规划方向
【发布时间】:2015-01-02 21:20:56
【问题描述】:

开始使用最新的 DSE,尝试设置初始 DSE solr 集群并希望确保满足基本容量需求。在以下文档中,我按照此处的说明进行了一些初始容量测试:

http://www.datastax.com/documentation/datastax_enterprise/4.5/datastax_enterprise/srch/srchCapazty.html

我的测试单节点设置是在 AWS 上,m3.xl,两个 40GB ssd 的 80GB raid0,安装了最新的 DSE

我总共插入了 6MM 示例记录并运行了一些 solr 搜索,这与生产运行的搜索类似。

我的 6MM 记录有以下数字:

  6MM Records

  7.6GB   disk (Cassandra + solr)
  2.56GB  solr index size
  96.2MB  solr field cache(totalReadableMemSize)
  25.57MB solr Heap

我正在尝试规划一个初始启动集群,希望计划存储和索引大约 250MM 记录以启动。早期的读取负载将非常小,因此开始时不必太担心读取吞吐量。

按照容量规划文档页面和 6MM 到 250MM 的一些数字,数据集的基本要求如下:

  250MM Records
  106GB solr index size
  317GB disk (Cassandra + solr)
  4GB solr field cache(totalReadableMemSize)
  1.1GB solr Heap

所以有些问题正在寻找一些指导以及我是否正确理解文档:

我是否应该将大约 360GB+ 的存储空间作为安全目标,并且随着数据集的增长而平均不超过 80% 的磁盘容量?

我应该使用可以为 solr 分配 6GB + 为 Cassandra 分配 XGB 的节点吗? (即:如果 250MM 的整个 solr 索引对于堆和字段缓存大约为 6GB,并且我通过复制跨 3 个节点进行分区)

使用 ~6GB 的 solr,我应该尝试为 Cassandra 贡献多少?

规划时还有什么需要考虑的(将在 AWS 上运行)?

更新 (11/6) - 来自 phact 的注释/建议

在 Cass+Solr 一起运行的情况下,将为每个节点指定 14GB 用于基本操作,移动到 AWS 上的目标 30GB 内存节点,剩下 16GB 用于操作系统、solr 索引、solr 字段缓存

我将 solr 索引大小添加到上面的数字中,如果建议的目标似乎是将大多数/所有索引保留在内存中,我可能需要以至少 8 个节点为目标,每个节点有 30GB 内存。

对于 solr 节点来说,在内存中定位索引似乎需要大量额外开销,可能需要重新考虑方法

【问题讨论】:

    标签: datastax-enterprise datastax


    【解决方案1】:

    Solr 节点上的 DSE 堆

    运行 solr 的 DSE 节点的推荐堆大小为 14gb。这是因为 Solr 和 Cassandra 实际上运行在同一个 JVM 中。您不必单独为 Solr 分配内存。

    AWS M3.xl

    15gb ram 的 m3.xl 对于 14gb 堆会有点紧。但是,如果您的工作量相对较轻,您可以在 solr 节点上使用 12gb 堆。

    操作系统页面缓存

    您确实希望确保至少能够将 Solr 索引放入 OS 页面缓存(减去堆后剩余的内存 - 假设这是一个专用框)。理想情况下,Cassandra 还可以在页面缓存中存储一​​些经常读取的行。

    确定索引有多大的一种快速而肮脏的方法是检查文件系统上索引目录的大小。如果您期望数据增长,请务必进行预测/推断。您还可以检查每个核心的索引大小,如下所示:

    http://localhost:8983/solr/admin/cores?action=STATUS&memory=true
    

    注意 - 每个节点都应该在内存中保存它的索引,而不是整个集群的索引。

    存储

    是的,您确实希望确保您的磁盘没有被过度使用,否则您可能会在压缩过程中遇到问题。理论上——更糟糕的情况——分层压缩可能需要多达 50% 的磁盘可用。不过这并不常见,请查看更多详细信息 here

    【讨论】:

    • 感谢详细的回复phact..,夫妇跟进q's。鉴于我的 6MM 记录测试,我当前的索引大小是 2.56GB,这是否意味着即使对于这个小的 6MM 数据集,我也应该谨慎地为 Cass/Solr 的 JVM 堆提供 14GB 的空间......,另外还有大约 2.5GB 的空间用于适合内存的索引?字段缓存有什么意义吗?..,按照 solr 节点容量规划的指示,特别提到字段缓存,而不是调整大小以适应操作系统页面缓存中的整个索引
    • 要直接引用 solr 文档,您需要足够的内存,以便“索引的重要部分,或者理想情况下是整个索引,将适合缓存”。我没有足够的 solr 专家来区分索引的哪些部分真的很关键(我认为你会通过 STATUS 操作得到故障)。你可能会更好地计划整个事情。您可以在这个问题中添加#solr,看看我们是否从 solr 专家那里得到更多建议。
    • 在您使用 3m.xl 的情况下,我会尝试使用 12gb 堆,看看效果如何。
    • 因此,如果使用推荐的 14GB 堆,再加上 2.5GB 的索引,将为 6MM 记录设置最小基数 17GB。显然希望在 AWS 上推高到 30GB 的机器映像..,并且为 250MM 记录的大小做大约 40 倍意味着整个集群中的 solr 索引需要超过 100GB,因此每个节点有大约 15GB 可用于 solr 索引,需要~ 8 个节点用于启动集群?还是我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2012-07-16
    • 2017-03-16
    • 2011-01-04
    • 1970-01-01
    • 2014-05-06
    • 2013-12-28
    • 2018-12-28
    • 2018-08-28
    相关资源
    最近更新 更多