Apache Cassandra è un sistema di gestione di database NoSQL gratuito e open source progettato per gestire grandi quantità di dati su molti server di base, fornendo un'elevata disponibilità senza un singolo punto di errore. Apache Cassandra è stato inizialmente sviluppato da Facebook e successivamente acquisito da Apache Foundation.
Apache Cassandra è adatto per quantità enormi e in crescita esponenziale di dati in continua trasformazione.
Cassandra rispetto a RDBMS
Cassandra ha strette analogie con i concetti nei database relazionali:
Keyspace
– Simile a un database/schema in un RDBMSTable
– Simile alla tabella in RDBMSRow
– Simile a Riga in RDBMSColumn
– Simile a Colonna in RDBMSPrimary key
– Simile alla chiave primaria in RDBMS
Prerequisiti
Per seguire questa guida, hai bisogno di:
- Server Centos 8
- Accesso root al server o utente con accesso sudo
- Accesso a Internet per scaricare i pacchetti
Di seguito sono riportati i passaggi che seguiremo per installare Cassandra
- Assicurati che il nostro sistema sia aggiornato
- Installa Java nel sistema
- Installa Apache Cassandra nel sistema
- Installa e configura il client Apache Cassandra (cqlsh)
- Configura Apache Cassandra
Passaggio 1 Assicurati che il nostro sistema sia aggiornato
Assicuriamoci che i pacchetti Centos 8 installati sul server siano aggiornati. Puoi farlo eseguendo i seguenti comandi:
sudo dnf -y update
Fase 2 Installa Java nel sistema
Apache Cassandra richiede che java 8 nel tuo sistema possa funzionare. Conferma che Java è installato digitando questo comando:
java -version
Se vedi questo output:
# java -version
-bash: java: command not found
Quindi significa che java non è installato. Installiamolo con questo comando:
sudo dnf install -y java-1.8.0-openjdk
Una volta completata l'installazione, confermala con questo :
# 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)
Ora che Java 8 è installato nel nostro sistema, installa Cassandra.
Passaggio 3. Installa Apache Cassandra nel sistema
Apache Cassandra non è disponibile nei repository Centos 8 predefiniti. Creiamo un repository che punta a Cassandra Repos:
Crea questo /etc/yum.repos.d/cassandra.repo
file con il contenuto richiesto utilizzando questo 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
Ora che abbiamo aggiunto il repository, installiamo cassandra:
sudo dnf install -y cassandra
Conferma che Cassandra è stata installata utilizzando questo 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 volta installato il comando, il binario cassandra verrà creato in /usr/sbin/cassandra
. Poiché Centos 8 gestisce i servizi utilizzando systemd, creiamo un file systemd in /etc/systemd/system/cassandra.service
con i contenuti necessari alla gestione del servizio 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 volta creato il file, puoi utilizzare systemd per gestire il servizio:
Esegui questo comando per assicurarti che il nostro nuovo servizio systemd sia registrato:
sudo systemctl daemon-reload
Per avviare il servizio:
sudo systemctl start cassandra
Conferma che il servizio è in esecuzione. Assicurati di vedere che è Active: active (running)
nel seguente comando di stato:
# 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
Abilita il servizio cassandra per essere sempre eseguito all'avvio:
sudo systemctl enable cassandra
Usa lo nodetool status
comando per confermare lo stato dello stato del nodo corrente:
# 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
Ora che il servizio è attivo e funzionante, installa il client:
Passaggio 4. Installa e configura il client Apache Cassandra (cqlsh)
Ora che il servizio Apache Cassandra è stato installato e configurato, dobbiamo connetterci ad esso.
Lo strumento client utilizzato per accedere a Cassandra (cqlsh
) è un client Python. Quindi prima di installarlo dobbiamo configurare l'ambiente per python:
Installa python3 e python pip
sudo dnf install -y python39 python39-pip
Conferma l'installazione e Python e 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, installa cqlsh:
sudo pip3 install cqlsh
Ora possiamo usare cqlsh per connetterci a cassandra. Poiché Cassandra è installato localmente, non è necessario specificare alcun 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>
Ora che il client è configurato, configuriamo Cassandra
Passaggio 4. Configura Apache Cassandra
Consente di configurare Apache Cassandra. Il file di configurazione principale si trova qui /etc/cassandra/default.conf/cassandra.yaml
Configurazioni notevoli da modificare:
cluster_name
– il nome del tuo clusterseeds
contiene l'elenco degli indirizzi IP del seme del tuo cluster, separati da virgolelisten_address
contiene l'indirizzo IP del tuo nodo, questo è ciò che consente ad altri nodi di comunicare con questo nodo
Inoltre, puoi anche aggiungere la variabile env JVM_OPTS
aggiungendo eventuali argomenti della riga di comando JVM aggiuntivi. Questo sarà passato al servizio cassandra all'avvio.
Per impostazione predefinita, il nome del cluster di Cassandra è "Test Cluster". Puoi cambiarlo con il tuo nome cluster preferito effettuando l'accesso utilizzando cqlsh
ed eseguendo il comando seguente.
UPDATE system.local
SET cluster_name = 'Citizix Cluster'
WHERE KEY = 'local';
Dopodiché aggiorna il file di configurazione /etc/cassandra/default.conf/cassandra.yaml
con il nuovo nome:
sudo vim /etc/cassandra/default.conf/cassandra.yaml
Quindi aggiorna questa riga:
cluster_name: 'Citizix Cluster'
Salva ed esci.
Svuotiamo la cache di sistema usando questo:
nodetool flush system
Quindi riavvia il servizio cassandra
sudo systemctl restart cassandra
Accedi di nuovo per confermare il nome del cluster come mostrato.
Conclusione
Siamo riusciti a installare e configurare cassanda nella guida sopra. Si prega di notare quanto segue:
- Cassandra memorizza i propri log in questa directory
/var/log/cassandra/
con il file di registro principale che si trova in/var/log/cassandra/system.log
- Dato che abbiamo creato un servizio systemd, puoi anche controllare
stdout
estderr
logs usando questo comando:sudo journalctl -fu cassandra
- Questo
/var/lib/cassandra
è impostato come directory dati predefinita. Puoi aggiornarlo nel file di configurazione - I file di configurazione di Cassandra sono archiviati in questa directory
/etc/cassandra/
incluso il file di configurazione predefinito/etc/cassandra/default.conf/cassandra.yaml
- Per gestire il servizio cassandra che abbiamo creato:
# 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
Per ulteriori informazioni, controlla anche la pagina della documentazione di Cassandra qui.