欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

如下图所示 记住:elastics 次  来源:宝鼎软件 时间:2018-04-30

原文出处: iceman1952

这是一篇译文,原文(Every shard deserves a home)于2016-11-11宣布在elastic官方博客。译文稍有变动

阅读提示

  1. 文章包括许多gif动图,你可以利用“2345看图王”查察/暂停/回放gif动图的每一帧
  2. 所有图片都可以在新标签页中查察大图
  3. “索引”有时作动词,有时作名词。譬喻“当索引第一个文档到新的索引中时…”,第一个索引是动词,第二个索引是名词
  4. 术语及翻译。有些术语不翻译,直接利用英文原词
rebalance 从头均衡
relocation 从头安放。即:集群已经选定了方针shard,需要从primary shard向这个方针shard复制数据
reallocation 从头分派。即:集群把某个/ 些索引的shard漫衍到集群中节点上
shard allocation shard分派
shard copy 分片副本(即可以是primary shard也可以是replica shard)
master master(主节点。利用英文原词,不再翻译)
shard shard(分片。利用英文原词,不再翻译)
primary shard primary shard(主分片。利用英文原词,不再翻译)
replica shard replica shard(副分片。利用英文原词,不再翻译)
segment segment(段,Lucene中的观念。利用英文原词,不再翻译)

文章正文开始

文中这些优秀的幻灯片来自于Core Elasticsearch: Operations课程,昆山软件开发,它们有助于表明shard分派(shard allocation)的观念。我们推荐您介入完整课程以更好的领略这些观念,但,我会在此列出培训的梗概

Shard分派(shard allocation)是把shard分派给节点的进程。 当初始规复(initial recovery)、副分片分派(replica allocation)、从头均衡(rebalancing)或向集群中插手/移除节点时就会产生shard分派。大部门时间,你无需挂记它,它在靠山由elasticsearch完成。假如你发明本身对这些细节感想好奇,这篇博客将摸索几种差异场景下的shard分派

本文的集群由4个节点构成,如下图所示。文中的例子都利用此集群完成

如下图所示 记着:elastics<a href=劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416150733132" />

我们将包围四种差异的场景

场景一、 建设索引

如下图所示 记着:elastics<a href=劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416150827691" />

如上图所示,这是最简朴的用例。我们建设了索引c,于是我们必需得为它分派新的shard。当索引第一个文档到这个新的索引时,就会为它分派shard。上图利用Kinaba中的Console插件(之前称为Sense)来执行灰色高亮的呼吁,索引一个文档到索引中

对付索引c,我们正在建设一个primary shard和一个replica shard。master需要建设索引c,并为它分派2个shard,即一个primary shard和一个replica shard。集群会通过以下方法来均衡集群

  1. 考查集群中每个节点所包括shard的平均数量,然后,尽大概使得每个节点上的此数字保持一致
  2. 基于集群中每一个索引来做评估,使得shard跨所有索引而保持均衡

Shard分派进程中存在一些限制,分派抉择器(allocation decider)在做分派时会遵从这些限制。分派抉择器会评估集群要做的每一个抉择,并给出yes/no的回覆。分派抉择器运行在master上。你可以认为是master给出修改提议,分派抉择器则奉告master此修改提议是否能通过。

关于此最简朴的一个例子就是,你不能把同一个shard的primary shard和replica shard放到同一个节点上

关于此尚有一些其他例子

1. 基于Hot/Warm设置作分派过滤

如下图所示 记着:elastics<a href=劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151005623" />

这答允你把shard只放到具有特定属性的节点上,分派抉择器会按照Hot/Warm设置接管或拒绝集群所作的抉择。这是用户抉择直接节制分派抉择器的例子

2. 磁盘利用环境分派器(Disk usage allocator)

如下图所示 记着:elastics<a href=劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151056765" />

master监控集群中磁盘的利用环境,并按照高水位/低水位阈值节制shard分派(见下面的:“场景二、 是时候移动shard了”)

3. 抑制(Throttles)

如下图所示 记着:elastics<a href=劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151134545" />

这意味着,理论上我们可以把shard分派到某节点,但,此节点上有太多正在举办中的规复(recovery)。为了掩护节点而且也答允规复举办,分派抉择器让集群举办期待,然后在下一个迭代中再重试把shard分派给同一个节点

Shard初始化

如下图所示 记着:elastics<a href=劳务调派信息打点系统 earch的所有数据都是通过Lucene存储的" src="http://www.importnew.com/https:/img-blog.csdn.net/20180416151208552" />