前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch压测工具:esrally离线使用详解

ElasticSearch压测工具:esrally离线使用详解

原创
作者头像
BH8ANK
修改2020-12-07 11:49:19
6.9K22
修改2020-12-07 11:49:19
举报
文章被收录于专栏:云技术分享云技术分享

原创声明:本文首发腾讯云·云+社区,未经允许,不得转载

前言:

esrally是一款用于ElasticSearch的开源压测工具。默认情况下,其工作方式是:在线获取其位于海外主机上的数据集,然后在本地执行压测。因此,在国内网络情况下(或某些没有网络的主机上),在线获取数据集这一步骤将非常耗时甚至无法完成。

官网文档:https://esrally.readthedocs.io/en/latest/

然而,官网文档中,对于离线使用的方法基本是含糊其辞,几乎无法参考。

下面,通过实践和摸索,介绍一下其离线使用的方法。


环境简介:

腾讯云主机CVM:CentOS 7.6 IP:10.0.0.15

ElasticSearch实例:ES 7.5.1 IP&PORT:10.0.0.149:9200 UserName&PassWord: elastic,QAZwsx123

安装:

1,安装python3

无需卸载CentOS7自带的python2.7,直接安装python3即可

如果不安装 python3-devel.x86_64,后面执行pip3 install esrally,就会报错。

代码语言:shell
复制
yum install python3 python3-devel.x86_64 -y

2,下载安装jdk 13

代码语言:javascript
复制
https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

jdk_13下载001
jdk_13下载001

jdk_13下载002
jdk_13下载002

然后rpm安装

代码语言:shell
复制
rpm -ivh jdk-13.0.2_linux-x64_bin.rpm

配置环境变量,在 /etc/profile文件的末尾加入以下内容

代码语言:javascript
复制
export JAVA_HOME=/usr/java/jdk-13.0.2
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

并执行下列命令使环境变量生效

代码语言:shell
复制
source /etc/profile

3,安装 git 1.9以后的版本(略)

注意:需删除CentOS7自带的git 1.8版本。

4,安装esrally

执行下列命令

代码语言:javascript
复制
pip3 install esrally

5,检查是否完成安装

任意路径执行下列命令

代码语言:javascript
复制
esrally configure

esrally安装检查
esrally安装检查

看到上图,即表示安装完成了。

常规在线使用

特点:先下载数据集,然后解压,再进行压测,耗时非常久,动辄2-3小时甚至更久

最令人头疼的是,每次运行,都要重新在线下载。

任意路径下执行下列命令,等待结果即可(我们默认使用数据集 geonames)

代码语言:javascript
复制
esrally race --pipeline=benchmark-only --target-hosts=10.0.0.145:9200 --track=geonames  --client-options="basic_auth_user:'elastic',basic_auth_password:'QAZwsx123'" --challenge=append-no-conflicts

常规在线使用方法
常规在线使用方法

离线使用

1,手工下载数据集

我们依旧以 geonames 数据集为例

我们在elastic官网github上可以看到esrally的数据集相关描述 https://github.com/elastic/rally-tracks

通过查看 rally-tracks/download.sh,我们可以看到,所有数据源都是从一台亚马逊主机上下载的

亚马逊主机地址
亚马逊主机地址

通过阅读代码,我们知道:数据集的主路径在 http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora

通过查看 rally-tracks/geonames/files.txt文件,我们知道了geonames的数据集名称叫 documents-2.json.bz2 和 documents-2-1k.json.bz2 。

geonames数据集文件描述
geonames数据集文件描述

因此,我们尝试组合上述地址,使用浏览器访问:

http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames/documents-2.json.bz2

开始下载geonames数据集
开始下载geonames数据集

我们发现,数据集可以下载了。

同理,其他数据集,也可以通过这种方式进行手工下载。

2,数据集配置

此小节依旧以geonames为例。

数据集下载完成后,需要放置在CentOS的如下路径,若没有geonames路径,则手工创建:

离线数据配置
离线数据配置

3,使用离线数据进行压测

任意路径执行下列命令(务必在命令最后使用 --offline参数):

代码语言:javascript
复制
esrally race --pipeline=benchmark-only --target-hosts=10.0.0.145:9200 --track=geonames  --client-options="basic_auth_user:'elastic',basic_auth_password:'QAZwsx123'" --challenge=append-no-conflicts  --offline

离线压测开始
离线压测开始

如上图,离线压测直接开始,无需漫长的等待。

当然,这一系列的操作,目的是为了,下次进行压测时,直接可以使用上面离线数据,而无需漫长地等待在线下载了。

最后,我们可以看到压测过程如下图。

esrally使用离线数据压测过程图
esrally使用离线数据压测过程图

【全文完】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 环境简介:
  • 安装:
    • 1,安装python3
      • 2,下载安装jdk 13
        • 3,安装 git 1.9以后的版本(略)
          • 4,安装esrally
            • 5,检查是否完成安装
            • 常规在线使用
            • 离线使用
              • 1,手工下载数据集
                • 2,数据集配置
                  • 3,使用离线数据进行压测
                  相关产品与服务
                  Elasticsearch Service
                  腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档