Puntos clave: Las pruebas de estrés y la optimización del rendimiento para Apache Cassandra implican generar datos y ejecutar consultas para analizar métricas de rendimiento. Los pasos clave incluyen la creación de un espacio de llaves, la configuración de pruebas de estrés en YAML y la ejecución de comandos para evaluar el rendimiento.
- Se proporcionan instrucciones para crear un espacio de llaves y una tabla de Cassandra son.
- Se está esbozado un archivo de configuración YAML para pruebas de estrés.
Aquí mostramos cómo hacer una prueba de estrés en un cúmulo de Cassandra usando la herramienta de estrés de Cassandra .
Lo que hace esta herramienta están ejecutar insertos y consultas contra una tabla que genera por sí misma o una o varias tablas existentes.
El flujo básico
La prueba funciona así:
- Insertar datos aleatorios. te especificar la longitud de los campos de texto o valores numéricos aleatorios seleccionando un valor fijo o una distribución estadística como una normal, uniforme u otra. La distribución normal son valores extraídos de alguna media y desviación estándar, es decir, la conocida curva de campana. La distribución uniforme están números aleatorios extraídos de un rango como 1, 2 y 3,....
- Ejecuta sentencias select usando los valores generados.
- Calcula el tiempo en milisegundos para ejecutar cada operación.
- Calcula el tiempo medio, las desviaciones estándar, el número de recogidas de basura, etc., para cada iteración. Esto te da una media y la curva de campana para te que puedas Ve qué tan ampliamente se distribuyen tus oper son aciones. Da te gráficos a lo largo del tiempo para te Ve si el rendimiento se degrada con el tiempo. Muchas operaciones alejadas de la media indican un alto nivel de varianza. Esto podría indicar elementos te necesitas ajustar, como índices, particiones, añadir más memoria, etc.
Configuración de pruebas
te necesito un racimo de Cassandra. Si aún no te tienes uno, sigue estas instrucciones.
Necesitamos Crea un espacio de llaves, una tabla y un índice, y Crea un archivo de configuración para pruebas de estrés en formato YAML.
Ahora desactiva el entorno virtual de Python 2.7, si te son usándolo, ejecuta cqlsh. Pega el siguiente Cassandra SQL.
CREATE KEYSPACE Library
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
CREATE TABLE Library.book (
ISBN text,
copy int,
title text,
PRIMARY KEY (ISBN, copy)
);
create index on library.book (title);
Ahora, Crea un archivo de texto llamado stress-books.yaml y pega lo siguiente en él. Este están un formato YAML, así que no estropees la sangría.
A continuación explicamos los campos.
keyspace: library
table: book
columnspec:
- name: text
size: uniform(5..10)
population: uniform(1..10)
- name: copy
cluster: uniform(20..500)
- name: title
size: uniform(5..10)
insert:
partitions: fixed(1)
select: fixed(1)/500
batchtype: UNLOGGED
queries:
books:
cql: select * from book where title = ?
fields: samerow
Los nombres de los campos son:
| Espacio de claves | Nombre del espacio de claves existente. te también podría poner SQL aquí para Crea uno si no existe. |
| Tabla | Nombre de la tabla existente. te también podría poner SQL aquí para Crea uno si no existe. |
| insertar, consultas | Estas son las funciones que llamaremos. El insert hace el insert y las consultas/libros hacen la consulta que pusimos ahí. Ejecuta consultas contra los valores insertados en el lote que acaba de ejecutar. |
| Especificación de columna: - Nombre: texto Talla: Uniforme(5..10) | Hay están una especificación de columna para cada valor que queremos llenar. El tamaño están la longitud del campo. uniforme(5..10) significa generar una cadena de texto de 5 a 10 caracteres. Si fuera un campo numérico, Crea números aleatorios en ese rango. |
| Insertar: Particiones: fijas(1) select: fixed(1)/500 tipo de lote: UNLOG | Esto significa insertar un número fijo de filas en cada partición de cada lote. Aquí explicamos las operaciones por lotes. |
Haz la prueba de estrés
Ejecuta el comando de abajo para Comienza la prueba. Los argumentos son:
cassandra-stress user profile=stress-books.yaml ops\(insert=1,books=1\) n=10000 -graph file=stress.html
| Perfil de usuario=stress-books.yaml | Significa utilizar stress-books.yaml para las instrucciones. |
| n=10000 ops\(insertar=1,libros=1\) | Aquí decimos que ejecutamos 10.000 lotes y para cada uno ejecutemos el código insertado 1 vez y el código del libro 1 vez. Si te dejamos esto desactivado, funcionará hasta que la desviación estándar del error están < 0,2. |
| -Gráfico file=stress.html | Esto Crea un archivo html llamado stress.html que mostrará graficamente los resultados de diferentes métricas. |
La salida está bastante larga. Aquí está parte de ella truncada.
******************** Stress Settings ********************
Command:
Type: user
Count: 10,000
…
Connected to cluster: Walker Cluster, max pending requests per connection 128, max connections per host 8
Datatacenter: datacenter1; Host: localhost/127.0.0.1; Rack: rack1
Generating batches with [1..1] partitions and [0..1] rows (of [20..500] total rows in the partitions)
Sleeping 2s...
Warming up insert with 500 iterations...
Warming up books with 500 iterations...
Thread count was not specified
Reflejará métricas en cada iteración por lote. te copiar y pegar esta prueba y luego importarla a Excel o Google Sheets para Haz más fácil de leer.
type total ops, op/s, pk/s, row/s, mean, med, .95, .99, .999, max, time, stderr, errors, gc: #, max ms, sum ms, sdv ms, mb
books, 1003, 1003, 383, 387, 5.0, 3.9, 12.5, 20.2, 29.7, 40.7, 1.0, 0.00000, 0, 2, 10, 18, 1, 319
insert, 825, 825, 825, 934, 2.7, 2.0, 7.3, 12.1, 16.9, 23.8, 1.0, 0.00000, 0, 2, 10, 18, 1, 319
total, 1828, 1828, 1208, 1321, 4.0, 2.9, 11.1, 18.1, 27.2, 40.7, 1.0, 0.00000, 0, 2, 10, 18, 1, 319
books, 1096, 930, 350, 360, 5.8, 3.9, 14.1, 27.4, 33.3, 33.3, 1.1, 0.11339, 0, 0, 0, 0, 0, 0
insert, 904, 790, 790, 910, 3.0, 2.3, 9.0, 12.1, 12.3, 12.3, 1.1, 0.11339, 0, 0, 0, 0, 0, 0
total, 2000, 1720, 1140, 1270, 4.5, 3.2, 11.9, 21.9, 33.3, 33.3, 1.1, 0.11339, 0, 0, 0, 0, 0, 0
Haz eso y entonces la hoja de cálculo están más fáciles de leer.
Esto muestra el número total de insertos y selecciones (están como llamamos libros) y el número medio (medio) de milisegundos requeridos para hacerlo. En este ejemplo que ejecuté antes, se ejecutó 2.000 veces.
Un estadístico que analize esto querrá conocer 2, 3 y 4 desviaciones estándar de la media. Eso corresponde al 95%, 99% y 99,9% de las transacciones. En otras palabras, son lejos de la media.
Abajo están el lado derecho de la hoja de cálculo. No todas las métricas caben en esta pantalla, como el número de recogidas de basura (el número de veces que la Máquina Virtual Java tuvo que vaciar su caché). Cuando lo hace, todas las operaciones se pausan.) Pero esto no importa, ya que el archivo HTML dará la imagen completa.
Abre el archivo stress.html con un navegador.
Tú Ve que la prueba duró 22 segundos en mis dos máquinas Amazon Ubuntu t2.large. Los picos de tiempo de funcionamiento coincidieron con recogidas de basura. Te Ve eso seleccionando la opción gc# en el desplegable de tipo de gráfico.
Las estadísticas muestran que la media fue de 2.231 insertos por segundo en todo el sistema.
te puede elegir en el desplegable en la parte superior derecha del gráfico para representar diferentes métricas.
Guía Cassandra
- ¿Qué es Cassandra? Características y ventajas principales
- Cómo configurar un clúster Cassandra
- Cassandra SQL Batches y Mapas
- Pruebas de Estrés y Ajuste de Rendimiento Apache Cassandra
- Usando JSON con Cassandra
- Configuring Apache Cassandra Data Consistency
- Uso de tokens para distribuir datos de Cassandra
- Clave de partición vs clave compuesta vs agrupación de columnas en Cassandra
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.