ElasticSearch(七)管理ES
发现,故障修复以及恢复
在发现节点,主要是使用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的更多相关文章
- Elasticsearch前沿:ES 5.x改进详解与ES6展望
转:http://www.dataguru.cn/article-11094-1.html 曾勇(Medcl),Elastic 工程师与布道师,2015 年加入 Elastic 公司.加入 Elast ...
- ElasticSearch(简称ES)
Windows下安装ElasticSearch ElasticSearch(简称ES)是一个基于Lucene的分布式全文搜索服务器,和SQL Server的全文索引(Fulltext Index) ...
- 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作
spring boot 2.X集成ES 进行CRUD操作 完整版 内容包括: ============================================================ ...
- Elasticsearch使用系列-ES增删查改基本操作+ik分词
Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ...
- 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 ...
- Elasticsearch学习系列七(Es分布式集群)
核心概念 集群(Cluster) 一个Es集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识 节点(Node) 一个Es实例就是一个Node.Es的配置文件中可以通过node.ma ...
- ES开源工具 elastichd 的使用(另一个elasticsearch可视化管理)
1. 获取elastichd镜像 docker pull containerize/elastichd 2. 启动镜像 docker run -p 9800:9800 -d containerize/ ...
- ElasticSearch入门篇Ⅰ --- ES核心知识概括
C01.什么是Elasticsearch 1.什么是搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,各种app IT系统的搜索:OA软件,办公自动化软件,会议管理,员工管理,后台管理系 ...
- 关于.Net Core使用Elasticsearch(俗称ES)、Kibana的研究说明
关于ElasticSearch Elasticsearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本.数字.地理空间.结构化和非结构化数据.Elasticsearch 在 Apa ...
随机推荐
- <Google><APAC><kickstart><2017.05.07><2017RoundB>
Google APAC kickstart 网址链接 我的所有solution代码和文件请点击 前言 这个比赛的题怎一个变态了得,虽然是第一次参赛,抱着熟悉流程的心态去的,但仍然被虐得一颤一颤的╮(╯ ...
- synchronized(五)
package com.bjsxt.base.sync005;/** * synchronized的重入 * @author alienware * */public class SyncDubbo2 ...
- debian镜像下载地址
http://cdimage.debian.org/debian-cd/9.8.0-live/amd64/iso-hybrid/
- G++ C++之区别
1.遇到精度用C++ 2.G++内存超限,C++过了 其他都用G++
- 地理空间数据云--TM影像下载
实验要用到遥感影像,,TM,,之前是可以在美国USGS上下载的,但是要FQ了,有点麻烦,, 想到之前本科实在地理空间数据云平台下载的,就试了一下以前的账号,完美!,, TM数据很丰富,到2017年的都 ...
- c++ 中:和::理解
1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...
- google和baidu搜索命令
在google里面搜索一点儿老外的资料的时候发现搜不到我想要的东西,以前貌似见过一个搜索命令的但是一时想不起来了,所以就去搜索了一下搜索命令,常用的在这里全部列举出来: google:绿色的较为常用的 ...
- 20165228 预备作业3 Linux安装及学习
(一)安装虚拟机 根据娄老师给的Ubuntu版本和安装教程,我曾遇到如下问题: Q1:首先遇到的问题是没有开启虚拟化 解决方法:在重启电脑时进入BIOS>Configuratio > In ...
- Python中的基本语法
#Python的基本语法: #1.了解缩进 #Python中没有{}来表示一个代码块,但是Python使用缩进来完成区别代码框架 #那么在Python中一个缩进一般等于4个空格,当然你也可以使用TAB ...
- (10)MySQL触发器(同时操作两张表)
什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...