首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS OpenSearch -此操作将添加[10]总碎片,但该集群当前打开的最大碎片为[3996]/[4000]

AWS OpenSearch -此操作将添加[10]总碎片,但该集群当前打开的最大碎片为[3996]/[4000]
EN

Stack Overflow用户
提问于 2022-08-19 02:49:41
回答 1查看 376关注 0票数 0

我在AWS上有一个AWS集群,它有一些数据。数据是从Kinesis Firehose中摄取的,但是我得到了以下错误:

{"attemptsMade":8,"arrivalTimestamp":1660873371793,“errorCode”,“400”,“原因”:“验证失败: 1:此操作将添加10个总碎片,但该集群当前打开的最大碎片为3996/4000;”}

我有4个节点集群,当我试图获得分配给每个节点的碎片数量时,如下所示:

代码语言:javascript
复制
  shards disk.indices disk.used disk.avail disk.total         
   983       89.8gb   115.1gb    376.8gb      492gb           
   983       91.2gb   116.5gb    375.4gb      492gb           
   983       89.1gb   114.5gb    377.5gb      492gb           
   983       90.6gb   115.9gb      376gb      492gb    

在上面,shards列是什么意思?这是节点可以容纳的碎片总数(最大值)吗?

然后,我试图得到所有的索引和它们的碎片PS:在下面,我没有添加所有的索引,因为在3000+索引上有,所以下面有几个:

代码语言:javascript
复制
GET _cat/shards?v


index                                                      shard prirep state      docs    store           
mc-2022-08-07                                              4     p      STARTED      23  182.5kb 
mc-2022-08-07                                              4     r      STARTED      23  182.5kb 
mc-2022-08-07                                              2     r      STARTED      13  217.6kb 
mc-2022-08-07                                              3     p      STARTED       9  192.9kb 
mc-2022-08-07                                              1     p      STARTED      10    193kb 
mc-2022-08-07                                              0     p      STARTED      13   71.3kb 
. . .

我试图在上面的输出的shard列中添加所有的值,最后得到了值7506

但是根据上面的错误消息,它不能超过4000,但是它已经有了值7506

有人能帮我了解这里发生了什么吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-08-19 03:47:46

第一个输出显示每个节点都有983个碎片。看起来,您正在尝试添加另一个索引,每个索引包含5个主碎片+一个副本,这意味着需要额外添加10个碎片。

有一个名为集群范围设置cluster.max_shards_per_node,它防止每个节点拥有超过1000个碎片,在您的例子中,4x1000= 4000。当然,这是一个可以更改的默认值,只是作为一个安全网,不使集群过载。

取消这一限制的命令如下:

代码语言:javascript
复制
PUT _cluster/settings
{
  "persistent": {
    "cluster.max_shards_per_node": 1100
  }
}

但是,看看您的第二个输出,我们可以得出以下几点:

  • 你的碎片太多了
  • 也许你的每个碎片都太小了

我们没有看到_cat/shards的完整输出,但取决于您的工作负载,您的每个索引可能只需要一个主碎片即可。可以在索引创建时或在索引模板中为索引定义默认映射和设置。

关于_cat/shards输出的另一点,您在shards列中看到的数字不是若干碎片,而是碎片的id。如果索引有5个主碎片+一个副本,您将得到

  • 初级碎片0
  • 复制品碎片0
  • 一级碎片1
  • 复制品碎片1
  • 初级碎片2
  • 复制品碎片2
  • 初级碎片3
  • 复制品碎片3
  • 初级碎片4
  • 复制品碎片4

但是,如果计算_cat/shards输出中的行数,将得到3996行。

总之,我强烈建议您实现索引生命周期管理(ILM),或者因为您正在使用Opensearch,所以这个特性被称为索引状态管理(ISM),以便只在绝对必要时创建一个新的索引。

另外,我建议再索引将小的每日指数合并成更大的指数(每周、每月等)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73411388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档