当前位置: 首页>数据库>正文

es一个节点可以处理多少数据 es的节点是什么

前言

当我们已经学会对于ES的基本使用之后,如果想进一步掌握ES,并能够正确运用,以及遇到问题后的调优,那么一定就要理解ES中的整体架构设计,这其中又涵盖了很多重要的概念,所以我们就先从这些重要的概念开始学起。

集群(Cluster)

ES天生就是以集群方式运行,一个集群由一个或者多个节点组成,通过唯一的名称进行标识,默认集群名称为elasticsearch,可以在config/elasticsearch.yml中进行配置。

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_数据,第1张

节点(Node)

节点指的就是单个ES实例,本质上就是一个JAVA进程,一个集群由一个或者多个节点组成,测试时我们可以把多个节点部署到一台服务器中,生产环境中建议一台服务器运行一个节点。

每个节点通过配置的集群名称来加入一个指定的集群,每个节点又有一个属于自己的节点名称,同样可以在elasticsearch.yml文件中指定。

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_搜索_02,第2张

根据node的作用不同,又可以分为如下几种:

master-eligible node

每个节点启动后,默认就是一个master-eligible 节点。

master-eligible节点可以参与选主,成为master节点,只有master节点才能修改集群中的状态信息,它可以管理整个集群的设置及变化,包括:创建,更新,删除 index;添加或删除 node;为 node 分配 shard。

data node

顾名思义,就是用来保存数据的节点,负责保存分片数据,在数据横线扩展上起到了重要的作用。

coordination node

同样默认情况下每个节点都是coordination node,它可以接受外部的请求,并转发到相应的节点来处理,最终再把结果汇集到一起返回给客户端。

ingest node

数据接入节点,默认情况下每个节点也都是ingest node,它主要用来在对文档进行索引之前做预处理,比如:pipepline。

machine learning node

专门负责跑机器学习任务的节点。

以下节点类型,都可以通过elasticsearch.yml来进行定义。如果下面都设置为false,那么节点就是单纯的coordination node,生产环境中,建议让题个node做专有的功能及角色。

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_搜索_03,第3张

专属data node

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_elasticsearch_04,第4张

专属master-eligible节点

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_搜索_05,第5张

专属ingest节点

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_es一个节点可以处理多少数据_06,第6张

专属coordination节点

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_es一个节点可以处理多少数据_07,第7张

专属machine learning节点

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_数据_08,第8张

整体ES机构中,节点布局如下图

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_数据_09,第9张

分片(shard)

为了更好的支持大量数据的存储以及大量的搜索请求,ES会将索引划分为多份进行存储,每一份索引文件就是一个分片,当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置 到集群中的任何节点上。 分片之所以重要,主要有两方面的原因:

  • 允许你水平分割/扩展你的内容容量
  • 允许你在分片(潜在地,位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量

根据分片的类型可以分为:primary shard 和 replica shard。

主分片(primary shard)

每个文档都存储在一个Primary shard。 索引文档时,它首先在 Primary shard上编制索引,然后在此分片的所有副本上(replica)编制索引。索引可以包含一个或多个主分片。 此数字确定索引相对于索引数据大小的可伸缩性。 创建索引后,无法更改索引中的主分片数,
除非Reindex。

副本分片(replica shard)

每个主分片可以具有零个或多个副本。 副本是主分片的副本,有两个目的:

  • 提供可用性:如果主分片故障,可以将副本分片提升为主分片
  • 提高吞吐量:replica shard和primary shard都可以完成get/search请求。

注意:为了保证可用性,主分片与该主分片对应的副本分片不能存放在同一个节点上。

下图表示某个索引,有3个主分片和1个副本分片(1个副本分片的含义指的是:每一个主分片都配一个副本分片),并且每个主分片和它对应的副本分片都不会同时出现在一个节点上。

es一个节点可以处理多少数据 es的节点是什么,es一个节点可以处理多少数据 es的节点是什么_数据_10,第10张

分片的设置

分片数过小

- 单个分片数据量过大,导致吞吐量下降。
- 无法通过增加节点来实现水平扩展。

分片数过多

- 影响搜索结果的相关性打分,影响统计结果的准确性。
- 单个节点上过多的分片,会导致资源浪费,并且也会影响性能。

分片的健康

  • 红色:集群中未分配至少一个主分片。
  • 黄色:已分配所有主副本,但未分配至少一个副本分片。
  • 绿色:已分配所有分片。

文档

ES中的文档就类似于表中的一条记录,它是索引或者搜索的最小数据单元,包含具体的字段和值,通常用JSON形式表示。



https://www.xamrdz.com/database/6c51960840.html

相关文章: