【问题标题】:Elasticsearch: Spreading files across data pathsElasticsearch:跨数据路径传播文件
【发布时间】:2020-04-09 13:04:06
【问题描述】:

有很多文档讨论了集群中跨节点的分片分布,但关于节点内多条数据路径的实际使用却很少。 很明显,一个分片不能在不同的路径上拆分,但是 WHEN 和 HOW Elasticsearch(比如 7.6)决定创建或将一个分片从一个数据路径移动到另一个(跨节点,还是在同一个节点内)?

当磁盘达到给定的水印(例如 90%)时,系统决定重新分配分片。 但这是否包括在同一节点内重新分配它们的可能性,例如,将其移动到新的空磁盘?

例如,是否可以告诉 Elastic 在创建新索引时使用给定的数据路径?

是否有明确的文件详细解释这些行为?

谢谢。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    答案因版本而异,将来可能会发生变化。此答案适用于撰写本文时所有已发布和受支持的版本,即版本 6.5 至 7.6。这些版本都不会在节点内的磁盘之间移动分片。他们都在第一次将每个分片分配给节点时为每个分片选择一条路径,这就是它所在的位置。如果磁盘达到高水位线,则 Elasticsearch 会将最完整数据路径上的一个或多个分片重新定位到不同节点上,这些节点将为分片选择具有足够空间的数据路径,并且通常会更喜欢空路径。

    虽然这听起来不太理想,但在实践中问题不大。您可以将多个磁盘组合在一起(例如,使用 RAID 0 或 LVM)到单个逻辑卷中,避免节点内数据路径之间的平衡问题。或者,如果您真的想更好地控制分片到单个磁盘的分配,您可以在每个主机上运行多个较小的节点,每个节点只使用一个磁盘。您甚至可以结合使用这些方法。

    【讨论】:

    • 只有一个问题,@Dave:即使您指定“这听起来不太理想”,“如果磁盘达到高水位线,那么 Elasticsearch 将重新定位一个或多个分片”这一事实在不同节点上的最完整数据路径上,这些节点将为分片选择具有足够空间的数据路径,并且通常更喜欢空路径”,这意味着如果您的集群中有空磁盘,它永远不会用完空间,还是停用碎片?对吗?
    • 这个问题 - 根据你的解释 - 只有当你有一个单节点集群时才会出现,因为在这种情况下,分片不能被重新定位到其他节点,并且“这些版本都不会在磁盘之间移动分片一个节点”,对吗?最后:是否有任何官方文件报告您所解释的行为?再次感谢您。
    • 在大多数情况下,是的,只要您有足够的空间和时间来移动分片,那么 Elasticsearch 就应该适合您的数据。然而,这并不是 100% 保证的,而且变得越来越困难当你接近容量时。如果每个节点只有一个数据路径,那就更简单了。
    • 是的,如果你有一个单节点集群,那么你会发现问题。
    • 不,我认为这在源代码之外的任何地方都没有记录。
    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多