1. Introduzione
Cassandra è un sistema di gestione di database distribuito open source con un ampio archivio di colonne e un database NoSQL in grado di gestire enormi quantità di dati su molti server di base senza un singolo punto di errore. È stato creato dalla Apache Software Foundation ed è scritto in Java. In questo articolo, analizzeremo la procedura passo passo per installare Cassandra in CentOS 7 Linux.
2. Prerequisiti
Tutti i comandi forniti di seguito devono essere eseguiti come root
o sudo
utente.
2.1. Installa Python 2.7
Su CentOS 7, Python 2.7 è preinstallato. Se manca per qualche motivo, puoi utilizzare il seguente comando per installarlo:
# yum -y install python
# python --version Python 2.7.5
2.2. Installa Java
Utilizzare i comandi seguenti per installare l'ultima versione di Java 8 e verificare l'installazione.
# yum install java-1.8.0-openjdk-devel
# java -version
Risultato di esempio:
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. Come installare Cassandra
Innanzitutto, aggiungiamo il repository Cassandra. Per farlo, crea un file chiamato cassandra.repo
sotto /etc/yum.repos.d/
directory:
# vi /etc/yum.repos.d/cassandra.repo
Aggiungi le seguenti righe:
[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
Premi ESC digitare e digitare :wq
per salvare il file e chiuderlo.
Verifica se il repository Cassandra è stato aggiunto. Il comando seguente garantirà i repository installati e abilitati:
# yum repolist
Dopo aver aggiunto il repository, esegui il seguente comando per installare Cassandra nel tuo sistema CentOS:
# yum -y install cassandra
Abilita e avvia il servizio Cassandra:
# systemctl enable cassandra
cassandra.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig cassandra on
# systemctl start Cassandra
Garantire lo stato di Cassandra:
# systemctl status cassandra
Utilizza il comando seguente per ottenere i dettagli del cluster come la sua condizione, il carico e gli ID:
# nodetool status
Risultato di esempio:
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
Nell'output,
- ONU - Su &Normale
- Indirizzo - Indirizzo IP del nodo
- Carica - Dopo aver escluso tutto il contenuto nella sottodirectory snapshot, la quantità di dati del file system nella directory dei dati di Cassandra. Ogni 90 secondi una volta Verrà aggiornato.
- Token - Il numero di token che sono stati assegnati al nodo.
- Possiede - Quanti dati possiede il nodo; un nodo può possedere il 33% dell'anello ma visualizzare il 100% se il fattore di replica è 3.
- ID host - ID di rete dell'host
- Rack - Rack del Nodo dove esiste.
4. Cqlsh – CLI per Cassandra
cqlsh è un'interfaccia della riga di comando per l'utilizzo di CQL per la connessione con Cassandra (Cassandra Query Language). È incluso in ogni pacchetto Cassandra e può essere trovato insieme all'eseguibile cassandra nel bin/
directory. Il driver del protocollo nativo Python viene utilizzato per implementare cqlsh, che si connette a un singolo nodo.
Per avviare Cqlsh, esegui:
# cqlsh
Risultato di esempio:
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. Comandi di esempio CQL
5.1. Crea spazio chiave
In Cassandra, uno spazio delle chiavi funge da contenitore di dati, simile a un database nei sistemi di gestione di database relazionali (RDMBS)
cqlsh> CREATE KEYSPACE IF NOT EXISTS OsTechNix WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }; cqlsh>
Controlla gli spazi chiave nel sistema usando i comandi seguenti.
cqlsh> SELECT * FROM system_schema.keyspaces;
Per mostrare tutti gli spazi delle chiavi, esegui:
cqlsh> desc keyspaces;
Verranno elencati tutti gli spazi delle chiavi nel cluster:
ostechnix system_auth system_schema system_views system system_distributed system_traces system_virtual_schema
5.2. Crea tabella e inserisci dati di esempio
Puoi usare il CREATE TABLE
istruzione che definisce i tipi di dati per ogni colonna come di solito facciamo in RDBMS. I dati vengono archiviati in tabelle CQL con righe di colonne, proprio come le definizioni SQL.
È necessario definire la "chiave primaria" e altri campi di dati per la creazione di una tabella. Segui l'esempio seguente per la creazione della tabella.
cqlsh> CREATE TABLE ostechnix.sample_table ( id UUID PRIMARY KEY, name text, birthday timestamp, nationality text, weight text, height text );
cqlsh>
Usa il INSERT
istruzione per inserire dati semplici nella tabella ostechnix.sample_table
che creiamo sopra. In questo esempio di seguito, due record vengono aggiunti alla tabella.
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. Interrogazione della tabella
Usa l'istruzione SELECT per restituire una o più righe da una tabella.
cqlsh> SELECT * FROM ostechnix.sample_table;
Qui, *
restituisce tutti i dati dalla tabella.
cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85';
Risultato di esempio:
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 non eseguirà una query che non specifica i valori per tutte le colonne dalla chiave primaria in 'where
', ed emetterà l'errore di cui sopra avvertendo di usare 'ALLOW FILTERING'
.
Il motivo di questo errore è che Cassandra non sarà in grado di identificare il nodo che contiene i risultati richiesti se la chiave di partizione completa non è inclusa in WHERE
clausola. Di conseguenza, Cassandra dovrà scansionare l'intero set di dati su ciascun nodo per garantire di aver identificato i dati rilevanti.
cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85' ALLOW FILTERING;
6. Riepilogo
In questo articolo, abbiamo esaminato le procedure di installazione di Cassandra e alcuni esempi di comandi CQL. Nei prossimi articoli faremo un tuffo nell'operazione Cassandra.