Amazon OpenSearch Service 域中的磁盘空间在节点间分布不均匀。因此,磁盘使用将发生严重倾斜。
简短描述
磁盘使用可能会因为以下原因发生严重倾斜:
要重新平衡 OpenSearch Service 集群中的分片分配,请考虑以下方法:
- 检查分区分配、分区大小和索引分区策略。
- 确保索引间的分区大小相等。
- 将分区大小保持在 10GB 与 50GB 之间,以获得更好的性能。
- 添加更多的数据节点到您的 OpenSearch Service 集群中。
- 更新您的分区策略。
- 删除旧索引或未使用的索引,以释放磁盘空间。
解决方法
检查分区分配、分区大小和索引分区策略
要检查分配给每个节点的分区数量和每个节点上使用的磁盘空间量,请使用以下 API:
GET _cat/allocation?v
要检查分配给每个节点的分区和每个分区的大小,请使用以下 API:
GET _cat/shards?v
**注意:**此 API 显示,不同索引的分片大小可能会有所不同。
不均匀的索引分片策略可能会导致数据倾斜。在这种情况下,较大索引的分片仅存在于几个节点上。要检查索引分片策略,请使用以下 API:
GET _cat/indices?v
确保索引间的分片大小相等
如果索引大小有很大不同,请使用翻转索引 API 在达到特定索引大小时创建新索引。或者,您可以使用索引状态管理(ISM)为 OpenSearch Service 7.1 版及以上版本创建新索引。有关使用 ISM 滚动别名的更多信息,请参阅 Open Distro 网站上的翻转。
将分片大小保持在 10GB 与 50GB 之间,以获得更好的性能
如果您有一个大型的实例类,请使用 Amazon OpenSearch Service 的 PB 级别来确定分片大小。例如,由于有更多可用资源,具有多个 i3.16xlarge.search 实例的 OpenSearch Service 域最多可以支持 100GB 的分片大小。有关分区策略的更多信息,请参阅选择分片数量。
添加更多的数据节点到您的 OpenSearch Service 集群中
如果您的 OpenSearch Service 集群已达到较高的磁盘使用水平,则添加更多数据节点到您的集群中。添加数据节点也会添加更多资源,从而提高集群性能。
**注:**如果缺少可用的存储空间,OpenSearch Service 不会自动重新平衡集群。因此,如果某个数据节点未使用的存储空间用完,集群将阻止任何写入操作。有关磁盘空间管理的详细信息,请参阅如何解决我的 Amazon OpenSearch Service 域中存储空间不足的问题?
更新您的分片策略
默认情况下,Amazon OpenSearch Service 的分片策略为 5:1,其中每个索引被分为五个主分片。在每个索引中,每个主分片还有自己的副本。OpenSearch Service 将主分片和副本分片自动分配到单独的数据节点中,并确保有备份可供发生故障时使用。
要修改 OpenSearch Service 的默认行为,请设计您的索引,以便按大小均匀分布分片:
- 对于现有索引,请使用 reindex(重新索引)API 更改主分区的数量。_reindex API 可用于将较小的索引合并到较大的索引中,或者可用于拆分较大的索引。将较大的索引拆分为更多主分片时,分片大小减小。
- 对于新索引,请使用索引模板 API 定义主分片和副本分片的数量。
然后,更新分片的索引设置。有关更多信息,请参阅 Elasticsearch 网站上的更新索引设置 API。
删除旧索引或未使用的索引,以释放磁盘空间
OpenSearch 服务或 Elasticsearch 版本 6.8 或更新版本支持 ISM。使用 ISM,您可以定义自定义管理策略,以使旧索引或未使用的索引在既定持续时间后删除。
相关信息
计算存储需求
开始使用 Amazon OpenSearch Service:我需要多少分区?