iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Elasticsearch节点、集群、分片及副本是什么
  • 570
分享到

Elasticsearch节点、集群、分片及副本是什么

2023-06-28 02:06:10 570人浏览 独家记忆
摘要

这篇文章主要讲解了“elasticsearch节点、集群、分片及副本是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Elasticsearch节点、集群、分片及副本是什么”吧!Elast

这篇文章主要讲解了“elasticsearch节点、集群、分片及副本是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Elasticsearch节点、集群、分片及副本是什么”吧!

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful WEB接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。

Elasticsearch节点、集群、分片及副本是什么

Elasticsearch 分布式

Elasticsearch 分布式特性包括如下几个点:

高可用

什么是高可用?CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:

Consistency(一致性)

Availability(可用性)

Partition tolerance(分区容错性)

那高可用(High Availability)是什么?高可用,简称 HA,是系统一种特征或者指标,通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。

衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。

Elasticsearch 在高可用性上,体现如下两点:

服务可用性:允许部分节点停止服务,整体服务没有影响

数据可用性:允许部分节点丢失,最终不会丢失数据

可扩展

随着公司业务发展,Elasticsearch 也面临两个挑战:

搜索数据量从百万到亿量级

搜索请求 QPS 也猛增

那么需要将原来节点和增量数据重新从 10 个节点分布到 100 个节点。Elasticsearch 可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理PB级数据。Elasticsearch 为了可扩展性而生,由小规模集群增长为大规模集群的过程几乎完全自动化,这是水平扩展的体现。

Elasticsearch 分布式特性

上面通过可扩展性,可以看出 Elasticsearch 分布式的好处明显:

存储可以水平扩容,水平空间换时间

部分节点停止服务,整个集群服务不受影响,照样正常提供服务

Elasticsearch 在后台自动完成了分布式相关工作,如下:

自动分配文档到不同分片或者多节点上

均衡分配分片到集群节点上,index 和 search 操作时进行负载均衡

复制每个分片,支持数据冗余,防止硬件故障数据丢失

集群扩容时,无缝整合新节点,并且重新分配分片

Elasticsearch 集群知识点如下:

不同集群通过名字区分,默认集群名称为 “elasticsearch”

集群名 cluster name ,可以通过配置文件修改或者命令行 -E cluster.name=user-es-cluster 进行设置一个集群由多个节点组成

Elasticsearch 节点 & 集群

Elasticsearch节点、集群、分片及副本是什么

Elasticsearch 集群有多个节点组成,形成分布式集群。那么,什么是节点呢?

节点(node),就是一个 Elasticsearch 应用实例。大家都知道 Elasticsearch 源代码是 Java 写的,那么节点就是一个 Java 进程。

所以类似 spring 应用一样,一台服务器或者本机可以运行多个节点,只要对应的端口不同即可。但生产服务器中,一般一台服务器运行一个 Elasticsearch 节点。还有需要注意:

Elasticsearch 都会有 name ,通过 -E node.name=node01 指定或者配置文件中配置

每个节点启动成功,都会分配对应得一个 UID ,保存在 data 目录

可以通过命令 _cluster/health 查看集群的健康状态,如下:

Green 主分片与副本分片都正常

Yellow 主分片正常,副本分片不正常

Red 有主分片不正常,可能某个分片容量超过了磁盘大小等

Elasticsearch节点、集群、分片及副本是什么

如图,有主(Master)节点和其他节点。那么节点有多少类型呢?

Master-eligible Node 和 Master Node

Elasticsearch 被启动后,默认就是 Master-eligible Node。然后通过参与选主过程,可以成为 Master Node。具体选主原理,后续单独写一篇文章。Master Node 有什么作用呢?

Master Node 负责同步集群状态信息:

所有节点信息

所有索引即其 Mapping 和 Setting 信息

所有分片路由信息

只能 Master 节点可以修改信息,是因为这样就能保证数据得一致性

Data Node 和 Coordinating Node

Data Node,又称数据节点。用于保存数据,其在数据扩展上起至关重要的作用。

Coordinating Node,是负责接收任何 Client 的请求,包括 REST Client 等。该节点将请求分发到合适的节点,最终把结果汇集到一起。一般来说,每个节点默认起到了 Coordinating Node 的职责。

其他节点类型

还有其他节点类型,虽然不常见,但需要知道:

Hot & Warm Node:不同硬件配置的 Data Node,用来实现冷热数据节点架构,降低运维部署的成本

Machine Learning Node:负责机器学习的节点

Tribe Node:负责连接不同的集群。支持跨集群搜索 Cross Cluster Search

一般在开发环境中,设置单一的角色节点:

master node:通过 node.master 配置,默认 true

data node:通过 node.data 配置,默认 true

ingest node:通过 node.ingest 配置,默认 true

coordinating node:默认每个节点都是 coordinating 节点,设置其他类型全部为 false。

machine learning:通过 node.ml 配置,默认 true,需要通过 x-pack 开启。

主分片及副本

Elasticsearch节点、集群、分片及副本是什么

同样看这个图,3 个节点分别为 Node1、Node2、Node3。并且 Node3 上面有一个主分片 P0 和一个副本 R2。那什么是主分片呢?

主分片,用来解决数据水平扩展的问题。比如上图这个解决可以将数据分布到所有节点上:

节点上可以有主分片,也可以没有主分片

主分片在索引创建的时候确定,后续不允许修改。除非 Reindex 操作进行修改

副本,用来备份数据,提高数据的高可用性。副本分片是主分片的拷贝

副本分片数,可以动态调整

增加副本数,可以一定程度上提高服务读取的吞吐和可用性

如何查看 Elasticsearch 集群的分片配置呢?可以从 settings 从看出:

number_of_shards 主分片数number_of_replicas 副本分片数{ "my_index": {   "settings": {     "index": {       "number_of_shards": "8",       "number_of_replicas": "1"     }   } }}

实战建议:对生产环境中,分片设置很重要,需要最好容量评估与规划

根据数据容量评估分配数,设置过小,后续无法水平扩展;单分片数据量太大,也容易导致数据分片耗时严重

分片数设置如果太大,会导致资源浪费,性能降低;同时也会影响搜索结果打分和搜索准确性

索引评估,每个索引下面的单分片数不用太大。如何评估呢?比如这个索引 100 G 数据量,那设置 10 个分片,平均每个分片数据量就是 10G 。每个分片 10 G 数据量这么大,耗时肯定严重。所以根据评估的数据量合理安排分片数即可。如果需要调整主分片数,那么需要进行 reindex 等迁索引操作。

小结

比如知道了搜索性能场景,例如多少数据量,多大的写入,是写为主还是查询为主等等,才可以确定:

磁盘,推荐 SSD,JVM最大 Xmx 不要超过30G。副本分片至少设置为1。主分片,单个存储不要超过 30 GB,按照这个你推算出分片数,进行设定。

集群中磁盘快满的时候,你再增加机器,确实可能导致新建的索引全部分配到新节点上去的可能性。最终导致数据分配不均。所以要记得监控集群,到70%就需要考虑删除数据或是增加节点可以设置最大分片数缓解这个问题。

分片的尺寸如果过大,确实也没有快速恢复的办法,所以尽量保证分片的size在40G以下。

感谢各位的阅读,以上就是“Elasticsearch节点、集群、分片及副本是什么”的内容了,经过本文的学习后,相信大家对Elasticsearch节点、集群、分片及副本是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Elasticsearch节点、集群、分片及副本是什么

本文链接: https://www.lsjlt.com/news/315894.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Elasticsearch节点、集群、分片及副本是什么
    这篇文章主要讲解了“Elasticsearch节点、集群、分片及副本是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Elasticsearch节点、集群、分片及副本是什么”吧!Elast...
    99+
    2023-06-28
  • MongoDB副本集集群从节点控制台报错10061怎么办
    这篇文章主要介绍MongoDB副本集集群从节点控制台报错10061怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!--------------------------------...
    99+
    2024-04-02
  • mongodb3.4集群搭建实战之高可用的分片+副本集
    前言 最近因为工作的原因,在学习使用mongodb数据库,mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群,分享出来供大...
    99+
    2024-04-02
  • 怎么在MongoDB中添加分片副本集
    这篇文章将为大家详细讲解有关怎么在MongoDB中添加分片副本集,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。流程:新建分片副本集使用addShard命令将分片副本集添加到集群中使用addS...
    99+
    2023-06-14
  • Mongodb中怎么实现副本集和分片
    这篇文章将为大家详细讲解有关Mongodb中怎么实现副本集和分片,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python只用mongo事务在python中...
    99+
    2024-04-02
  • mongodb集群添加节点的方法是什么
    要向MongoDB集群添加节点,可以按照以下步骤进行操作:1. 安装MongoDB:在要添加节点的机器上安装MongoDB软件。确保...
    99+
    2023-09-12
    mongodb
  • MongoDB副本集分片集群一分片config库主机断电导致该分片config库无法启动怎么办
    这篇文章给大家分享的是有关MongoDB副本集分片集群一分片config库主机断电导致该分片config库无法启动怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于机房意外...
    99+
    2024-04-02
  • hadoop集群增加节点的方法是什么
    Hadoop集群增加节点的方法通常有以下几个步骤: 准备新节点:首先需要准备一台新的服务器作为新增节点,确保该服务器满足Hado...
    99+
    2024-03-05
    hadoop
  • elasticsearch集群zendiscovery的Ping机制是什么
    这篇文章主要介绍“elasticsearch集群zendiscovery的Ping机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“elasticsearch集群zendiscovery的Pi...
    99+
    2023-06-30
  • elasticsearch集群cluster主要功能是什么
    这篇文章主要介绍“elasticsearch集群cluster主要功能是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“elasticsearch集群cluster主要功能是什么”文章能帮助大家解...
    99+
    2023-06-30
  • hadoop集群节点ip管理的方法是什么
    Hadoop集群节点的IP地址可以通过以下几种方法进行管理: 静态配置:管理员可以手动在Hadoop集群的配置文件中指定每个节点...
    99+
    2024-03-14
    hadoop
  • redis集群添加删除节点的方法是什么
    要向 Redis 集群中添加或删除节点,可以使用以下步骤: 添加节点: 向 Redis 集群中添加一个新的 Redis 节点。启动...
    99+
    2024-04-02
  • hadoop集群增加节点要注意什么
    确保新节点具有与现有节点相同的配置和操作系统版本,以确保集群的一致性和稳定性。 在添加新节点之前,确保为新节点分配适当的资源...
    99+
    2024-03-05
    hadoop
  • mongodb分片集群部署的方法是什么
    MongoDB分片集群部署的方法包括以下步骤: 部署分片服务器:首先需要创建多个分片服务器,每个分片服务器可以包含一个或多个副本...
    99+
    2024-04-09
    mongodb
  • Oracle添加和删除集群节点的方法是什么
    这篇文章主要介绍“Oracle添加和删除集群节点的方法是什么”,在日常操作中,相信很多人在Oracle添加和删除集群节点的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • MongoDB的副本集同步机制是什么
    MongoDB的副本集同步机制是通过Oplog(操作日志)来实现的。在MongoDB的副本集中,每个节点都保存着一个Oplog,用来...
    99+
    2024-05-07
    MongoDB
  • mongodb副本集搭建的步骤是什么
    搭建MongoDB副本集的步骤如下: 安装MongoDB:在每台服务器上安装MongoDB,并确保MongoDB服务正常运行。 ...
    99+
    2024-04-17
    mongodb
  • redis分片式集群是怎么做的
    redis分片式集群的实现方法:准备6台Linux服务器,在每台服务器上安装redis服务。安装好之后,修改每台服务器的配置文件redis.conf,修改如下几项:#端口分别设置为10000~10005port 10000#开启cluste...
    99+
    2024-04-02
  • redis sentinel集群为什么要3个以上的节点
    这篇文章将为大家详细讲解有关redis sentinel集群为什么要3个以上的节点,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。3个以上是通过增加 sent...
    99+
    2024-04-02
  • elasticsearch节点间通信的transport启动过程是什么
    这篇文章主要介绍“elasticsearch节点间通信的transport启动过程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“elasticsearch节点间通信的transport启动过程...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作