聊一聊Elasticsearch的索引的分片分配机制

1、什么是分片分配

分片分配是由ES主节点将索引分片移动到ES集群中各个节点上的过程。

该过程尽量保证,同一个索引的分片尽量分配到更多的节点上,以此来达到读写索引的时候可以利用更多硬件资源的效果。

在分配过程当中,也不能将某个主分片和它的副本分片分配到同一个节点上,或者将某个主分片的多个副本分片分配到同一个节点上。之所以这样是因为怕某个节点挂掉了会导致整个集群丢失数据。这里引申出以下一个问题:

如果某索引的副本分片数量大于集群中的节点数量,那多出来的副本分片会如何呢?

答案是:多出来的副本分片将无法得到分配,在集群中也将无法发挥任何作用。

2、分片分配的过程

本节将通过一个ES集群中节点数量的变化,来看下分片的分配情况。

  1. 场景一:假设在一个单节点的ES集群中,创建一个索引,该索引有3个主分片,每个主分片有一个副本分片。 在这里插入图片描述
    如上图:由于ES集群中只有一个节点(节点-0),所以索引的三个主分片(主分片-0、主分片-1、主分片-2)都被分配到了该节点上,而与这三个主分片对应的三个副本分片,则由于集群中无其他节点,使得它们没有得到分配。
  2. 场景二: 基于【场景一】我们在ES集群中再加一个新的节点(节点-1),此时ES集群中有2个节点,分别为:节点-0、节点-1。 在这里插入图片描述
    如上图:与3个主分片对应的副本分片(副本分片-0、副本分片-1、副本分片-2、)被分配到了新的节点(节点-1)上。
  3. 场景三: 还是基于【场景一】我们把S集群中有的节点增加为3个,分别为:节点-0、节点-1、节点-2。 在这里插入图片描述
    如上图:ES集群中每个节点上都有两个分片(达到了分片平衡),并且任一节点挂掉都不会导致数据的丢失。
  4. 场景四:试想如果节点的数量超过了分片的数量,即将【场景一】中的集群扩充到7个节点或者更多。
    在这里插入图片描述
    如上图:当ES集群中的节点数N达到了总分片数,继续增加节点的数量也无法提升该索引的读写性能(新增的节点上无可分配的索引分片,所以也就无法提供写服务和读服务了)。

3、分片分配的感知

基于上边介绍的【场景三】为例,我们再增加一个场景条件:「节点-0」和「节点-1」是分属于同在一台物理服务器(服务器A)上的两个不同虚拟机(虚拟机-0和虚拟机-1),而「节点-2」是另外一台物理服务器(服务器B)上的虚拟机(虚拟机-2),如下图所示:
在这里插入图片描述
我们来设想下如果「服务器A」挂掉了会怎么样?由于「主分片-0」和它的副本分片「副本分片-0」都在服务器A上,所以「服务器A」挂掉后会导致「主分片-0」上的数据丢失。

为了要解决这个问题,我们可以使用分片分配的感知,来人为对副本分片分配的位置进行干预。将ES集群中的节点进行区域划分,不允许副本分片被分配到它的主分片所属的区域内

使用分片分配感知后的结果如下图:
在这里插入图片描述
如上图:我们可以看到在同一个区域内,不允许主分片和它的副本分片同时存在,这样的话即使「节点-0」和「节点-1」都挂掉了,也不会出现数据丢失的问题。

4、分片分配的过滤

所谓的分片分配的过滤指的是:我们可以通过配置来指定分片分配的时候只能分配到某些节点上或不能分配到某些节点上。

当我们要从ES集群中删除某个节点的时候,在该节点被删除前,我可以使用分片分配过滤将该节点上的所有分片分配到其他节点上。

使用该功能有一个前提条件:为每一个节点设置一些属性,以便于设置过滤条件的时候将节点区分开来。例如,在某个节点的elasticsearch.yml中自定义一个state属性,如下:

node.attr.state: vip​​

5、参考文献

  • 《Elasticsearch数据搜索与分析实战》——王深湛

上一篇:《聊一聊Elasticsearch的基本原理与形成机制》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/909771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DAY21|二叉树Part08|LeetCode: 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 LeetCode: 669. 修剪二叉搜索树 基本思路 C代码 LeetCode: 108.将有序数组转换为二叉搜索树 基本思路 C代码 LeetCode: 538.把二叉搜索树转换为累加树 基本思路 C代码 LeetCode: 669. 修剪二叉搜索树 力扣代码链接 文字讲解:LeetCode: 669. 修剪二叉搜…

Halcon edges_sub_pix

1、算子帮助文档 edges_sub_pix 使用递归实现的滤波器(根据Deriche、Lanser和Shen的方法)或Canny提出的常规实现的“高斯导数”滤波器(使用滤波器掩模)来检测阶梯边缘。因此,以下边缘算子可用于滤波器: der…

SpringBoot配置Rabbit中的MessageConverter对象

SpringAMQP默认使用SimpleMessageConverter组件对消息内容进行转换 SimpleMessageConverter: only supports String, byte[] and Serializable payloads仅仅支持String、Byte[]和Serializable对象Jackson2JsonMessageConverter:was expecting (JSON Str…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30目录1. Step Guided Reasoning: Improving Mathematical Reasoning using Guidance Generation and Step Reasoning摘要研究背…

LabVIEW在Windows和Linux开发的差异

LabVIEW广泛应用于工程和科研领域的自动化和测量控制系统开发,其在Windows和Linux平台上的开发环境有所不同。这些差异主要体现在操作系统兼容性、硬件支持、软件库和驱动程序、实时系统开发以及部署选择上。以下从各个方面详细对比分析LabVIEW在Windows与Linux系统…

大模型日报|7 篇必读的大模型论文

大家好,今日必读的大模型论文来啦! 1.加州大学团队推出“罕见病”大模型 Zebra-Llama 罕见病为医疗保健带来了独特的挑战,通常会出现诊断延迟和信息分散的情况。这些疾病的可靠知识稀缺,给大语言模型(LLM&#xff09…

Docker篇(基础命令)

目录 一、启动与停止 二、镜像相关的命令 1. 查看镜像 2. 搜索镜像 3. 拉取镜像 4. 删除镜像 三、容器创建与启动容器 1. 查看容器 2. 创建容器 交互式方式创建容器 守护式方式创建容器 3. 容器启动与停止 四、容器操作命令 1. 文件拷贝 2. 目录(文件…

网络安全认证的证书有哪些?

在网络安全领域,专业认证不仅是个人技术能力的象征,也是职业发展的重要推动力。随着网络安全威胁的日益严峻,对网络安全专业人才的需求也在不断增长。本文将介绍一些网络安全认证的证书,帮助有志于从事网络安全行业的人士了解并选…

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution 1 背景2 创新点3 方法4 模块4.1 以往SR模型的刚性4.2 图构建4.2.1 度灵活性4.2.2 像素节点灵活性4.2.3 空间灵活性 4.3 图聚合4.4 多尺度图聚合模块MGB4.5 图聚合层GAL 5 效果5.1 和SOTA…

tomato靶机

下载tomato地址:https://vulnhub.com/entry/tomato-1,557/ 直接拖进虚拟机中 tomato靶机和kali虚拟机必须在同一网段所以使用nat模式 扫描主机 arp-scan -I eth0 -l 发现新主机ip 192.168.142.147 nmap扫描端口 namp -p- -A -T4 --min-rate10000 192.168.142.147 有用的信息…

集成旺店通旗舰版售后单至MySQL数据库

旺店通旗舰版-售后单集成到MySQL的技术实现 在数据驱动的业务环境中,如何高效、准确地将旺店通旗舰奇门的数据集成到MySQL数据库,是许多企业面临的重要挑战。本文将分享一个具体的系统对接案例:旺店通旗舰版-售后单-->BI泰海-售后订单表(…

随着FAB的发布,在FAB中使用Megascans的简单方法(适用于Unreal Engine 5)

UE5系列文章目录 文章目录 UE5系列文章目录前言一、如何在2024年12月31之前免费获取Quixel Megascans所有资源 前言 随着FAB的发布,Quixel Megascans的资源在2024年12月31号之后将不再免费,一个资源1美元 Fab是Epic Games推出的一个全新的数字内容平台,…

论文阅读:Computational Long Exposure Mobile Photography (二)

这篇文章是谷歌发表在 2023 ACM transaction on Graphic 上的一篇文章,介绍如何在手机摄影中实现长曝光的一些拍摄效果。 Abstract 长曝光摄影能拍出令人惊叹的影像,用运动模糊来呈现场景中的移动元素。它通常有两种模式,分别产生前景模糊或…

Linux云计算 |【第五阶段】PROJECT3-DAY1

主要内容: 跳板机(堡垒机)的概念、部署JumpeServer 一、跳板机(堡垒机)的概念 跳板机(Jump Server 或 Bastion Host)是一种网络安全设备或服务器,也称堡垒机,是一类可作…

一款根据图片内的文字,把图片分类的软件

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

文件操作:Xml转Excel

1 添加依赖 Spire.Xls.jar <dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>5.3.3</version></dependency>2 代码使用 package cctd.controller;import com.spire.xls.FileFormat; im…

从底层技术到实际应用:Claude与ChatGPT谁更适合学术写作?

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 使用大模型智能AI进行学术写作和科研已经成为学者、研究人员和高校学生的强大助手。Anthropic的Claude和OpenAI的ChatGPT作为该领域的两个主要参与者&#xff0c;正在不断发展和完善。随…

linux 磁盘配额 quota

增加一个facl的的知识点&#xff1a; linux中默认的文件系统支持facl&#xff0c;如果是新挂载的分区&#xff0c;则不支持facl应用。需要在挂载文件系统时使用-o acl选项来启用facl支持。如下图显示 在/etc/fstab添加defaults,acl 1.启用磁盘配额功能&#xff1a;修改/etc/f…

qt QMessageBox详解

1、概述 QMessageBox是Qt库中的一个类&#xff0c;它用于在图形用户界面&#xff08;GUI&#xff09;程序中显示消息框。消息框是一种用于向用户显示信息、警告、错误或询问用户确认的对话框。QMessageBox可以显示文本、图标和按钮&#xff0c;并允许自定义按钮的文本和功能。…

qt QResizeEvent详解

1、概述 QResizeEvent是Qt框架中用于处理窗口或控件大小变化事件的一个类。当用户调整窗口或控件的尺寸时&#xff0c;Qt会生成一个QResizeEvent事件&#xff0c;并将其发送到相应的窗口或控件。开发者可以通过重载窗口或控件的resizeEvent()方法来响应这个事件&#xff0c;并…