搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Solr|Nutch|Lucene|ES
›
总结型
›
Elasticsearch各个版本介绍及性能测试选择版本
0
0
1
分享
Elasticsearch各个版本介绍及性能测试选择版本
nettman
2019-12-9 17:25:52
发表于
总结型
[显示全部楼层]
只看大图
阅读模式
关闭右栏
0
11240
问题导读
1.Elasticsearch各个版本都新增了哪些功能?
2.ES个版本在各场景上的性能差异有哪些?
3.Elasticsearch性能测试的工具还有哪些?
推荐选择新版本
在使用Elasticsearch之前,我们总是要先选择一个版本,选择最新的版本永远是一个不会错的选择。因为,Elasticsearch作为一个社区活跃的开源软件,有着极快的迭代着开发->反馈->再开发的模式。每个版本都可能有着大量的改进或者新功能,特别是大数据领域本身也在不停的进化着方法论,Elasticsearch从一个开始的只能做全文检索,到增加了列式存储、聚合框架、BKD Tree和优化稀疏数据存储,再到支持向量相似性,可以搜索语音、图片,直到几乎变成软件开发中搜索的代名词。因此,在最新的版本上做开发,基本上你会被Elasticsearch带着前进。
我也在不少公司仍然看到不少团队还在使用2.x版本的ES,每天和相对低下的性能和缺失的功能较劲。我这里大概列举一些在旧版本的ES上工作可能带来的烦恼:
开始有大量的聚合需求,需对各种指标进行聚合,但性能受限,索引膨胀率高。聚合框架 + Block-KD tree (> 5.0)
随着索引数据持续增加,分片变大,需要自动新建索引?Roll over API(> 5.0)
随着数据量的增加或者集群横向扩容,需要动态的调整shard的数量? split API (> 6.2)
更多的用户需要使用Elasticsearch,需要支持SQL查询? Elasticsearch SQL (> 6.3)
OOM问题?需要更精确计算的基于内存的断路器? real-memory circuit breaker(> 7.0)
或许这样说不是特别的直观,或者你觉得这些功能不是必须的,自己手动处理一下也没问题。那么我们从性能上看看。
从Benchmark上查看ES个版本在各场景上的性能差异
Elastic的运维团队针对各个版本的ES,在统一的硬件环境配置下,针对不同的数据场景和指标有一个每夜测试报告。测试结果在
benchmark
可以查看。
测试数据类型
我们先看看有哪些测试数据类型的覆盖:
基本上算很全面了,我们场景的数据类型都有专门的测试。
再看看测试都运行在哪些环境。
不同的软件包配置
bare: Elasticsearch 运行在非加密硬盘上
ear: Elasticsearch 运行在使用linux dm-crypt磁盘加密的硬盘上
docker: Docker运行官方的Elasticsearch镜像
oss: Apache 2.0 license的Elasticsearch (不包含X-Pack)
basic: 包含 X-Pack 的Elasticsearch(basic licence)
trial-security: 包含 X-Pack 的Elasticsearch,安全功能全开并使用TLS链路加密
再看看,都在哪些版本的Elasticsearch上运行
不同的release
1.7.6
2.4.6
5.6.16
6.8.0
7.4.0
master
根据不同的release的参数,我们可以很直观的对比不同版本的Elasticsearch在不同场景下不同的指标表现。
Nested 例子
我们以嵌套文档来举例,看看数据
从上图,我们可以看到,从5.x版本之后开始,文档的索引速度有明显的提升,6.8.0基本上是2.x版本的2倍。
而在索引大小类似的情况下,索引过程多整个磁盘的IO消耗,再持续优化。
这里需要特别强调的是X-pack特别优秀的安全性能,无论是开启磁盘加密或是全链路的TLS/SSL加密,对性能的影响都是微乎其微的,有些数据甚至反常,这里得益于X-pack优秀的性能。这点是Search-Guard完全无法比拟。
GC的时间优化更为明显,特别是Young GC的时间消耗,2.x是最差的,是6.8.0的7倍。
对于相同nested query的响应时间,6.8.0基本上比2.x版本缩短2倍。
在不排序的情况下的term query和match all,7.4的表现极其优秀,因此,Elastic也是注意到,目前Elasticsearch越来越多的用在查询加速的场景,在使用filter比较多时(不用排序),7.4做了特定的优化。
当我们拥有了每个新版本上提供的各种新功能的一个视野,当我们明细了各个版本在不同场景下的性能差异,做出选择哪个版本的ES不是一个难题。但还是有可能,现有的数据不能够完全匹配你的场景,你仍然希望在你自己的场景上去判断是否需要升级到最新的版本。这时,我们需要自己定制化的benchmark
使用Rally自己做性能测试和对比
rally是Elastic开源的专门用于Elasticsearch性能测试的工具,这里就不做过多的介绍,具体可以查看官方文档。
这里只是简单介绍一下应该如何做自己的基线:
使用和线上集群相同的硬件配置搭建单节点集群
使用和线上集群相同的mapping,创建0副本,1分片的索引
使用和线上集群相同的数据进行压测
观察写入的性能,并使用和业务类似的查询请求观察搜索和聚合的性能
压测数据持续导入ES集群,作为基线
可以根据以下教程,去自己生成和生产类似的数据用于测试
当一切数据完备之后,就可以在不同的版本上进行对比测试了:
总结
当完成以上套路之后,相信关于应该使用哪个版本的ES,你已经心知肚明了。。。是的,用最新的GA版本
最新经典文章,欢迎关注公众号
————————————————
作者:点火三周
原文链接:
https://blog.csdn.net/u013613428/article/details/103317806
加微信w3aboutyun,可拉入技术爱好者群
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
nettman
超级版主
关注
2910
主题
3203
帖子
478
粉丝
TA的主题
避坑大厂基础架构
4 天前
Flink CDC:新一代实时数据集成框架
4 天前
蚂蚁面试就是不一样
4 天前
招聘1万人
2024-11-21
为何大厂开发者纷纷抛弃小仓,转向大仓monorepo?
2024-11-21
24小时热文
kafka面试题精选
Nebula Flink Connector 在实时 ETL 的实践
Apache Doris 用户案例集
国家电网公司主数据管理系统技术规范
企业的主数据建设方法论与实践
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈