Elasticsearch master node、 data node、 client node的区别与各自特点

es集群里的master node、data node和client node到底是怎么个意思,分别有何特点?

master节点

主要功能是维护元数据,管理集群各个节点的状态,数据的导入和查询都不会走master节点,所以master节点的压力相对较小,因此master节点的内存分配也可以相对少些;但是master节点是最重要的,如果master节点挂了或者发生脑裂了,你的元数据就会发生混乱,那样你集群里的全部数据可能会发生丢失,所以一定要保证master节点的稳定性。

data node

是负责数据的查询和导入的,它的压力会比较大,它需要分配多点的内存,选择服务器的时候最好选择配置较高的机器(大内存,双路CPU,SSD... 土豪~);data node要是坏了,可能会丢失一小份数据。

client node

是作为任务分发用的,它里面也会存元数据,但是它不会对元数据做任何修改。client node存在的好处是可以分担下data node的一部分压力;为什么client node能分担data node的一部分压力?因为es的查询是两层汇聚的结果,第一层是在data node上做查询结果汇聚,然后把结果发给client node,client node接收到data node发来的结果后再做第二次的汇聚,然后把最终的查询结果返回给用户;所以我们看到,client node帮忙把第二层的汇聚工作处理了,自然分担了data node的压力。
这里,我们可以举个例子,当你有个大数据查询的任务(比如上亿条查询任务量)丢给了es集群,要是没有client node,那么压力直接全丢给了data node,如果data node机器配置不足以接受这么大的查询,那么就很有可能挂掉,一旦挂掉,data node就要重新recover,重新reblance,这是一个异常恢复的过程,这个过程的结果就是导致es集群服务停止... 但是如果你有client node,任务会先丢给client node,client node要是处理不来,顶多就是client node停止了,不会影响到data node,es集群也不会走异常恢复。

对于es 集群为何要设计这三种角色的节点,也是从分层逻辑去考虑的,只有把相关功能和角色划分清楚了,每种node各尽其责,才能发挥出分布式集群的效果。

更多elasticsearch的知识,请看下面的图:

时间: 2024-08-24 09:31:25

Elasticsearch master node、 data node、 client node的区别与各自特点的相关文章

ElasticSearch 中 master、data 和 client 节点

在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch 集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务.这些功能是由两个属性控制的. 1. node.master 2. node.data 默认情况下这两个属性的值都是true. node.master:这个属性表示节点是否具有成为主节点的资格 注意:此属性的值为 true,并不意味着这个节点就是主节点.因为真正的主节点,是

no data type for node

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode  \-[IDENT] IdentNode: '字段名' {originalText=字段名} 原因是:在hql中引用了一个“字段名”,但字段名没定义或者在别地引用类里面有重复. 建议:检查配置文件以及pojo,看字段名是否一致或者是否定义 建议二: 修改sql语句(使用别名)  比如 select 字段名 fro

输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示

需求:输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示. 为什么会有这样的需求呢?在重新搭建redis cluster的时候,创建集群期间,发现: redis-trib.rb create --replicas 1 \5.5.5.101:29001 5.5.5.102:29002 5.5.5.103:29003 \5.5.5.102:29001 5.5.5.103:29002 5.5.5.101:29

Node.js入门:Node.js&NPM的安装与配置

Node.js安装与配置  Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介绍Node.js的安装和配置.(本文一律以0.6.1为例,0.6的其余版本,只需替换版本号即可.从http://nodejs.org/#download可以查看到最新的二进制版本和源代码). Windows平台下的Node.js安装 在过去,Node.js一直不支持在Windows平台下原生

Node.js搭建本地Node环境

首先去官网下载安装包,安装分两种,一种是Source Code源码安装,一种是编译后的二进制文件安装. (一) 二进制文件安装 简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你进入到对应文件的中执行命令行一点问题都没有,不过不是全局的,所以将这个设置为全局就好了. 设置全局:     ln -s /home/kriry/node/bin/node /usr/local/bin/node     ln -s /home/kriry/node/bin/npm /usr/local

【Node.js】初识Node.js

因组里项目需要,我和另外一名同事要学习Node.js.之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术,而且还有项目实战锻炼,还不错. 一.  Node.js架构 1. Node.js跨平台支持*nix与Windows得益于Libuv中间层,通过它去调用不同操作系统的底层操作. 2. Node.js底层由C++实现,因此可以编写C++扩展模块,经封装后由JS调用,这样可以解决需要提升性能时(例如频繁的

node起步(初级node教程-02)

我们在上一节中了解了什么是node以及简单的node安装和事件式编程.呵呵...今天内容是 什么是模块? 什么是包? 如果我写好包了怎么发布出去给别人用? 我写好js脚本后怎么找问题,(怎么调试问题) 怎么实现远程调试? 最后一个就是调试有没有其他的现成的工具可供我们使用 最厚的问题我就在这里答了吧,因为我也没用IDE调试的,在这里就不细说了,因为还得上传老多IDE的使用图片感觉挺麻烦就不再累赘的描述了,我就在这里简单的说下了 当然调试js的IDE也是有的比如eclipse添加chrome De

node.js&pm2搭建node生产环境

node.js下载地址https://nodejs.org/en/download/stable/ 下载截图 建议采用稳定编译过的版本,source code稍麻烦,编译过的直接可用,安装超级简单,红色的是centos X64可用地址. https://nodejs.org/dist/v5.7.1/node-v5.7.1-linux-x64.tar.xz 1.下载安装包 [[email protected] software]# wget http://nodejs.org/dist/v5.7.

hbuilder开发node.js,以及node.js的回调函数

1.hbuilder安装node.js开发插件 工具---插件安装 然后重启Hbuilder让nodeeclipse生效就行了 运行:运行方式选择node应用就可以运行node.js了. 显示出了控制台,说明nodeJS可以在Hbuilder中使用了.(PS,电脑要先安装过node.js,Hbuilder只是辅助) 2.node.js的回调函数 原文地址:https://www.cnblogs.com/xingyue1988/p/8779633.html