发现,故障修复以及恢复

  在发现节点,主要是使用ES的zen模块来进行发现,发现的目的就是加入集群,zen的发现有两种模式分别是单播和组播,单播是指配置好了要发现的节点IP,组播则是指不配置具体IP,向局域网广撒网,寻找同名节点,并组成集群。

  为了避免在组成集群的时候导致"脑裂"情况,即因为网络通信原因,集群通信被分成了几部分,因为ES集群具有选主的功能,每个部分有组成小集群;通过配置集群的最小组织成员数,比如半数+1,保证了当前集群机器,最多只能组成一个集群,如果有因为某个原因,某台机器离开,也无法再组织处一个新的集群。

  集群选举出来的master和data/client节点将会当时互相ping;如果master无法和data/client节点ping通,那么将会标记该节点下线;data/client节点无法和master通信,那么将会触发选主。

  关于故障修复,在ES里面故障修复就是发生在本地,ES里面的名词叫"本地网关",他是一个组件,用于恢复ES在本地里面的数据,这里包括元数据以及文档数据。恢复API是_recovery?pretty;但是恢复我理解应该是在集群重启之后自动进行的这个过程其实并不需要太多的人为干预。但是修复并不是像我们想象的那么简单,里面有很多配置,比如可以指定节点数达到多大才开始进行恢复,如果后来进入的节点可能因为错过了而无法恢复,因为恢复过程是由ES内容通过UDP指令方式(Java API)下发下去的,比如8台机器,配置满足了5台机器恢复,那么剩下的三台可能会因为加入完了而被推迟恢复,或者不背恢复。除非重启。

部落(tribe)

  接着说一下ES里面的部落:tribe,可以在查询过程中链接两个集群的数据,查询的数据将会汇总到tribe节点,有tribe节点对数据进行整合再发送给client;tribe还可以写数据,但是这里有一个限制就是写的索引只能是一个集群所有;如果写入两个集群同名索引,那么只能成功写入一个,至于写入哪一个可以通过配置偏好实现。可以通过配置指明tribe只能读,不能写。

提高性能

  如果数据频繁的更新,查询性不可重复(比如日志量更新量很大,不断查询最近15分钟日志),其实缓存的价值并不是很大;

  对于内存压力很大的排序,汇总等处理,使用docValues来进行数据的字段级别的缓存,他占用极少的内存;

  建议关闭Unix的内存关闭,bootstrap.mlockall=true;

  热点线程:_nodes/hot_threads;可以获取那些占用了大量内存和cpu的线程,可以指定返回的条数,另外返回的内容不是json,而是一段组织好的文本;

  扩展ES:有水平和垂直两种,重点说一下垂直。两种方式:多分片和多副本;如果瓶颈在于硬盘不够了,那么增加分片,做存储的负载均衡;如果瓶颈在于查询的压力,那么增加副本做请求的负载均衡;

  关于副本,ES提供了一种自动创建副本的机制,就是实现某些索引的数据自动在所有的节点进行部署副本,这类数据首先是别频发使用的,比如基础数据,另外就是占用空间不能太大,否则每个节点都部署,存储压力会很大。

提高新能之对于高负载的场景:

  存储使用default,

  考虑延长刷新时间,默认是1s,设置为10s~30s,减少I/O压力;

  优化线程池,注意大多数情况下默认配置是OK的,当且仅当主机计算能力有富余,同时操作有队列(有积压)的情况下,需要考虑调整线程池;

  控制合并过程,主要控制段(segment)的大小,段是Lucene里面的物理存储单元,段越小,导致段很多,会导致查询变慢,内存使用量增加,但是索引会变得很快;如果你希望加快查询那么控制段的大小在一个相对较大的程度,这样会减少段的数量;

  限流,可以控制I/O流量;

  分布式,通过分布式,比如分片来减轻存储的压力;

提高性能之对于高频查询的场景:

  尽量多利用缓存,比如过滤器缓存(倒排索引),分片缓存(非倒排索引);

  使用路由;减少因为合并各方数据浪费的时间;

提高性能之对于高索引场景:    

  批量索引,注意控制段的大小,不要过大。

ElasticSearch(七)管理ES的更多相关文章

  1. Elasticsearch前沿:ES 5.x改进详解与ES6展望

    转:http://www.dataguru.cn/article-11094-1.html 曾勇(Medcl),Elastic 工程师与布道师,2015 年加入 Elastic 公司.加入 Elast ...

  2. ElasticSearch(简称ES)

    Windows下安装ElasticSearch   ElasticSearch(简称ES)是一个基于Lucene的分布式全文搜索服务器,和SQL Server的全文索引(Fulltext Index) ...

  3. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  4. Elasticsearch使用系列-ES增删查改基本操作+ik分词

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ...

  5. elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)

    一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RE ...

  6. Elasticsearch学习系列七(Es分布式集群)

    核心概念 集群(Cluster) 一个Es集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识 节点(Node) 一个Es实例就是一个Node.Es的配置文件中可以通过node.ma ...

  7. ES开源工具 elastichd 的使用(另一个elasticsearch可视化管理)

    1. 获取elastichd镜像 docker pull containerize/elastichd 2. 启动镜像 docker run -p 9800:9800 -d containerize/ ...

  8. ElasticSearch入门篇Ⅰ --- ES核心知识概括

    C01.什么是Elasticsearch 1.什么是搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,各种app IT系统的搜索:OA软件,办公自动化软件,会议管理,员工管理,后台管理系 ...

  9. 关于.Net Core使用Elasticsearch(俗称ES)、Kibana的研究说明

    关于ElasticSearch Elasticsearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本.数字.地理空间.结构化和非结构化数据.Elasticsearch 在 Apa ...

随机推荐

  1. 18-09-27 pandas 学习02

    如何系统的学习python 中有关数据分析和挖掘相关的库?什么是系统的学习?系统的学习就是一个先搭建只是框架体系,然后不断填充知识看,不断更新迭代的过程. Pandas,numpy,scipy,mat ...

  2. git中工作区,缓存区,本地库,远程库的简要区别

    git中工作区,缓存区,本地库,远程库的简要区别 实际上前三个名词对应到实体,都是你从远程仓库克隆下来的那个项目目录!只不过工作区就是你实际看到的目录和目录里的内容,当你修改/添加/删除了从远程仓库c ...

  3. Day9作业及默写

    1,整理函数相关知识点,写博客. 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def func(obj): return obj[1::2] 3, ...

  4. JAVA中将byte[]数组转成16进制字符串

    方法一: /** * byte数组转化为16进制字符串 * @param bytes * @return */ public static String byteToHexString(byte[] ...

  5. ubuntu + samba 共享失败

    主机版本:ubuntu14.04 问题描述:Samba服务配置后仍然不通. samba服务这么成熟的东西,本以为在ubuntu上修改下smb.conf重启就得了,但是访问还是失败. 表现是,可以看到s ...

  6. idea 中新建Servlet

    本文转载自 :itellij idea创建javaWeb以及Servlet简单实现  一.创建并设置javaweb工程 1.创建javaweb工程File --> New --> Proj ...

  7. 通过修改源码,免插件实现wordpress去除链接中的category

    将以下代码加在主题目录的functions.php /** * 去除category */ add_action('load-themes.php', 'no_category_base_refres ...

  8. NOI-1.3-11-计算浮点数相除的余数

    11:计算浮点数相除的余数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 计算两个双精度浮点数a和b的相除的余数,a和b都是正数的.这里余数(r)的定义是: ...

  9. 单调栈运用2----(xdoj-1156)

    #include <bits/stdc++.h> using namespace std; ; int num[N]; int len; int top; int t; deque < ...

  10. mask-code-python

    tf.sqeeze: 给定张量输入,此操作返回相同类型的张量,并删除所有尺寸为1的尺寸. 如果不想删除所有尺寸1尺寸,可以通过指定squeeze_dims来删除特定尺寸1尺寸.如果不想删除所有大小是1 ...