Apache Cassandra ist ein kostenloses und quelloffenes NoSQL-Datenbankverwaltungssystem, das für die Verarbeitung großer Datenmengen auf vielen Standardservern entwickelt wurde und eine hohe Verfügbarkeit ohne Single Point of Failure bietet. Apache Cassandra wurde ursprünglich von Facebook entwickelt und später von der Apache Foundation übernommen.
Apache Cassandra eignet sich für riesige, exponentiell wachsende Mengen sich ständig verändernder Daten.
Cassandra im Vergleich zu RDBMS
Cassandra hat enge Analogien zu Konzepten in relationalen Datenbanken:
Keyspace
– Ähnlich einer Datenbank/einem Schema in einem RDBMSTable
– Ähnlich wie Tabelle in RDBMSRow
– Ähnlich wie Row in RDBMSColumn
– Ähnlich wie Column in RDBMSPrimary key
– Ähnlich wie Primärschlüssel in RDBMS
Voraussetzungen
Um dieser Anleitung zu folgen, benötigen Sie:
- Centos 8-Server
- Root-Zugriff auf den Server oder Benutzer mit sudo-Zugriff
- Internetzugang zum Herunterladen der Pakete
Die folgenden Schritte werden wir befolgen, um Cassandra
zu installieren- Stellen Sie sicher, dass unser System auf dem neuesten Stand ist
- Installieren Sie Java im System
- Installieren Sie Apache Cassandra im System
- Installieren und konfigurieren Sie den Apache Cassandra Client (cqlsh)
- Apache Cassandra konfigurieren
Schritt 1 Stellen Sie sicher, dass unser System auf dem neuesten Stand ist
Stellen wir sicher, dass die auf dem Server installierten Centos 8-Pakete auf dem neuesten Stand sind. Sie können dies tun, indem Sie die folgenden Befehle ausführen:
sudo dnf -y update
Schritt 2 Java im System installieren
Apache Cassandra erfordert, dass Sie Java 8 in Ihrem System haben, damit es ausgeführt werden kann. Bestätigen Sie, dass Java installiert ist, indem Sie diesen Befehl eingeben:
java -version
Wenn Sie diese Ausgabe sehen:
# java -version
-bash: java: command not found
Dann bedeutet es, dass Java nicht installiert ist. Installieren wir es mit diesem Befehl:
sudo dnf install -y java-1.8.0-openjdk
Sobald die Installation abgeschlossen ist, bestätigen Sie diese hiermit:
# 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)
Jetzt, da Java 8 in unserem System installiert ist, können wir Cassandra installieren.
Schritt 3. Apache Cassandra im System installieren
Apache Cassandra ist in den standardmäßigen Centos 8-Repositories nicht verfügbar. Lassen Sie uns ein Repo erstellen, das auf Cassandra Repos zeigt:
Erstellen Sie dieses /etc/yum.repos.d/cassandra.repo
Datei mit dem erforderlichen Inhalt mit diesem Befehl:
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
Nachdem wir das Repo hinzugefügt haben, können wir Cassandra installieren:
sudo dnf install -y cassandra
Bestätigen Sie mit diesem Befehl, dass Cassandra installiert wurde:
# 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.
Sobald dieser Befehl installiert ist, wird die Cassandra-Binärdatei in /usr/sbin/cassandra
erstellt . Da Centos 8 Dienste mit systemd verwaltet, erstellen wir eine systemd-Datei in /etc/systemd/system/cassandra.service
mit den Inhalten, die für die Verwaltung des cassandra-Dienstes erforderlich sind
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
Sobald die Datei erstellt ist, können Sie systemd verwenden, um den Dienst zu verwalten:
Führen Sie diesen Befehl aus, um sicherzustellen, dass unser neuer systemd-Dienst registriert ist:
sudo systemctl daemon-reload
So starten Sie den Dienst:
sudo systemctl start cassandra
Bestätigen Sie, dass der Dienst ausgeführt wird. Bitte stellen Sie sicher, dass es Active: active (running)
ist im folgenden Statusbefehl:
# 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
Aktivieren Sie den cassandra-Dienst so, dass er immer beim Booten ausgeführt wird:
sudo systemctl enable cassandra
Verwenden Sie den nodetool status
Befehl, um den Status des aktuellen Knotenstatus zu bestätigen:
# 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
Nachdem der Dienst nun eingerichtet ist und ausgeführt wird, können Sie den Client installieren:
Schritt 4. Apache Cassandra Client (cqlsh) installieren und konfigurieren
Nachdem der Apache Cassandra-Dienst installiert und konfiguriert wurde, müssen wir uns nun mit ihm verbinden.
Das Client-Tool für den Zugriff auf Cassandra (cqlsh
) ist ein Python-Client. Also müssen wir vor der Installation die Umgebung für Python einrichten:
Installieren Sie python3 und python pip
sudo dnf install -y python39 python39-pip
Bestätigen Sie die Installation und Python und Pip:
# python3 -V
Python 3.9.2
# pip3 -V
pip 20.2.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)
Installieren Sie mit pip cqlsh:
sudo pip3 install cqlsh
Jetzt können wir cqlsh verwenden, um eine Verbindung zu cassandra herzustellen. Da Cassandra lokal installiert ist, müssen wir keinen Host angeben:
# 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>
Jetzt, da der Client eingerichtet ist, konfigurieren wir Cassandra
Schritt 4. Apache Cassandra konfigurieren
Lassen Sie uns Apache Cassandra konfigurieren. Die Hauptkonfigurationsdatei befindet sich hier /etc/cassandra/default.conf/cassandra.yaml
Bemerkenswerte zu ändernde Konfigurationen:
cluster_name
– der Name Ihres Clustersseeds
enthält die Liste der IP-Adressen Ihres Cluster-Seeds, kommagetrenntlisten_address
enthält die IP-Adresse Ihres Knotens, die es anderen Knoten ermöglicht, mit diesem Knoten zu kommunizieren
Darüber hinaus können Sie auch die Umgebungsvariable JVM_OPTS
hinzufügen Hinzufügen zusätzlicher JVM-Befehlszeilenargumente. Diese wird beim Start an den cassandra-Dienst übergeben.
Der Clustername von Cassandra lautet standardmäßig „Testcluster“. Sie können dies in Ihren bevorzugten Clusternamen ändern, indem Sie sich mit cqlsh
anmelden und führen Sie den folgenden Befehl aus.
UPDATE system.local
SET cluster_name = 'Citizix Cluster'
WHERE KEY = 'local';
Danach aktualisieren Sie die Konfigurationsdatei /etc/cassandra/default.conf/cassandra.yaml
mit dem neuen Namen:
sudo vim /etc/cassandra/default.conf/cassandra.yaml
Dann aktualisieren Sie diese Zeile:
cluster_name: 'Citizix Cluster'
Speichern und beenden.
Lassen Sie uns den System-Cache löschen, indem Sie Folgendes verwenden:
nodetool flush system
Starten Sie dann den cassandra-Dienst neu
sudo systemctl restart cassandra
Melden Sie sich erneut an, um den angezeigten Clusternamen zu bestätigen.
Schlussfolgerung
Wir haben es geschafft, cassanda in der obigen Anleitung zu installieren und zu konfigurieren. Bitte beachten Sie Folgendes:
- Cassandra speichert sein Protokoll in diesem Verzeichnis
/var/log/cassandra/
mit der Hauptprotokolldatei, die sich in/var/log/cassandra/system.log
befindet - Da wir einen systemd-Dienst erstellt haben, können Sie auch
stdout
überprüfen undstderr
Protokolle mit diesem Befehl:sudo journalctl -fu cassandra
- Dieser
/var/lib/cassandra
ist als Standarddatenverzeichnis eingestellt. Sie können das in der Konfigurationsdatei aktualisieren - Cassandra-Konfigurationsdateien werden in diesem Verzeichnis
/etc/cassandra/
gespeichert einschließlich der Standardkonfigurationsdatei/etc/cassandra/default.conf/cassandra.yaml
- So verwalten Sie den cassandra-Dienst, den wir erstellt haben:
# 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
Weitere Informationen finden Sie auch auf der Cassandra-Dokumentationsseite hier.