Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Laboratorio Cassandra, Guías, Proyectos, Investigaciones de Programación de Bases de Datos

Laboratorio instalar Cassandra UC3M

Tipo: Guías, Proyectos, Investigaciones

2022/2023

Subido el 18/12/2023

josemaria-peñate
josemaria-peñate 🇪🇸

1 documento

1 / 6

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Arquitectura de Datos, Grado en Ingeniería Informática, Universidad Carlos III de
Madrid.
Introduccn e instalacn
Arquitectura
Cassandra funciona con un modelo de datos de arquitectura peer-to-peer, lo que
significa que cada instancia o nodo está conectado a más nodos que forman clusters.
Esta arquitectura masivamente escalable facilita la adición de nodos adicionales para
adaptarse a las necesidades de cualquiera.
Nodo Cassandra: es donde se almacenan todos los datos.
Centro de Datos: grupo de nodos relacionados.
Clúster Cassandra: un grupo de uno o más centros de datos.
Cliente: ordenador de usuario u otro tipo de dispositivo.
Gosip:
Instalación
Instalación sobre Linux-Ubuntu
La instalación de Cassandra sobre Ubuntu se puede realizar a través del mecanismo
estándar de paquetes de esta distribución de Linux utilizando el comando apt siempre
como superusuario
1. Instalar el entorno de Java en el servidor y verificarlo
root@tuareg# apt install default-jdk
root@tuareg# java –version
openjdk 11.0.20.1 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04, mixed mode,
sharing)
1
Gosip ptotocol
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Laboratorio Cassandra y más Guías, Proyectos, Investigaciones en PDF de Programación de Bases de Datos solo en Docsity!

Arquitectura de Datos, Grado en Ingeniería Informática, Universidad Carlos III de

Madrid.

Introducción e instalación

Arquitectura

Cassandra funciona con un modelo de datos de arquitectura peer-to-peer, lo que

significa que cada instancia o nodo está conectado a más nodos que forman clusters.

Esta arquitectura masivamente escalable facilita la adición de nodos adicionales para

adaptarse a las necesidades de cualquiera.

 Nodo Cassandra : es donde se almacenan todos los datos.

 Centro de Datos : grupo de nodos relacionados.

 Clúster Cassandra : un grupo de uno o más centros de datos.

 Cliente : ordenador de usuario u otro tipo de dispositivo.

 Gosip :

Instalación

Instalación sobre Linux-Ubuntu

La instalación de Cassandra sobre Ubuntu se puede realizar a través del mecanismo

estándar de paquetes de esta distribución de Linux utilizando el comando apt siempre

como superusuario

1. Instalar el entorno de Java en el servidor y verificarlo

root@tuareg# apt install default-jdk root@tuareg# java –version openjdk 11.0.20.1 2023-08- OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04, mixed mode, sharing) Gosip ptotocol

2. Incorporar la clave pública del repositorio de Cassandra para la versión del

producto que se desee instalar

root@tuareg# curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add – root@tuareg# apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA

3. Crear el correspondiente fichero en el directorio /etc/apt/sources.list.d con la

información relativa a la versión específica del sistema operativo sobre el que se

va a instalar el producto.

root@tuareg# echo "deb https://debian.cassandra.apache.org 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

4. Actualizar la base de datos de paquetes e instalar el producto

sudo apt-get update sudo apt-get install -y cassandra

El proceso de instalación creará el usuario y el grupo cassandra con el que ejecutará la

máquina virtual de Java en la que está corriendo el servidor y también creará

automáticamente la definición de los servicios de Linux correspondiente a una

arquitectura simple basada en un clúster de pruebas de un único servidor

Arranque de los servicios

Para arrancar el servicio es necesario ejecutar la orden:

systemctl start cassandra

y para ver el estado del servidor

systemctl status cassandra

Si apareciera algún error se puede comprobar tanto /var/log/syslog como el fichero de

log específico de MongoDB que se ha configurado ( /var/log/mongodb/mongod.log )

Si todo va correctamente se puede configurar que este servicio se arranque

automáticamente cuando la máquina haga el boot mediante la orden

systemctl enable cassandra Primeros pasos

Lo primero es verificar que el sistema está activo. Para ello se puede ejecutar la orden

tuareg> nodetool status Datacenter: datacenter ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 219.23 KiB 16 100.0% 1b354deb-a599-4cec-88e5-a3c74dad64ba rack

Después podemos usar la Shell de Cassandra para conectarnos directamente al clúster

de pruebas

PRIMARY KEY (last_name, first_name) ) WITH CLUSTERING ORDER BY (first_name ASC) AND additional_write_policy = '99p' AND bloom_filter_fp_chance = 0. AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} AND cdc = false AND comment = '' AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} AND compression = {'chunk_length_in_kb': '16', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1. AND default_time_to_live = 0 AND extensions = {} AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair = 'BLOCKING' AND speculative_retry = '99p';

Ahora que se tiene un keyspace y una tabla, se pueden escribir algunos datos en la

base de datos y volver a leerlos.

INSERT INTO user (first_name, last_name, title) VALUES ('Bill', 'Nguyen', 'Mr.'); cqlsh:my_keyspace> SELECT * FROM user WHERE first_name='Bill' AND last_name='Nguyen'; last_name | first_name | title -----------+------------+------- Nguyen | Bill | Mr. (1 rows)

O también en la forma

cqlsh:my_keyspace> SELECT * FROM user where last_name = 'Nguyen'; last_name | first_name | title -----------+------------+------- Nguyen | Bill | Mr. (1 rows)

Y ahora ejecutamos la siguiente orden

cqlsh:my_keyspace> SELECT * FROM user where first_name = 'Bill'; InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING"

Pero, ¿por qué?

Este comportamiento puede no parecer intuitivo a primera vista, pero tiene que ver con

la composición de la clave primaria que se utilizó para esta tabla. Este es el primer

indicio de que el acceso a los datos en Cassandra puede ser un poco diferente a lo que

estamos acostumbrados en SQL.

Borremos ahora un dato:

cqlsh:my_keyspace> DELETE title FROM USER WHERE first_name='Bill' AND last_name='Nguyen'; cqlsh:my_keyspace> SELECT * FROM user WHERE first_name='Bill' AND last_name='Nguyen'; last_name | first_name | title -----------+------------+------- Nguyen | Bill | null (1 rows)

Su ha borrado solo el valor de la columna title y no la fila completa. Este es un

comportamiento también distinto al mundo relacional.

Para borrar toda la fila hay que ejecutar:

cqlsh:my_keyspace> DELETE FROM USER WHERE first_name='Bill' AND last_name='Nguyen'; Configuración

El fichero de configuración del nodo de Cassandra se encuentra en

/etc/cassandra/cassandra.yaml y, por ahora no es necesario modificar ningún

parámetro de los indicados por defecto.

Los parámetros más importantes son:

The name of the cluster. This is mainly used to prevent machines in

one logical cluster from joining another.

cluster_name: 'Test Cluster' …

Directories where Cassandra should store data on disk. If multiple

directories are specified, Cassandra will spread data evenly across

them by partitioning the token ranges.

If not set, the default directory is $CASSANDRA_HOME/data/data.

data_file_directories:

  • /var/lib/cassandra/data … seed_provider:

Addresses of hosts that are deemed contact points.

Cassandra nodes use this list of hosts to find each other and learn

the topology of the ring. You must change this if you are running

multiple nodes!

  • class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters:

seeds is actually a comma-delimited list of addresses.