Instalar Apache Cassandra en CentOS 7
Introducción
Apache Cassandra es un sistema de gestión de bases de datos NoSQL distribuido, libre y de código abierto. Se utiliza para almacenar grandes volúmenes de datos en clústeres descentralizados y altamente disponibles. Cassandra distribuye datos entre muchos servidores para evitar puntos únicos de fallo.
Definición rápida: Cassandra es una base de datos distribuida orientada a columnas pensada para alta disponibilidad y escalado horizontal.
Antes de empezar: requisitos y modelo mental
- Requisitos mínimos: servidor CentOS 7 con acceso root o sudo, conexión a Internet para descargar paquetes, al menos 2 GB de RAM (más para producción).
- Modelo mental: piensa en Cassandra como un anillo de nodos que comparten datos y responsabilidad por particiones. Cada nodo puede atender lecturas y escrituras.
Importante: Cassandra requiere Java; la versión de Java afecta la compatibilidad. Esta guía muestra la instalación con Oracle JDK 8 como en el ejemplo original, pero existe la alternativa de usar OpenJDK (ver sección Alternativas).
Paso 1 - Instalar JAVA
Actualiza los paquetes y repositorios antes de instalar software:
yum -y update
Descarga el RPM de Oracle Java (ejemplo). Si no tienes wget, instala wget primero:
yum -y install wget
Ejemplo de descarga del RPM (comando tal cual):
wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"
Instala el RPM descargado:
yum -y localinstall jdk-8u131-linux-x64.rpm
Verifica la versión de Java:
java -version
Salida esperada (ejemplo):
[root@liptan-pc ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Comprueba la variable de entorno JAVA_HOME:
echo $JAVA_HOME
Si la salida está vacía, añade las variables al perfil del usuario. Edita el fichero ~/.bash_profile con tu editor preferido (aquí usamos nano):
nano ~/.bash_profile
Añade estas líneas al final del archivo (mantén las rutas según tu instalación):
export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JRE_HOME=/usr/java/jdk1.8.0_131/jre
Aplica los cambios cargando el perfil:
source ~/.bash_profile
Verifica nuevamente:
[root@liptan-pc ~]# echo $JAVA_HOME
/usr/java/jdk1.8.0_131/
Nota: si instalas otra versión de JDK, ajusta las rutas JAVA_HOME/JRE_HOME.
Paso 2 - Añadir el repositorio e instalar Cassandra
Crea un archivo de repositorio para Cassandra:
nano /etc/yum.repos.d/cassandra.repo
Añade el siguiente contenido al archivo:
[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/redhat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS
Instala Cassandra usando yum:
yum -y install cassandra
Después de la instalación, recarga los daemons del sistema:
systemctl daemon-reload
Inicia Cassandra:
systemctl start cassandra
Activa el inicio automático con el sistema:
systemctl enable cassandra
Verifica el estado del clúster con nodetool:
nodetool status
Salida ejemplo cuando todo está bien:
[root@ip-172-31-7-136 ~]# 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 136.29 KiB 256 100.0% b3d26649-9e10-4bee-9b3c-8e81c4394b2e rack1
Solución de problemas comunes
Si nodetool devuelve un error de conexión, por ejemplo:
nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.
es posible que debas ajustar la configuración de RMI en el fichero de entorno de Cassandra. Edita el archivo:
nano /etc/cassandra/default.conf/cassandra-env.sh
Busca la línea con java.rmi.server.hostname:
# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname="
Descomenta y establece la IP de localhost (o la IP pública según tu despliegue):
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"
Guarda, cierra el editor y reinicia Cassandra:
systemctl restart cassandra
Vuelve a ejecutar:
nodetool status
Si nodetool muestra el estado, la comunicación JMX está funcionando.
Usar cqlsh para ejecutar consultas
Cassandra incluye cqlsh, una consola interactiva para CQL (Cassandra Query Language). Inicia cqlsh con:
cqlsh
Salida ejemplo:
[root@liptan-pc ~]# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
Desde cqlsh puedes crear keyspaces, tablas y ejecutar consultas CQL.
Alternativas y notas sobre Java
- OpenJDK: en muchos entornos es preferible usar OpenJDK 8 (paquetes openjdk) por licencia y compatibilidad. Para producción, verifica la compatibilidad de la versión de Java con la versión de Cassandra que vas a usar.
- Distribuciones de Cassandra: además del repositorio oficial, existen paquetes proporcionados por terceros o contenedores Docker para despliegues más reproducibles.
Seguridad y puertos importantes
- Puertos por defecto:
- 7000: internode (sin SSL)
- 7001: internode (SSL)
- 7199: JMX (nodetool)
- 9042: cliente CQL nativo
- 9160: Thrift (obsoleto en versiones modernas)
Asegura el acceso a estos puertos mediante firewall o reglas de red. No expongas JMX (7199) directamente a Internet.
Verificación y criterios de aceptación
- Cassandra está activo y habilitado: systemctl status cassandra muestra active (running).
- nodetool status muestra al menos un nodo UP y en estado Normal (UN).
- cqlsh permite conectar y ejecutar una consulta simple: SELECT release_version FROM system.local;
Ejemplo de validación rápida desde la terminal:
nodetool status
cqlsh -e "SELECT release_version FROM system.local;"
Role-based checklists
Administrador de sistemas (Ops):
- Actualizar sistema y repositorios.
- Instalar Java y configurar JAVA_HOME.
- Añadir repo y desplegar Cassandra.
- Configurar firewall y JMX seguro.
- Monitorizar logs en /var/log/cassandra/.
Desarrollador:
- Conectarse con cqlsh y probar consultas.
- Crear keyspace y tablas de prueba.
- Validar latencia y consistencia con CL (Consistency Level).
Comprobaciones rápidas (cheat sheet)
- Reiniciar Cassandra: systemctl restart cassandra
- Ver logs: tail -f /var/log/cassandra/system.log
- Estado del clúster: nodetool status
- Conexión CQL: cqlsh 127.0.0.1
Cuándo este procedimiento puede fallar
- Java incompatible o ruta JAVA_HOME incorrecta.
- Firewall bloqueando puertos JMX o CQL.
- Repositorio inaccesible (problemas de red o cambios en la URL del proyecto).
- Versiones de Cassandra y Java no compatibles.
Buenas prácticas para producción
- Ejecuta Cassandra en múltiples nodos para tolerancia a fallos.
- Mantén sincronizadas las versiones y realiza pruebas en un entorno de staging.
- Habilita copias de seguridad regulares y monitorización (por ejemplo con Prometheus/Grafana).
- Protege JMX y la interfaz CQL con TLS/VPN en entornos públicos.
Resumen
Apache Cassandra ya debería estar instalado y funcionando en tu servidor CentOS 7. Instalaste Java, añadiste el repositorio oficial, instalaste Cassandra, resolviste problemas de conexión JMX y comprobaste la instalación con nodetool y cqlsh.
Puntos clave:
- Asegurar la versión de Java y JAVA_HOME.
- Configurar correctamente cassandra-env.sh para JMX.
- Proteger los puertos y monitorizar el clúster.
Notas finales: visita el sitio oficial de Apache Cassandra para documentación detallada y guías de arquitectura si vas a desplegar en producción.
Materiales similares
Configurar WebDAV con lighttpd en Fedora 9

Separador de miles en Excel — Guía completa

Live Voicemail en iPhone: guía práctica

Actualizar CentOS 7 a CentOS 8 — Guía

Cómo instalar F1 TV en Android TV
