ElasticSearch 2 (12) - Shard数调优(ElasticSearch性能)
ElasticSearch 2 (12) - Shard数调优(ElasticSearch性能)
摘要
当创建一个索引的时候,我们经常会面对一个问题:要为索引分配多少个shard?多少个replica?对于这个问题,仍然没有明确的统一答案,但是本文会给出一些引导,方便在实施ElasticSearch时给出合适的Shard和Replica数。
版本
elasticsearch版本: elasticsearch-2.x
内容
什么是一个Shard?
Shard就是一个Lucene Index,参照文章(深入理解Shard和Lucene Index)。
Index需要多少个Shard?
回答这个问题,我们需要先谈谈节点,一个集群有多个节点,具体需要多少个节点合适,是另外一个问题,但是这个数字也会影响我们对Shard数的设置。
Shard数 = Node数?
总体上说,当我们节点数和Shard数相等时,ElasticSearch集群的性能可以达到最优。即,对于一个3节点集群,我们为每个集群节点分配一个Shard,总共3个Shard。但是由于ElasticSearch的不可变性(Immutable)的限制,系统无法对Shard进行重新拆分分配,除非重新索引这个文件集合。所以,当我们需要增加更多节点的时候,又希望Shard能利用到增加节点带来的系统性能提升时,我们就不得不进行重新索引,由于重索引开销巨大,这是我们不希望看到的。
StackExchange用ElasticSearch支持它的搜索,当前(2016-3-1日),它网站的ElasticSearch索引占用440GB。
如果需要重新建立索引,将会是一个巨大的开销,为了支持未来可能的水平扩展,我们会为集群分配比node数更多的shard数,也就是说每个节点会有多个Shard。
如果单个node分配多个shard,就会引入另外一系列的性能问题,我们知道对于任意一次完整的搜索,ElasticSearch会分别对每个shard进行查询,最后进行汇总。当节点数和shard数是一对一的时候,所有的查询可以并行运行。但是,对于具有多个shard的节点,如果磁盘是15000RPM或SSD,可能会相对较快,但是这也会存在等待响应的问题,所以通常不推荐一个节点超过2个shard。
3节点6shard,即每个节点2shard,这可以使我们在未来轻松的横向扩展到6个节点,应对许多极端的场景。
Replicas数呢?
Replica也是Shard,与shard不同的是,replica只会参与读操作,同时也能提高集群的可用性。对于Replica来说,它的主要作用就是提高集群错误恢复的能力,所以replica的数目与shard的数目以及node的数目相关,与shard不同的是,replica的数目可以在集群建立之后变更,切代价较小,所以相比shard的数目而言,没有那么重要。
Replica的故事(宕机)
3 node, 3 shard, 0 replica
一个节点宕机
整个服务不可用
3 node, 3 shard, 1 replica (each)
一个节点宕机
两个节点宕机
服务仍然可用
3 node, 3 shard, 2 replica (each)
当存储费用较低时,可以考虑
参考
参考来源:
http://engineering.datarank.com/2015/07/08/balancing-elasticsearch-cluster-by-shard-size.html
https://en.wikipedia.org/wiki/Shard_(database_architecture)
How many shards should Elasticsearch indexes have?
Optimizing Elasticsearch: How Many Shards per Index?
ELASTICSEARCH – HOW MANY SHARDS?
结束
ElasticSearch 2 (12) - Shard数调优(ElasticSearch性能)的更多相关文章
- ElasticSearch - Shard数调优(ElasticSearch性能)
序言 资料 https://blog.csdn.net/waneyongfu/article/details/78215972
- Hadoop作业性能指标及參数调优实例 (三)Hadoop作业性能參数调优方法
作者: Shu, Alison Hadoop作业性能调优的两种场景: 一.用户观察到作业性能差,主动寻求帮助. (一)eBayEagle作业性能分析器 1. Hadoop作业性能异常指标 2. Had ...
- Hadoop作业性能指标及參数调优实例 (二)Hadoop作业性能调优7个建议
作者:Shu, Alison Hadoop作业性能调优的两种场景: 一.用户观察到作业性能差,主动寻求帮助. (一)eBayEagle作业性能分析器 1. Hadoop作业性能异常指标 2. Hado ...
- 二十种实战调优MySQL性能优化的经验
二十种实战调优MySQL性能优化的经验 发布时间:2012 年 2 月 15 日 发布者: OurMySQL 来源:web大本营 才被阅读:3,354 次 消灭0评论 本文将为大家介 ...
- Spark调优_性能调优(一)
总结一下spark的调优方案--性能调优: 一.调节并行度 1.性能上的调优主要注重一下几点: Excutor的数量 每个Excutor所分配的CPU的数量 每个Excutor所能分配的内存量 Dri ...
- Mysql数据库调优和性能优化的21条最佳实践
Mysql数据库调优和性能优化的21条最佳实践 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开 ...
- Java生鲜电商平台-API请求性能调优与性能监控
Java生鲜电商平台-API请求性能调优与性能监控 背景 在做性能分析时,API的执行时间是一个显著的指标,这里使用SpringBoot AOP的方式,通过对接口添加简单注解的方式来打印API的执行时 ...
- Spark调优,性能优化
Spark调优,性能优化 1.使用reduceByKey/aggregateByKey替代groupByKey 2.使用mapPartitions替代普通map 3.使用foreachPartitio ...
- Linux 系统开启最大线程数 调优
系统最大线程数说明 系统可开启的最大线程数,可根据系统本身负载配置进行调优. 查看系统最大线程数 1.查看系统开启的最大线程数. ulimit -u [root@izbp1brwu1w35r1dmj8 ...
随机推荐
- BZOJ3534:[SDOI2014]重建(矩阵树定理)
Description T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回. 幸运 ...
- Velocity.js初步
Js越来越强大了,超乎我的想象,以前JS仅仅只能通过ajax与后台交互,后来又有了Node.js,JS可以用于服务端,然后今天我又发现了JS的动态语言.明天呢?也许不少前端的小伙伴会说,慢些吧,慢些吧 ...
- Python2.7-copy_reg
copy_reg 模块,提供了在 pickle 或是 copy 特定对象时,可以运行一个指定的函数,作为对象的构造器 模块方法: copy_reg.constructor(object):声明一个可调 ...
- Dreammail V4.6.9.2 XSS漏洞利用
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 针对版本: DreamMail 4.6.9.2测试环境:windows xp sp3 python版本:2.6 测试 ...
- phpstorm开发环境搭建流程
1.下载phpstorm 2.网上找注册码 phpstorm 8 license key Learn Programming===== LICENSE BEGIN =====63758-1204201 ...
- 第3章 如何用DAP仿真器下载程序
第3章 如何用DAP仿真器下载程序 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/f ...
- 查看历史命令 history
生产上有文件被清空了,想查查是谁操作的? 通过history查看历史命令: $history |more 也可以通过文件查看历史命令: $vi ~/.bash_history 只显示历史命令,像查一查 ...
- Multi account chang login with multi -thread
void worker_DoWork(object sender, DoWorkEventArgs e) { isBussy = true; if (Common.isChangingAccount) ...
- 20155217《网络对抗》Exp06 信息搜集与漏洞扫描
20155217<网络对抗>Exp06 信息搜集与漏洞扫描 实践内容 各种搜索技巧的应用 DNS IP注册信息的查询 基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 ...
- TreeSet排序相关总结
java的集合这一块在工作中用得还比较多,有些东西老是忘,因此在此记录下来. TreeSet原理 1.特点 TreeSet是用来排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺 ...