如果 Elasticsearch 不能跨分区平衡分片,为啥 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区?

Posted

技术标签:

【中文标题】如果 Elasticsearch 不能跨分区平衡分片,为啥 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区?【英文标题】:Why does Elasticsearch allow you to specify multiple disk partitions in the .yml file if it doesn't balance shards across partitions?如果 Elasticsearch 不能跨分区平衡分片,为什么 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区? 【发布时间】:2021-05-04 19:47:20 【问题描述】:

这是我之前在here 提出的问题的后续。

我有一个包含三个数据节点和一个头节点的集群。每个数据节点上的硬盘驱动器具有三个分区:/data1/data2/data3。我在头节点上配置了我的elasticsearch.yml,如下所示:

path.data: /data1/elasticsearch, /data2/elasticsearch_2, /data3/elasticsearch_3

我现有的索引存储在每个节点上的/data1/elasticsearch 中。但是,当我禁用复制并尝试为我的新索引加载数据时,我触发了low watermark cluster setting/data1 没有足够的空间。

查看我找到的 Elasticsearch 文档this warning:

Elasticsearch 不会跨节点的数据路径平衡分片。单个路径中的高磁盘使用率可能会触发整个节点的高磁盘使用水印。如果触发,Elasticsearch 不会向节点添加分片,即使节点的其他路径有可用磁盘空间。如果您需要额外的磁盘空间,我们建议您添加一个新节点而不是额外的数据路径。

所以我的问题是:如果 Elasticsearch 不将分片分配到节点上的下一个空路径,为什么它允许您指定多个数据存储路径?

【问题讨论】:

【参考方案1】:

将不再允许使用多个数据路径的选项,此功能存在一些问题,例如您提到的问题以及 kibana 在同一节点上使用多个磁盘时可能显示错误的可用空间这一事实。

根据github issue,计划在版本 7.13 中弃用多数据路径的使用并在版本 8.0 中删除。

根据同样的问题:

(...) 多数据路径是一项成本非常高的功能(设计中存在许多错误和缺陷),用户相对较少,最重要的是,它是 Elasticsearch 之外标准的更好替代方案。

【讨论】:

以上是关于如果 Elasticsearch 不能跨分区平衡分片,为啥 Elasticsearch 允许您在 .yml 文件中指定多个磁盘分区?的主要内容,如果未能解决你的问题,请参考以下文章

windows安装ElasticSearch的Head可视化插件简单使用并解决不能连接ElasticSearch服务跨域问题

Elasticsearch:跨集群搜索 Cross-cluster search(CCS)及安全

Elasticsearch:跨集群搜索 Cross-cluster search(CCS)及安全

inux中硬链接为什么不能跨分区

Kafka重平衡机制

Elasticsearch数据迁移与集群容灾