呕心沥血实战整理:centos下docker安装esrally教程

本文描述了一位用户在尝试使用Docker安装ESRally时遇到的困难,包括安装过程的繁琐、依赖库配置、错误调试及最终通过修改index.json文件解决bulk测试问题的经历。
摘要由CSDN通过智能技术生成

最开始用的docker安装,一点也不好使,换成了用源码安装,发现更不好使,首先要安装git,python,jdk,还要配环境特别繁琐,中间有各种奇葩问题。。。只有想不到的,好不容易安装好后运行报如下错误,在官网和github搜不到解决方案,无奈之下还是换成了docker。。有问题就自己改还有戏

[ERROR] Cannot race. Error in load generator [0]
        Cannot run task [create-index]: Request returned an error. Error type: transport, Description: class_cast_exception ({'error': {'root_cause': [{'type': 'class_cast_exception', 'reason': 'java.lang.String cannot be cast to java.util.Map'}], 'type': 'class_cast_exception', 'reason': 'java.lang.String cannot be cast to java.util.Map'}, 'status': 500})

在这里插入图片描述
下面是我从知乎上搜到的安装教程改良后的步骤(原来的步骤不完全,也有很多问题,自行修改后总结):

esrally用docker安装教程

参考:docker安装esrally
1.安装docker–随便搜都有,也可参考上方链接,此文只阐述安装esrally
2.下载镜像

链接:https://pan.baidu.com/s/1FNs7dLbtE3aDZFbMlI_INQ提取码:o2gh

3.加载镜像
docker load -i tensorflow_image.docker

4.创建相关目录

mkdir -p /home/test/rally/benchmarks/data/rally-tutorial/
mkdir -p /home/test/rally/benchmarks/data/single/

5.建立相关文件
1)在/home/test/rally/benchmarks/data/single/下新建一个index.json文件
(更新:此文件原文发现有字段遗漏测试不了bulk,我从官网拉了一个正确的,直接用我这里的即可)

{
  "settings": {
    "index.number_of_replicas": 0
  },
  "mappings": {
    "docs": {
      "dynamic": "strict",
      "properties": {
      "elevation": {
        "type": "integer"
      },
      "name": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "geonameid": {
        "type": "long"
      },
      "feature_class": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "location": {
        "type": "geo_point"
      },
      "cc2": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "timezone": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "dem": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "country_code": {
        "type": "text",
        "fielddata": true,
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "admin1_code": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "admin2_code": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "admin3_code": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "admin4_code": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "feature_code": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "alternatenames": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "asciiname": {
        "type": "text",
        "fields": {
          "raw": {
            "type": "keyword"
          }
        }
      },
      "population": {
        "type": "long"
      }
    }
  }
}
}

2)同样目录下建立track.json文件–(注:这里原文文件有问题运行报错,建议用我这里的文件)

{
  "version": 2,
  "description": "Tutorial benchmark for Rally",
  "data-url": "http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames",
  "indices": [
    {
      "name": "geonames",
      "body": "index.json",
      "types": [ "docs" ]
    }
  ],
  "corpora": [
    {
      "name": "rally-tutorial",
      "base-url": "https://rally-tracks.elastic.co/geonames",    
      "documents": [
        {
          "source-file": "documents-2.json.bz2",
          "document-count": 11396503,
          "compressed-bytes": 265208777,
          "uncompressed-bytes": 3547613828
        }
      ]
    }
  ],
  "schedule": [
    {
      "operation": {
        "operation-type": "delete-index"
      }
    },
    {
      "operation": {
        "operation-type": "create-index"
      }
    },
    {
      "operation": {
        "operation-type": "cluster-health",
        "request-params": {
          "wait_for_status": "green"
        },
        "retry-until-success": true
      }
    },
    {
      "operation": {
        "operation-type": "bulk",
        "bulk-size": 5000
      },
      "warmup-time-period": 120,
      "clients": 8
    },
    {
      "operation": {
        "operation-type": "force-merge"
      }
    },
    {
      "operation": {
        "name": "query-match-all",
        "operation-type": "search",
        "body": {
          "query": {
            "match_all": {}
          }
        }
      },
      "clients": 8,
      "warmup-iterations": 1000,
      "iterations": 1000,
      "target-throughput": 100
    }
  ]
}

6.下载数据集

cd /home/test/rally/benchmarks/data/single/
curl -o documents-2.json.bz2 http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames/documents-2.json.bz2
(直接访问http这个网址下载了再传到linux也可以)

7.测试运行

chmod -R 777 /home/test/rally/
(必须授权不然docker运行会报错,后续还需要授权一次)
docker run -v /home/test/rally/:/rally/.rally/ elastic/rally list tracks --track-path=/rally/.rally/benchmarks/data/single

正常情况下运行出来如图
在这里插入图片描述
8.正式运行
下方ip端口用户名密码拿过去改输自己的

cp /home/test/rally/benchmarks/data/single/* /home/test/rally/benchmarks/data/rally-tutorial/
(这一步应该是将测试和真实数据分开,重新拷贝一份)
docker run --privileged -v /home/test/rally/:/rally/.rally/ elastic/rally race --pipeline=benchmark-only --target-hosts=ip:9200 --track-path=/rally/.rally/benchmarks/data/rally-tutorial --client-options="basic_auth_user:'**',basic_auth_password:'**'" --offline

更新:推荐最新运行指令(可以出报告和查看差错,运行过程中有错误直接中断,如果要忽略错误继续运行再用上面的)docker run --privileged -v /home/test/rally/:/rally/.rally/ elastic/rally race --pipeline=benchmark-only --target-hosts=**:9200 --track-path=/rally/.rally/benchmarks/data/rally-tutorial --client-options="basic_auth_user:'**',basic_auth_password:'**'" --offline   --on-error=abort --report-format=csv --report-file=/rally/.rally/benchmarks/result.csv

想生成md报告用这个参数:--report-file=/rally/.rally/benchmarks/result.md  --report-format=markdown

这一步会通过documents-2.json.bz2生成documents-2.json和documents-2.json.offset文件,这两个文件运行是没有权限的,所以可能会报错需要重新授权,如果报错继续执行

chmod -R 777 /home/test/rally/benchmarks/data/rally-tutorial/

再次执行docker正式运行命令,没问题能够启动
在这里插入图片描述
它这个测试集有点少所以测试项很少,正在研究更多测试项中。。。

后续问题一:

在这里插入图片描述
在这里插入图片描述

发现最后bulk这个测试失败了,加上了–on-error=abort后查看日志找到原因是因为index.json中没有测试集documents-2.json中的字段,还需要加上好几个字段不然bulk检测不了,已在文章中更新index.json文件。改好了之后终于成功运行!

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值