关于ElasticSearch碎片有两个最佳实践:
就我而言,它们有些争议。更具体地说,假设索引大小为2TB,并且有10个节点。我应该配置多少个碎片:
选项1: 10片,每个200 10
或
选项2: 40个碎片,每个50 40
查询延迟性能的更好选择是哪一种?
发布于 2018-06-29 11:13:30
在理论上,任何被认为是“最优”的东西通常都是最优的,在实践中,你需要做出一些权衡。大多数情况下,您肯定希望每个主碎片至少有一个副本(容错),因此每个节点至少有两个碎片(除非每个主碎片@400 to )。关于乐观,让我们脚踏实地.
您没有提到每个节点堆的数量,但是由于您不应该超过每个节点的30.5GB堆限制,所以您应该清楚地倾向于拥有最多~50 at数据的碎片。50 shards @40 50也能工作。
我不会尝试200‘s的碎片,因为那可能太大了。我也不会尝试拥有10002GB的碎片,因为碎片太多了。
最终,这取决于您的用例和硬件。您的索引正在经历沉重的搜索负荷,还是主要处理索引请求?集群需要处理多少并发搜索/索引请求?最好的方法是测试所有这些,但是如果没有更多的信息,第二种选择显然比第一种更好。不要忘记,您可能也需要每个主碎片一个副本,这将使您的存储需要加倍(即每个节点400‘t)
发布于 2018-06-29 14:19:58
添加到Val的答案:更多的碎片允许更平滑的碎片分发,以防您想要添加节点以获得更好的性能。10个节点上的10个碎片不允许将碎片分发到其他节点。40个碎片可以通过更多的节点轻松地扩展。
此外,如果磁盘空间变得紧凑,较小的碎片可能仍然允许Elasticsearch来回移动碎片,因为它至少需要一个碎片才能做任何事情。
https://stackoverflow.com/questions/51099608
复制相似问题