【Elasticsearch】深入Elasticsearch集群
7.1 节点发现
启动Elasticsearch的时候,该节点会寻找有相同集群名字且课件的主节点,如果有加入,没有自己成为主节点,负责发现的模块两个目的
选出主节点以及发现集群的新节点
7.1.1发现的类型
Elasticsearch允许使用zen发现,在config里面的Elasticsearch.yml里面配置zen的信息即可,使用2.1.0的时候是这样的
7.1.2主节点
发现的功能之一就是选主节点,应该是zookeeper完成的,并且保持之间有相应
配置主节点和数据节点:Elasticsearch允许节点同时成为主节点和数据节点,但是可以根据自己的要求去设置,比如只做主节点,不做数
据节点等
主节点选取的配置:脑裂是比如一个集群十个节点,有三个断开,然后三个成为一个集群,所以一共有两个集群,成为脑裂,为了避免这种
情况,需要设置zen.minimum_master_nodes即可,设置为总个数+1的50%才可以成为集群,即可防止这种情况发生
7.1.3 设置集群名
设置Elasticsearch.yml文件里面cluster.name的值
配置多播:多播是zen发现的默认方法,除了常见设置,还可以控制群组地址,多播通信端口号,多拨请求被认为有效的时间,以及
Elasticsearch应该绑定的地址
配置单播:即需要配置ip以及端口号,以便被集群发现
7.1.4 节点的ping设置
可以控制或者改变默认的ping设置,ping是节点间发送的信号用来检测是否运行,可设置时间间隔,重复次数,以及默认等待时间等
7.2 时光之门与回复模块
一些重要信息例如索引、索引数据等信息需要被持久化到别的地方,里边在发生意外的时候恢复时读取,这就时时光之门的作用
7.2.1 时光之门
时光之门的类型可以在elasticsearch.yml里面添加gateway.type属性,设置为local,默认的类型是在本地文件系统中存储索引
7.2.2 恢复控制
可以设置什么时候启动恢复的过程,例如总共十个节点,在八个节点之后恢复,或者在八分钟之后恢复这样的设置
额外的gateway恢复选项
recover_after_master_nodes:指定多少有资格成为主节点的节点在集群中出现时才开始恢复
recover_after_data_nodes:指定多少个数据节点在急群众出现时才开始启动恢复
7.3 为高查询和高索引吞吐量准备Elasticsearch集群
如何调优使集群可以应对高查询以及高索引吞吐量
7.3.1 过滤器缓存
过滤器缓存可以提高查询速度,尤其是那些包含已经执行过的过滤器的查询,包含两类,一类是节点过滤器缓存,为默认的,另外一种为索
引过滤器缓存,第一种缓存可设置成使用特定大小的内存或者分配给Elasticsearch总内存的百分比
7.3.2 字段数据缓存和断路器
字段数据缓存:当查询对字段执行排序或者切面时,Elasticsearch把该字段的数据加载到内存,以便快速访问,可以设置
indices.fileddata.cache.size属性控制,可以设置为绝对值或者百分比,均为节点级别,也可以使用indices.filddata.cache.expire来
控制设置最大的不活动时间,但是一般情况下不设置,因为重建字段数据缓存是非常昂贵的
断路器:允许估计一个字段加载到缓存所需要的内存,通过抛出异常防止字段加载内存,造成内存爆炸,有两个属性,第一个是
indicies.filddata.breaker.limit属性,默认为80%,第二个是indices.fielddata.breaker.overhead默认为1.03
7.3.3 存储模块
存储模块控制如何写入索引数据,可以存储在内存或者一个持久化的磁盘中,内存快但是不稳定,索引慢,但是容忍故障
使用index.store.type来制定哪种存储类型
simplesf:基于磁盘的存储,对并发访问的性能不够好
niofs:使用javanio类访问索引文件,高并发性能好,但是不能再windows下
mmapfs:基于磁盘的存储,在内存中映射索引文件,为64为系统下的默认存储,读操作更快,但是要有足够数量的虚拟地址空间
memory:将索引存在内存中,必须内存够大,否则会失败
7.3.4 索引缓冲和刷新率
Elasticsearch允许设置索引最大的内存数,例如设置百分比等,还有indices.memory.min_shard_index_buffer_size默认为4mb,为每个分
片设置最小索引缓冲
索引刷新率:index.refresh_interval属性,指定多久刷新一次,默认为1s,值越小表示时间越短,也意味着索引和搜索会变慢,在重建索
引截断,建议将其设置为-1
7.3.5线程池得配置
Elasticsearch公开的线程池类型有,cache无限制的线程池,fixed固定大小的线程池,大小由size设置
重要的线程池有下面几个:
index:用来索引和删除操作,默认为fiexed,默认可用处理器的数量为300
search:用于搜索和计数请求,默认为fixed,size为可用处理器的数量乘以3,队列的size默认为1000
suggest:用于建议器的请求,默认为fixed,size为可用处理器的的数量,队列的size默认为1000
get:用于实时get请求,fixed,队列默认size为50
bulk:用于批量操作,fixed,size默认为可用处理器的数量(这句话应该如何理解),队列的size默认为50
线程池得配置可以在yml文件设置,也可以使用集群的更新api来更新,此处给出例子了
7.3.6 结合起来,一些通用建议
选择正确的存储:在64位时选用mmapfs,如果没64位,为unix系统选择niofs,为windows选择simplefs
索引刷新率:刷新率越快,查询越慢,索引吞吐量越低
优化线程池:强烈建议调整默认线程池,尤其是查询操作
优化合并过程:查询快需要更少的段,索引快需要更多的段,在什么时候合并需要自己根据情况取舍
字段数据缓存和断路器:限制字段数据缓存大小,设置断路器,两者结合确保不会遇到内存问题
索引的内存缓冲区:内存缓冲区的内存越多,越多的文档可以在里面保存,可以设置10%-30%
优化事务日志:Elasticsearch内部的translog模块,默认情况保存最多5000次操作,最大不超过200mb,如果想提高索引吞吐量,又可以承
担数据对搜索操作不可见的时间更长,可以提高这个默认值,如果提高可能做完索引到搜索课件需要更长的时间
7.4 模板和动态模板
索引模板的功能,不需要每次都创建映射等
模板的一个例子:给出模板的例子
在文件中存储模板:可以在config/templates目录中存放模板
7.4.2 动态模板
给出一个动态模板的例子,两种匹配模式,match模式使用该模板,unmatch模式使用该模板
更多请点:http://blog.csdn.net/molong1208?viewmode=contents
【Elasticsearch】深入Elasticsearch集群的更多相关文章
- 原创 | 手摸手带您学会 Elasticsearch 单机、集群、插件安装(图文教程)
欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site/ ...
- 全文搜索引擎 Elasticsearch 入门:集群搭建
本文主要介绍什么是 ElasticSearch 以及为什么需要它,如何在本机安装部署 ElasticSearch 实例,同时会演示安装 ElasticSearch 插件,以及如何在本地部署多实例集群, ...
- 使用Spring Data ElasticSearch+Jsoup操作集群数据存储
使用Spring Data ElasticSearch+Jsoup操作集群数据存储 1.使用Jsoup爬取京东商城的商品数据 1)获取商品名称.价格以及商品地址,并封装为一个Product对象,代码截 ...
- Elasticsearch高级之-集群搭建,数据分片
目录 Elasticsearch高级之-集群搭建,数据分片 一 广播方式 二 单播方式 三 选取主节点 四 什么是脑裂 五 错误识别 Elasticsearch高级之-集群搭建,数据分片 es使用两种 ...
- 1.ElasticSearch系列之集群部署
第一步:安装JDK JDK要求jdk1.8+,不安装也可以,ES自带JDK 第二步:系统配置 2.1 禁用交换区 sudo swapoff -a 2.2 开最大文件数的限制 编辑文件 /etc/sec ...
- Elasticsearch 教程--分布式集群
集群 补充章节 正如前文提到的,这就是第个补充的章节,这里会介绍 Elasticsearch 如何在分布式环境中运行. 本章解释了常用术语,比如 集群 (cluster), 节点 (node) 以及 ...
- ElasticSearch之二——集群
ElasticSearch 集群 首先看下ElasticSearch(ES)的架构: 术语解释: cluster:代表一个集群,集群中有多个节点,其中有一个master节点,master通过选举自动产 ...
- Elasticsearch分布式搜索集群配置
配置文件位于%ES_HOME%/config/elasticsearch.yml文件中,用Editplus打开它,你便可以进行配置. 所有的配置都可以使用环境变量,例如:node.rack: ${ ...
- Elasticsearch 安装与集群配置
一.软件版本 操作系统:CentOS-6.5-x86_64 ES版本:5.0 主机:192.168.63.246 主机: 192.168.63.242 二.部署环境规划: 1. 需求:jdk版本: ...
- ELK 之一:ElasticSearch 基础和集群搭建
一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...
随机推荐
- 如何下载网页上的视频 并且 flv 格式转化成 MP4
链接:http://www.jb51.net/softjc/222135.html https://jingyan.baidu.com/article/25648fc162f2899190fd0042 ...
- I/O(输入/输出)---序列化与反序列化
概念: 序列化就是将对象的状态存储到特定的介质中的过程,也就是将对象状态转换为可保持或传输格式的过程. 反序列化则是从特定存储介质中将数据重新构建对象的过程.可以将存储在文件上的对象信息读取,然后重新 ...
- Jenkins持续集成企业实战系列之Jenkins手动构建-----04
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- pytest的一些你爱不释手的插件
1. pytest-html 安装: pip install pytest-html # 通过pip安装pytest-html 运行测试文件的时候,命令行加上对应参数即可 比如:pytest test ...
- Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合
一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...
- gym 100589A queries on the Tree 树状数组 + 分块
题目传送门 题目大意: 给定一颗根节点为1的树,有两种操作,第一种操作是将与根节点距离为L的节点权值全部加上val,第二个操作是查询以x为根节点的子树的权重. 思路: 思考后发现,以dfs序建立树状数 ...
- VBS添加Windows登陆账号
Set o=CreateObject( "Shell.Users" ) Set z=o.create("test") z.changePassword &quo ...
- IOS不支持overflow: hidden;
IOS不支持overflow: hidden; 假设页面上有个弹出窗,弹出窗出现后,只想让用户的视觉锁定在弹出窗上,正常我们会想到用overflow:hidden这个属性来实现,如下 html{ ov ...
- 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
下面的转:http://www.cnblogs.com/shunyao8210/archive/2008/11/13/1332591.html 总结1:附件参数g的用法 表达式加上参数g之后,表明可以 ...
- Q942 增减字符串匹配
给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length. 返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i ...