1. Introducción
Casandra es un sistema de administración de bases de datos distribuidas de código abierto con un almacén de columnas anchas y una base de datos NoSQL que puede manejar cantidades masivas de datos en muchos servidores básicos sin un punto único de falla. Fue creado por Apache Software Foundation y está escrito en Java. En este artículo, veremos el proceso paso a paso para instalar Cassandra en CentOS 7 Linux.
2. Requisitos previos
Todos los comandos dados a continuación deben ejecutarse como root
o sudo
usuario.
2.1. Instalar Python 2.7
En CentOS 7, Python 2.7 viene preinstalado. Si falta por alguna razón, puede usar el siguiente comando para instalarlo:
# yum -y install python
# python --version Python 2.7.5
2.2. Instalar Java
Utilice los siguientes comandos para instalar la última versión de Java 8 y verificar la instalación.
# yum install java-1.8.0-openjdk-devel
# java -version
Salida de muestra:
openjdk version "1.8.0_312" OpenJDK Runtime Environment (build 1.8.0_312-b07) OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
3. Cómo instalar Cassandra
Primero, agreguemos el repositorio Cassandra. Para hacerlo, cree un archivo llamado cassandra.repo
en /etc/yum.repos.d/
directorio:
# vi /etc/yum.repos.d/cassandra.repo
Agregue las siguientes líneas en él:
[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS
Presiona ESC clave y escriba :wq
para guardar el archivo y cerrarlo.
Verifique si se agregó el repositorio de Cassandra. El siguiente comando asegurará los repositorios instalados y habilitados:
# yum repolist
Después de agregar el repositorio, ejecute el siguiente comando para instalar Cassandra en su sistema CentOS:
# yum -y install cassandra
Habilite e inicie el servicio Cassandra:
# systemctl enable cassandra
cassandra.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig cassandra on
# systemctl start Cassandra
Asegurar el estado de Cassandra:
# systemctl status cassandra
Use el siguiente comando para obtener los detalles del clúster, como su condición, carga e ID:
# nodetool status
Salida de muestra:
Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 69.08 KiB 16 100.0% bf2df7a9-54bc-41c9-8c6c-0b9322d10e71 rack1
En la salida,
- ONU - Arriba y normal
- Dirección - Dirección IP del nodo
- Cargar - Después de excluir todo el contenido en el subdirectorio de instantáneas, la cantidad de datos del sistema de archivos en el directorio de datos de Cassandra. Cada 90 segundos una vez Se actualizará.
- Fichas - El número de tokens que se han asignado al nodo.
- Propiedad - Cuántos datos posee el nodo; un nodo puede poseer el 33 % del anillo pero mostrar el 100 % si el factor de replicación es 3.
- ID de host - ID de red del anfitrión
- Estante - Rack del Nodo donde exista.
4. Cqlsh:CLI para Cassandra
cqlsh es una interfaz de línea de comandos para utilizar CQL para conectarse con Cassandra (Lenguaje de consulta de Cassandra). Está incluido en cada paquete de Cassandra y se puede encontrar junto con el ejecutable de Cassandra en el bin/
directorio. El controlador de protocolo nativo de Python se usa para implementar cqlsh, que se conecta a un solo nodo.
Para iniciar Cqlsh, ejecute:
# cqlsh
Salida de muestra:
Connected to Test Cluster at 127.0.0.1:9042 [cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5] Use HELP for help. cqlsh>
5. Comandos de muestra de CQL
5.1. Crear espacio clave
En Cassandra, un espacio de claves sirve como contenedor de datos, similar a una base de datos en los sistemas de gestión de bases de datos relacionales (RDMBS)
cqlsh> CREATE KEYSPACE IF NOT EXISTS OsTechNix WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }; cqlsh>
Verifique los espacios clave en el sistema usando los siguientes comandos.
cqlsh> SELECT * FROM system_schema.keyspaces;
Para mostrar todos los espacios de teclas, ejecute:
cqlsh> desc keyspaces;
Se enumerarán todos los espacios de claves del clúster:
ostechnix system_auth system_schema system_views system system_distributed system_traces system_virtual_schema
5.2. Crear tabla e insertar datos de muestra
Puedes usar CREATE TABLE
declaración que define los tipos de datos para cada columna como lo hacemos habitualmente en RDBMS. Los datos se almacenan en tablas CQL con filas de columnas, al igual que las definiciones SQL.
Debe definir la 'clave principal' y otros campos de datos para crear una tabla. Siga el siguiente ejemplo para la creación de tablas.
cqlsh> CREATE TABLE ostechnix.sample_table ( id UUID PRIMARY KEY, name text, birthday timestamp, nationality text, weight text, height text );
cqlsh>
Usa el INSERT
instrucción para insertar datos simples en la tabla ostechnix.sample_table
que creamos arriba. En este ejemplo a continuación, se agregan dos registros a la tabla.
cqlsh> INSERT INTO ostechnix.sample_table (id, name, nationality) VALUES (5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'KARTHICK', 'Indian');
cqlsh> INSERT INTO ostechnix.sample_table (id, name, nationality, weight) VALUES (5b6962dd-3f90-4c93-8f61-eabfa4a804e3, 'MOHAN', 'Indian', '85');
5.3. Consultando la tabla
Use la instrucción SELECT para devolver una o más filas de una tabla.
cqlsh> SELECT * FROM ostechnix.sample_table;
Aquí, *
devuelve todos los datos de la tabla.
cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85';
Salida de muestra:
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" cqlsh>
Cassandra no ejecutará una consulta que no especifique valores para todas las columnas de la clave principal en 'where
', y emitirá el error anterior alertando para usar 'ALLOW FILTERING'
.
El motivo de este error es que Cassandra no podrá identificar el nodo que contiene los resultados necesarios si la clave de partición completa no está incluida en WHERE
cláusula. Como resultado, Cassandra tendrá que escanear todo el conjunto de datos en cada nodo para garantizar que haya identificado los datos relevantes.
cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85' ALLOW FILTERING;
6. Resumen
En este artículo, hemos repasado los procedimientos de instalación de Cassandra y algunos ejemplos de comandos CQL. Tendremos una inmersión profunda en la Operación Cassandra en los próximos artículos.