本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

cassandra-stress Docker 镜像下载 - 轩辕镜像

cassandra-stress 镜像详细信息和使用指南

cassandra-stress 镜像标签列表和版本信息

cassandra-stress 镜像拉取命令和加速下载

cassandra-stress 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

cassandra-stress
scylladb/cassandra-stress

cassandra-stress 镜像详细信息

cassandra-stress 镜像标签列表

cassandra-stress 镜像使用说明

cassandra-stress 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

cassandra-stress是用于对ScyllaDB和Cassandra集群进行基准测试和负载测试的工具,支持测试自定义CQL表和查询以基准测试数据模型。
1 收藏0 次下载activescylladb镜像

cassandra-stress 镜像详细说明

cassandra-stress 使用指南

cassandra-stress 配置说明

cassandra-stress 官方文档

Cassandra Stress

cassandra-stress工具用于对ScyllaDB和Cassandra集群进行基准测试和负载测试。该工具还支持测试自定义CQL表和查询,允许用户基准测试其数据模型。本文档重点介绍用户模式,因为这允许测试实际的schema。

安装

本文档撰写时,cassandra-stress的最新版本为3.17.0。请在GitHub发布页面查看最新版本。

ScyllaDB提供了多种安装cassandra-stress的方法,选择最适合您环境的方式:

  1. **使用Docker镜像(*推荐方式)
  2. 下载预编译二进制文件
  3. 从源码构建
  4. 从源码构建Docker镜像

使用Docker镜像(***推荐方式)

使用cassandra-stress的推荐和***方式是通过ScyllaDB提供的Docker镜像,这确保了一致且即用型的环境。

您可以从Docker Hub拉取最新的Docker镜像:

shell
docker pull scylladb/cassandra-stress:latest

latest标签始终与GitHub上的版本标签(如3.17.0)对应。要查看所有可用标签,请访问:

Docker Hub Cassandra-Stress标签

下载后,可直接运行cassandra-stress

shell
docker run --rm scylladb/cassandra-stress <命令>

如需使用特定版本,将latest替换为所需版本标签:

shell
docker pull scylladb/cassandra-stress:3.17.0
docker run --rm scylladb/cassandra-stress:3.17.0 <命令>

性能优化

在Docker容器中运行时,可能会因容器化开销导致性能损失。为缓解此问题,可使用--network=host选项让容器共享主机网络栈,提升性能:

shell
docker run --rm --network=host --security-opt seccomp=unconfined scylladb/cassandra-stress <命令>

--security-opt seccomp=unconfined允许容器内不受限制的系统调用(主要是ioctlioplclone)。

其他安装方法

下载预编译二进制文件

可直接从GitHub发布页面下载预编译二进制文件。

前提条件:确保系统已安装Java Runtime Environment (JRE) 11或更高版本。

使用curl下载

shell
curl -LO [***]
curl -LO [***]

使用wget下载

shell
wget [***]
wget [***]

使用sha256sum验证下载

shell
sha256sum -c cassandra-stress-3.17.0-bin.tar.gz.sha256

验证成功将显示:

text
cassandra-stress-3.17.0-bin.tar.gz: OK

从源码构建

从源码构建cassandra-stress需确保安装以下依赖:

  • Java JDK:11或更高版本
  • Apache Ant:构建工具

步骤如下:

  1. 克隆仓库:

    shell
    git clone --depth=1 [***]
    
  2. 检出特定版本(3.17.0):

    shell
    cd cassandra-stress
    git checkout tags/3.17.0
    
  3. 使用Apache Ant构建二进制文件:

    shell
    ant -Drelease=true artifacts
    

编译后的二进制文件位于build目录。

从源码构建Docker镜像

如需Docker化构建,按以下步骤操作:

  1. 克隆仓库:

    shell
    git clone --depth=1 [***]
    
  2. 构建Docker镜像:

    shell
    cd cassandra-stress
    docker build -t cassandra-stress --compress .
    

    如需使用自定义驱动jar,将jar放入仓库根目录并运行:

    shell
    docker build -t cassandra-stress --build-args BUILD_OPTS=-Dlib.override.com.scylladb.scylla-driver-core=/app/<jar文件名>.jar --compress .
    

构建完成后,可本地运行镜像:

shell
docker run --rm cassandra-stress <命令>

使用方法

示例

console
tools/bin/cassandra-stress write n=*** -node 192.168.1.101 # 向指定主机插入100万条数据
tools/bin/cassandra-stress read n=*** -node 192.168.1.101 -o read # 100万次读取
tools/bin/cassandra-stress write -node 192.168.1.101,192.168.1.102 n=*** # 向两个节点分布插入1000万条数据
tools/bin/cassandra-stress help -pop # 打印人口分布选项的帮助信息

容器中运行时,注意命令行需加引号:

console
docker run scylladb/cassandra-stress 'cassandra-stress write n=*** -node 1.2.3.4'

交互式运行容器:

console
docker run --rm -d --name c-s -it --entrypoint=/bin/bash -i scylladb/cassandra-stress:latest
docker exec -it c-s /bin/bash

命令类型

  • 标准数据的只写、只读和混合工作负载
  • 计数器列的只写和只读工作负载
  • 用户配置的工作负载,对自定义schema运行自定义查询
  • 语法为cassandra-stress <命令> [选项]。如需了解特定命令或选项的更多信息,运行cassandra-stress help

主要命令

  • read:多并发读取 - 集群必须先通过写测试填充数据
  • write:对集群的多并发写入
  • mixed:任意基本命令的交错,具有可配置的比例和分布 - 集群必须先通过写测试填充数据
  • counter_write:计数器的多并发更新
  • counter_read:计数器的多并发读取 - 集群必须先通过counter_write测试填充数据
  • user:用户提供查询的交错,具有可配置的比例和分布。详见<[***]>
  • help:打印命令或选项的帮助信息
  • print:检查分布定义的输出
  • legacy:遗留支持模式

主要选项

  • -pop:人口分布和分区内访问顺序
  • -insert:与批处理和拆分分区更新的各种方法相关的插入特定选项
  • -col:列详细信息,如大小和计数分布、数据生成器、名称、比较器以及是否使用超级列
  • -rate:线程数、速率限制或自动模式(默认自动)
  • -mode:Thrift或CQL及选项
  • -errors:压力测试期间遇到错误时的处理方式
  • -sample:指定用于测量延迟的样本数
  • -schema:复制设置、压缩、压缩策略等
  • -node:要连接的节点
  • -log:进度日志位置和间隔
  • -transport:自定义传输工厂
  • -port:连接Cassandra节点的端口
  • -sendto:指定要发送命令的压力服务器
  • -graph:图表记录指标
  • -tokenrange:令牌范围设置

用户模式

用户模式允许测试自定义schema。从长远来看,这比构建应用后才发现schema无法扩展更节省时间。

配置文件

用户模式需要YAML格式的配置文件。可指定多个YAML文件,此时ops参数中的操作需引用为specname.opname

配置文件标识符:

cql
specname: staff_activities

测试的keyspace:

cql
keyspace: staff

keyspace的CQL定义(如已存在则可选):

cql
keyspace_definition: |
CREATE KEYSPACE stresscql WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};

要测试的表:

cql
table: staff_activities

表的CQL定义(如已存在则可选):

cql
table_definition: |
CREATE TABLE staff_activities (
name text,
when timeuuid,
what text,
PRIMARY KEY(name, when, what)
)

上述表中生成列的可选元信息。min和max仅适用于text和blob类型。distribution字段表示该列在行中的总体唯一分布:

cql
columnspec:
- name: name
  size: uniform(5..10) # 员工姓名长度在5-10字符之间
  population: uniform(1..10) # 从10个可能的员工中选择
- name: when
  cluster: uniform(20..500) # 员工有20到500个事件
- name: what
  size: normal(10..100,50)

支持的分布类型:

指数分布,范围[min..max]:

cql
EXP(min..max)

极值(Weibull)分布,范围[min..max]:

cql
EXTREME(min..max,shape)

高斯/正态分布,mean=(min+max)/2,stdev=(mean-min)/stdvrng:

cql
GAUSSIAN(min..max,stdvrng)

高斯/正态分布,显式定义mean和stdev:

cql
GAUSSIAN(min..max,mean,stdev)

均匀分布,范围[min, max]:

cql
UNIFORM(min..max)

固定分布,始终返回相同值:

cql
FIXED(val)

如前缀为~,则分布反转

所有列的默认值:size: uniform(4..8),population: uniform(1..100B),cluster: fixed(1)

插入分布:

cql
insert:
# 每批插入的分区数
partitions: fixed(1)
# 每个分区更新的行数
select: fixed(1)/500
# 插入使用的批处理类型:UNLOGGED或LOGGED
batchtype: UNLOGGED

当前所有插入均在批处理中完成。

测试期间使用的读取语句:

cql
queries:
   events:
      cql: select *  from staff_activities where name = ?
      fields: samerow
   latest_event:
      cql: select * from staff_activities where name = ?  LIMIT 1
      fields: samerow

运行用户模式测试:

cql
cassandra-stress user profile=./example.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" truncate=once

这将创建schema,然后运行测试1分钟,插入、latest_event查询和events查询的数量相等。此外,测试前会截断表一次。

完整示例可在yaml中找到。

使用多个yaml文件运行用户模式测试:

shell
cassandra-stress user profile=./example.yaml,./example2.yaml duration=1m "ops(ex1.insert=1,ex1.latest_event=1,ex2.insert=2)" truncate=once

这将运行example.yaml和example2.yaml中指定的操作。example.yaml和example2.yaml可引用同一张表,但需确保表定义相同(数据生成规范可不同)。

图表生成

每次压力测试运行均可生成图表。

!image

创建新图表:

cql
cassandra-stress user profile=./stress-example.yaml "ops(insert=1,latest_event=1,events=1)" -graph file=graph.html title="Awesome graph"

向现有图表添加新运行,指向现有文件并添加修订名称:

cql
cassandra-stress user profile=./stress-example.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" -graph file=graph.html title="Awesome graph" revision="Second run"

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"