Apache Cassandra es un sistema de administración de base de datos NoSQL gratuito y de código abierto diseñado para manejar grandes cantidades de datos en muchos servidores básicos, lo que brinda alta disponibilidad sin un punto único de falla. Apache Cassandra fue desarrollado inicialmente por Facebook y luego adquirido por Apache Foundation.
Apache Cassandra es adecuado para cantidades masivas y de crecimiento exponencial de datos en constante transformación.
Cassandra en comparación con RDBMS
Cassandra tiene estrechas analogías con los conceptos de las bases de datos relacionales:
Keyspace
– Similar a una base de datos/esquema en un RDBMSTable
– Similar a la tabla en RDBMSRow
– Similar a Fila en RDBMSColumn
– Similar a Columna en RDBMSPrimary key
– Similar a la clave principal en RDBMS
Requisitos previos
Para seguir esta guía, necesita:
- Servidor Centos 8
- Acceso raíz al servidor o usuario con acceso sudo
- Acceso a Internet para descargar los paquetes
Los siguientes son los pasos que seguiremos para instalar Cassandra
- Asegúrese de que nuestro sistema esté actualizado
- Instalar Java en el sistema
- Instalar Apache Cassandra en el sistema
- Instalar y configurar Apache Cassandra Client (cqlsh)
- Configurar Apache Cassandra
Paso 1 Asegúrese de que nuestro sistema esté actualizado
Asegurémonos de que los paquetes de Centos 8 instalados en el servidor estén actualizados. Puede hacerlo ejecutando los siguientes comandos:
sudo dnf -y update
Paso 2 Instalar Java en el sistema
Apache Cassandra requiere que tenga java 8 en su sistema para que funcione. Confirme que Java está instalado escribiendo este comando:
java -version
Si ve este resultado:
# java -version
-bash: java: command not found
Entonces significa que Java no está instalado. Instalémoslo con este comando:
sudo dnf install -y java-1.8.0-openjdk
Una vez que se complete la instalación, confírmelo con esto:
# java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
Ahora que Java 8 está instalado en nuestro sistema, instalemos Cassandra.
Paso 3. Instalar Apache Cassandra en el sistema
Apache Cassandra no está disponible en los repositorios predeterminados de Centos 8. Vamos a crear un repositorio que apunte a Cassandra Repos:
Crea este /etc/yum.repos.d/cassandra.repo
archivo con el contenido requerido usando este comando:
cat > /etc/yum.repos.d/cassandra.repo <<EOF
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF
Ahora que hemos agregado el repositorio, instalemos Cassandra:
sudo dnf install -y cassandra
Confirme que Cassandra se ha instalado con este comando:
# rpm -qi cassandra
Name : cassandra
Version : 4.0.0
Release : 1
Architecture: noarch
Install Date: Tue 31 Aug 2021 08:59:00 AM UTC
Group : Development/Libraries
Size : 54941890
License : Apache Software License 2.0
Signature : RSA/SHA512, Thu 22 Jul 2021 10:22:35 PM UTC, Key ID 5e85b9ae0b84c041
Source RPM : cassandra-4.0.0-1.src.rpm
Build Date : Thu 22 Jul 2021 10:22:10 PM UTC
Build Host : 0b542adba94d
Relocations : (not relocatable)
URL : http://cassandra.apache.org/
Summary : Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store.
Description :
Cassandra is a distributed (peer-to-peer) system for the management and storage of structured data.
Una vez que se instala ese comando, el binario cassandra se creará en /usr/sbin/cassandra
. Dado que Centos 8 administra los servicios usando systemd, creemos un archivo systemd en /etc/systemd/system/cassandra.service
con el contenido necesario para gestionar el servicio cassandra
sudo cat > /etc/systemd/system/cassandra.service <<EOF
[Unit]
Description=Apache Cassandra 4.0
After=network.target
[Service]
Type=simple
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
Restart=always
[Install]
WantedBy=multi-user.target
EOF
Una vez que se crea el archivo, puede usar systemd para administrar el servicio:
Ejecute este comando para asegurarse de que nuestro nuevo servicio systemd esté registrado:
sudo systemctl daemon-reload
Para iniciar el servicio:
sudo systemctl start cassandra
Confirme que el servicio se está ejecutando. Asegúrese de ver que está Active: active (running)
en el siguiente comando de estado:
# sudo systemctl status cassandra
● cassandra.service - Apache Cassandra
Loaded: loaded (/etc/systemd/system/cassandra.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2021-08-31 15:50:07 UTC; 8s ago
Main PID: 100752 (java)
Tasks: 54 (limit: 23800)
Memory: 1.1G
CGroup: /system.slice/cassandra.service
└─100752 java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA -XX:+PerfD>
Aug 31 15:50:13 ipa-server.citizix.light cassandra[100752]: INFO [main] 2021-08-31 15:50:13,284 NativeTransportService.java:68 - Netty using native Epoll event loop
Aug 31 15:50:13 ipa-server.citizix.light cassandra[100752]: INFO [CompactionExecutor:1] 2021-08-31 15:50:13,326 CompactionTask.java:150 - Compacting (20ffe200-0a73-11ec-a273-f980f7c7aa0a) [/var/lib/cassandra>
Aug 31 15:50:13 ipa-server.citizix.light cassandra[100752]: INFO [main] 2021-08-31 15:50:13,329 PipelineConfigurator.java:124 - Using Netty Version: [netty-buffer=netty-buffer-4.1.58.Final.10b03e6, netty-cod>
Aug 31 15:50:13 ipa-server.citizix.light cassandra[100752]: INFO [main] 2021-08-31 15:50:13,329 PipelineConfigurator.java:125 - Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...
Aug 31 15:50:13 ipa-server.citizix.light cassandra[100752]: INFO [main] 2021-08-31 15:50:13,334 CassandraDaemon.java:780 - Startup complete
Habilite el servicio Cassandra para que siempre se ejecute en el arranque:
sudo systemctl enable cassandra
Utilice el estado nodetool status
Comando para confirmar el estado del estado actual del nodo:
# 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 166.07 KiB 16 100.0% 2b8341f0-2638-46bb-a0e0-e20b86f96d0a rack1
Ahora que el servicio está funcionando, instalemos el cliente:
Paso 4. Instalar y configurar Apache Cassandra Client (cqlsh)
Ahora que el servicio Apache Cassandra ha sido instalado y configurado, necesitamos conectarnos a él.
La herramienta cliente utilizada para acceder a Cassandra (cqlsh
) es un cliente de Python. Entonces, antes de instalarlo, debemos configurar el entorno para python:
Instale python3 y python pip
sudo dnf install -y python39 python39-pip
Confirme la instalación y Python y pip:
# python3 -V
Python 3.9.2
# pip3 -V
pip 20.2.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)
Usando pip, instale cqlsh:
sudo pip3 install cqlsh
Ahora podemos usar cqlsh para conectarnos a cassandra. Dado que Cassandra se instala localmente, no tenemos que especificar ningún host:
# cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.0 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>
Ahora que el cliente está configurado, configuremos Cassandra
Paso 4. Configurar Apache Cassandra
Configuremos Apache Cassandra. El archivo de configuración principal se encuentra aquí /etc/cassandra/default.conf/cassandra.yaml
Configuraciones notables para cambiar:
cluster_name
– el nombre de su clústerseeds
contiene la lista de direcciones IP de la semilla de su clúster, separadas por comaslisten_address
contiene la dirección IP de su nodo, esto es lo que permite que otros nodos se comuniquen con este nodo
Además de eso, también puede agregar la variable env JVM_OPTS
agregando cualquier argumento de línea de comando JVM adicional. Esto se pasará al servicio de Cassandra cuando se inicie.
De forma predeterminada, el nombre del clúster de Cassandra es "Clúster de prueba". Puede cambiar esto a su nombre de clúster preferido iniciando sesión usando cqlsh
y ejecutando el siguiente comando.
UPDATE system.local
SET cluster_name = 'Citizix Cluster'
WHERE KEY = 'local';
Después de eso, actualice el archivo de configuración /etc/cassandra/default.conf/cassandra.yaml
con el nuevo nombre:
sudo vim /etc/cassandra/default.conf/cassandra.yaml
Luego actualice esta línea:
cluster_name: 'Citizix Cluster'
Guardar y salir.
Vamos a borrar el caché del sistema usando esto:
nodetool flush system
Luego reinicie el servicio de Cassandra
sudo systemctl restart cassandra
Vuelva a iniciar sesión para confirmar el nombre del clúster como se muestra.
Conclusión
Logramos instalar y configurar Cassanda en la guía anterior. Tenga en cuenta lo siguiente:
- Cassandra almacena su registro en este directorio
/var/log/cassandra/
con el archivo de registro principal ubicado en/var/log/cassandra/system.log
- Dado que creamos un servicio systemd, también puede verificar
stdout
ystderr
registros usando este comando:sudo journalctl -fu cassandra
- Este
/var/lib/cassandra
se establece como el directorio de datos predeterminado. Puede actualizar eso en el archivo de configuración - Los archivos de configuración de Cassandra se almacenan en este directorio
/etc/cassandra/
incluido el archivo de configuración predeterminado/etc/cassandra/default.conf/cassandra.yaml
- Para administrar el servicio cassandra que creamos:
# Start the service sudo systemctl start cassandra # Check the service status sudo systemctl status cassandra # Stop the service sudo systemctl stop cassandra # Enable the service sudo systemctl enable cassandra # Restart the service sudo systemctl restart cassandra
Consulte también la página de documentación de Cassandra aquí para obtener más información.