Apache Cassandra es una solución de base de datos post-relacional distribuida de código abierto, de alto rendimiento, extremadamente escalable y tolerante a fallas. Puede servir como almacén de datos en tiempo real para aplicaciones en línea/transaccionales y como base de datos de lectura intensiva para sistemas de inteligencia comercial.
BD relacional vs Cassandra
Los sistemas de bases de datos relacionales manejan una velocidad moderada de datos entrantes y obtienen datos de una o varias ubicaciones. Administra principalmente datos estructurados y admite transacciones complejas/anidadas con puntos únicos de falla con conmutación por error.
Cassandra maneja una alta velocidad de datos entrantes al obtener datos de muchas ubicaciones. Administra todos los tipos de datos y admite transacciones simples sin puntos únicos de falla; proporciona un tiempo de actividad constante. Además, proporciona escalabilidad de lectura/escritura.
En este artículo, proporciono las pautas sobre cómo instalé Apache Cassandra y ejecuté un clúster de un solo nodo en mi servidor Ubuntu 16.04.
Requisitos previos
- Requiere una plataforma Java para funcionar
- Un usuario para ejecutar esta aplicación
Instalar Java
Cassandra necesita que la aplicación Java se ejecute en su servidor, asegúrese de haber instalado la última versión de Java. Puede actualizar los paquetes del repositorio APT e instalar Java. Cassandra 3 o posterior requiere la instalación de la versión Java 8+.
root@ubuntu:~# apt-get update
root@ubuntu:~# apt-get install default-jdk
Setting up default-jdk (2:1.8-56ubuntu2) ...
Setting up gconf-service-backend (3.2.6-3ubuntu6) ...
Setting up gconf2 (3.2.6-3ubuntu6) ...
Setting up libgnomevfs2-common (1:2.24.4-6.1ubuntu1) ...
Setting up libgnomevfs2-0:amd64 (1:2.24.4-6.1ubuntu1) ...
Setting up libgnome2-common (2.32.1-5ubuntu1) ...
Setting up libgnome-2-0:amd64 (2.32.1-5ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ca-certificates (20160104ubuntu1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
done.
Puede confirmar la versión de Java instalada.
root@ubuntu:~# java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Crear un usuario para ejecutar Cassandra
Siempre se recomienda ejecutar esta aplicación como usuario en lugar de root. Por lo tanto, creé mi usuario Cassandra para ejecutar esta aplicación.
root@ubuntu:~# groupadd cassandra
root@ubuntu:~# useradd -d /home/cassandra -s /bin/bash -m -g cassandra cassandra
root@ubuntu:~# grep cassandra /etc/passwd
cassandra:x:1000:1000::/home/cassandra:/bin/bash
Descargar e instalar Cassandra
Ahora podemos descargar la última versión de Apache Cassandra desde aquí y copiarla en su directorio preferido. Descargué este archivo tar en mi carpeta /tmp y extraje el contenido a mi "casa" de Cassandra allí.
root@ubuntu:/tmp# wget http://mirror.cc.columbia.edu/pub/software/apache/cassandra/3.6/apache-cassandra-3.6-bin.tar.gz
--2016-06-12 08:36:47-- http://mirror.cc.columbia.edu/pub/software/apache/cassandra/3.6/apache-cassandra-3.6-bin.tar.gz
Resolving mirror.cc.columbia.edu (mirror.cc.columbia.edu)... 128.59.59.71
Connecting to mirror.cc.columbia.edu (mirror.cc.columbia.edu)|128.59.59.71|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 35552323 (34M) [application/x-gzip]
Saving to: ‘apache-cassandra-3.6-bin.tar.gz’
apache-cassandra-3.6-bin.tar.gz 100%[===================================================================>] 33.91M 6.43MB/s in 12s
2016-06-12 08:37:01 (2.93 MB/s) - ‘apache-cassandra-3.6-bin.tar.gz’ saved [35552323/35552323]
root@ubuntu:/tmp# tar -xvf apache-cassandra-3.6-bin.tar.gz -C /home/cassandra --strip-components=1
Corregir las propiedades y establecer variables
Puede corregir la propiedad de los archivos y establecer las variables de entorno adecuadas para ejecutar esta aplicación sin problemas.
root@ubuntu:/home/cassandra# export CASSANDRA_HOME=/home/cassandra
root@ubuntu:/home/cassandra# export PATH=$PATH:$CASSANDRA_HOME/bin
root@ubuntu:/home/cassandra# chown -R cassandra.cassandra .
Ahora puede cambiar al usuario cassandra y ejecutar esta aplicación como se muestra a continuación:
cassandra@ubuntu:~$ sh bin/cassandra
INFO 09:10:39 Cassandra version: 3.6
INFO 09:10:39 Thrift API version: 20.1.0
INFO 09:10:39 CQL supported versions: 3.4.2 (default: 3.4.2)
INFO 09:10:39 Initializing index summary manager with a memory pool size of 24 MB and a resize interval of 60 minutes
INFO 09:10:39 Starting Messaging Service on localhost/127.0.0.1:7000 (lo)
INFO 09:10:39 Loading persisted ring state
INFO 09:10:39 Starting up server gossip
INFO 09:10:39 Updating topology for localhost/127.0.0.1
INFO 09:10:39 Updating topology for localhost/127.0.0.1
INFO 09:10:39 Node localhost/127.0.0.1 state jump to NORMAL
Esta salida significa que su servidor Cassandra está funcionando correctamente ahora. Ahora podemos comprobar y confirmar el estado de nuestro clúster mediante este comando.
root@ubuntu:/home/cassandra# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 142.65 KiB 256 100.0% fc76be14-acde-47d4-a4a2-5d015804bb3c rack1
The status and state notation UN means it is up and normal.
Hemos terminado con la instalación del clúster Cassandra de un solo nodo. Ahora podemos ver cómo conectarnos a nuestro clúster.
Conectando a nuestro Clúster
Podemos ejecutar este script de shell "cqlsh " para conectarse a nuestro nodo de clúster.
Estos son los diversos comandos CQL utilizados en Cassandra. Puede obtener más información sobre cómo usar esto aquí.
¡Hola! hemos terminado con un Cassandra Cluster de un solo nodo en nuestro servidor Ubuntu 16.04. Espero que hayas disfrutado leyendo esto. Recomendaría sus valiosos comentarios y sugerencias al respecto.
¡Gracias!