Apache Cassandra est un système de gestion de base de données NoSQL gratuit et open source conçu pour gérer de grandes quantités de données sur de nombreux serveurs de base, offrant une haute disponibilité sans point de défaillance unique. Apache Cassandra a été initialement développé par Facebook, puis acquis par la Fondation Apache.
Apache Cassandra est adapté aux quantités massives et à croissance exponentielle de données en constante transformation.
Cassandra par rapport au SGBDR
Cassandra a des analogies étroites avec les concepts des bases de données relationnelles :
Keyspace
– Semblable à une base de données/schéma dans un SGBDRTable
– Similaire au tableau dans RDBMSRow
– Similaire à Row dans RDBMSColumn
– Similaire à Colonne dans RDBMSPrimary key
– Semblable à la clé primaire dans RDBMS
Prérequis
Pour suivre ce guide, vous avez besoin :
- Serveur Centos 8
- Accès root au serveur ou utilisateur avec accès sudo
- Accès Internet pour télécharger les packages
Voici les étapes que nous suivrons pour installer Cassandra
- Assurez-vous que notre système est à jour
- Installer Java dans le système
- Installer Apache Cassandra dans le système
- Installer et configurer le client Apache Cassandra (cqlsh)
- Configurer Apache Cassandra
Étape 1 Assurez-vous que notre système est à jour
Assurons-nous que les packages Centos 8 installés sur le serveur sont à jour. Vous pouvez le faire en exécutant les commandes suivantes :
sudo dnf -y update
Étape 2 Installez Java dans le système
Apache Cassandra nécessite que vous ayez Java 8 dans votre système pour qu'il fonctionne. Confirmez que Java est installé en tapant cette commande :
java -version
Si vous voyez cette sortie :
# java -version
-bash: java: command not found
Ensuite, cela signifie que Java n'est pas installé. Installons-le avec cette commande :
sudo dnf install -y java-1.8.0-openjdk
Une fois l'installation terminée, confirmez-la par ceci :
# 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)
Maintenant que Java 8 est installé sur notre système, installons Cassandra.
Étape 3. Installez Apache Cassandra dans le système
Apache Cassandra n'est pas disponible dans les référentiels Centos 8 par défaut. Créons un référentiel pointant vers Cassandra Repos :
Créez ce /etc/yum.repos.d/cassandra.repo
fichier avec le contenu requis en utilisant cette commande :
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
Maintenant que nous avons ajouté le dépôt, installons Cassandra :
sudo dnf install -y cassandra
Confirmez que Cassandra a été installé à l'aide de cette commande :
# 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.
Une fois cette commande installée, le binaire cassandra sera créé dans /usr/sbin/cassandra
. Étant donné que Centos 8 gère les services à l'aide de systemd, créons un fichier systemd dans /etc/systemd/system/cassandra.service
avec le contenu nécessaire pour gérer le service 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
Une fois le fichier créé, vous pouvez utiliser systemd pour gérer le service :
Exécutez cette commande pour vous assurer que notre nouveau service systemd est enregistré :
sudo systemctl daemon-reload
Pour démarrer le service :
sudo systemctl start cassandra
Confirmez que le service est en cours d'exécution. Veuillez vous assurer que son Active: active (running)
dans la commande d'état suivante :
# 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
Activez le service Cassandra pour qu'il s'exécute toujours au démarrage :
sudo systemctl enable cassandra
Utilisez le nodetool status
commande pour confirmer l'état du nœud actuel :
# 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
Maintenant que le service est opérationnel, installons le client :
Étape 4. Installer et configurer le client Apache Cassandra (cqlsh)
Maintenant que le service Apache Cassandra a été installé et configuré, nous devons nous y connecter.
L'outil client utilisé pour accéder à Cassandra (cqlsh
) est un client Python. Donc, avant de l'installer, nous devons configurer l'environnement pour Python :
Installer python3 et python pip
sudo dnf install -y python39 python39-pip
Confirmez l'installation et Python et pip :
# python3 -V
Python 3.9.2
# pip3 -V
pip 20.2.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)
À l'aide de pip, installez cqlsh :
sudo pip3 install cqlsh
Nous pouvons maintenant utiliser cqlsh pour nous connecter à cassandra. Comme Cassandra est installé localement, nous n'avons pas besoin de spécifier d'hôte :
# 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>
Maintenant que le client est configuré, configurons Cassandra
Étape 4. Configurer Apache Cassandra
Permet de configurer Apache Cassandra. Le fichier de configuration principal se trouve ici /etc/cassandra/default.conf/cassandra.yaml
Configurations notables à modifier :
cluster_name
– le nom de votre clusterseeds
contient la liste des adresses IP de votre graine de cluster, séparées par des virguleslisten_address
contient l'adresse IP de votre nœud, c'est ce qui permet aux autres nœuds de communiquer avec ce nœud
En plus de cela, vous pouvez également ajouter la variable env JVM_OPTS
en ajoutant tout argument de ligne de commande JVM supplémentaire. Ceci sera transmis au service Cassandra lors du démarrage.
Par défaut, le nom du cluster de Cassandra est "Test Cluster". Vous pouvez le remplacer par le nom de votre cluster préféré en vous connectant à l'aide de cqlsh
et exécutez la commande ci-dessous.
UPDATE system.local
SET cluster_name = 'Citizix Cluster'
WHERE KEY = 'local';
Après cela, mettez à jour le fichier de configuration /etc/cassandra/default.conf/cassandra.yaml
avec le nouveau nom :
sudo vim /etc/cassandra/default.conf/cassandra.yaml
Mettez ensuite à jour cette ligne :
cluster_name: 'Citizix Cluster'
Enregistrez et quittez.
Effacons le cache système en utilisant ceci :
nodetool flush system
Redémarrez ensuite le service cassandra
sudo systemctl restart cassandra
Connectez-vous à nouveau pour confirmer le nom du cluster comme indiqué.
Conclusion
Nous avons réussi à installer et à configurer Cassanda dans le guide ci-dessus. Veuillez noter ce qui suit :
- Cassandra stocke son journal dans ce répertoire
/var/log/cassandra/
avec le fichier journal principal situé dans/var/log/cassandra/system.log
- Depuis que nous avons créé un service systemd, vous pouvez également vérifier
stdout
etstderr
journaux à l'aide de cette commande :sudo journalctl -fu cassandra
- Ceci
/var/lib/cassandra
est défini comme répertoire de données par défaut. Vous pouvez le mettre à jour dans le fichier de configuration - Les fichiers de configuration de Cassandra sont stockés dans ce répertoire
/etc/cassandra/
y compris le fichier de configuration par défaut/etc/cassandra/default.conf/cassandra.yaml
- Pour gérer le service cassandra que nous avons créé :
# 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
Veuillez également consulter la page de documentation de Cassandra ici pour plus d'informations.