关于Data Node 和 Coordinating Node
- Data Node:
- 可以保存数据的节点,叫做Data Node,负责保存分片数据。在数据扩展上起到了至关重要的作用
- 节点启动后,默认就是数据节点。可以设置
node.data: false
禁止 - 由Master Node决定如何把分片分发到数据节点上
- 通过增加数据节点可以解决数据水平扩展和解决数据单点问题
- Coordinating Node:
- 负责接受Client的请求, 将请求分发到合适的节点,最终把结果汇集到一起
- 每个节点默认都起到了Coordinating Node的职责
其他节点类型
Hot & Warm Node
:冷热节点。不同硬件配置 的Data Node,用来实现Hot & Warm
架构,降低集群部署的成本
不同硬件配置,通常是CPU跟硬盘。硬盘根据冷热数据类型,可以选择固态或者机械硬盘
Ingest Node
:数据前置处理转换节点,支持pipeline管道设置,可以使用ingest对数据进行过滤、转换等操作Machine Learning Node
:负责跑机器学习的Job,用来做异常检测Tribe Node
:Tribe Node连接到不同的Elasticsearch集群,并且支持将这些集群当成一个单独的集群处理
以下是一个多集群业务架构图:
1.2.1.1 Master Node主节点的功能
Master节点主要功能::
- 管理索引和分片的创建、删除和重新分配
- 监测节点的状态,并在需要时进行重分配
- 协调节点之间的数据复制和同步工作
- 处理集群级别操作,如创建或删除索引、添加或删除节点等
- 维护集群的状态
1.2.1.2 Data Node数据节点的功能
Data Node数据节点的功能:
- 存储和索引数据:Data Node 节点会将索引分片存储在本地磁盘上,并对查询请求进行响应
- 复制和同步数据:为了确保数据的可靠性和高可用性,ElasticSearch 会将每个原始分片的多个副本存储在不同的 Data Node 节点上,并定期将各节点上的数据进行同步
- 参与搜索和聚合操作:当客户端提交搜索请求时,Data Node 节点会使用本地缓存和分片数据完成搜索和聚合操作
- 执行数据维护操作:例如,清理过期数据和压缩分片等
官方定义:
数据节点保存包含您已索引的文档的分片。数据节点处理数据相关操作,例如 CRUD、搜索和聚合。这些操作是 I/O、内存和 CPU 密集型操作。监视这些资源并在过载时添加更多数据节点非常重要。
拥有专用数据节点的主要好处是主角色和数据角色的分离。
要创建专用数据节点,请设置:node.roles: [ data ]
在多层部署体系结构中,您可以使用专门的数据角色将数据节点分配到特定层:data_content
、data_hot
、data_warm
、data_cold
或data_frozen
。一个节点可以属于多个层,但具有专用数据角色之一的节点不能具有通用data角色。
1.2.1.3 Coordinate Node协调节点的功能
官方定义:
诸如搜索
请求或批量索引
请求之类的请求,它们可能涉及不同数据节点上保存的数据。例如,搜索请求分两个阶段执行,这两个阶段由接收客户端请求的节点(协调节点)协调。
- 在分散阶段,协调节点将请求转发到保存数据的数据节点。每个数据节点在本地执行请求并将其结果返回给协调节点
- 在收集阶段,协调节点将每个数据节点的结果缩减为单个全局结果集
每个节点都是隐式的协调节点。这意味着具有显式空角色列表的节点node.roles将仅充当协调节点,无法禁用。因此,这样的节点需要有足够的内存和 CPU 才能处理收集阶段。
1.2.1.4 Ingest Node协调节点的功能
官方定义:
在实际的文档索引发生之前,使用摄取节点对文档进行预处理。摄取节点拦截批量和索引请求,应用转换,然后将文档传递回索引或批量api。
默认情况下,所有节点都启用摄取,因此任何节点都可以处理摄取任务。您还可以创建专用的摄取节点。如果要禁用节点的摄取,请在elasticsearch. conf中配置以下配置。yml文件:node.ingest: false
要在索引之前对文档进行预处理,请定义一个指定一系列处理器的管道。每个处理器都以某种特定的方式转换文档。例如,管道可能有一个处理程序从文档中删除字段,然后有另一个处理程序重命名字段。然后,集群状态存储配置的管道。
要使用管道&