Apache Cassandra je bezplatný a otevřený systém pro správu databází NoSQL navržený ke zpracování velkého množství dat na mnoha komoditních serverech a poskytuje vysokou dostupnost bez jediného bodu selhání. Apache Cassandra byla původně vyvinuta společností Facebook a později ji získala Apache Foundation.
Apache Cassandra je vhodný pro masivní, exponenciálně rostoucí množství neustále se transformujících dat.
Cassandra ve srovnání s RDBMS
Cassandra má blízké analogie s koncepty v relačních databázích:
Keyspace
– Podobné jako databáze/schéma v RDBMSTable
– Podobné jako tabulka v RDBMSRow
– Podobné jako Row v RDBMSColumn
– Podobně jako sloupec v RDBMSPrimary key
– Podobně jako primární klíč v RDBMS
Předpoklady
Abyste mohli postupovat podle tohoto průvodce, potřebujete:
- Server Centos 8
- Kořenový přístup k serveru nebo uživateli s přístupem sudo
- Přístup k internetu ke stažení balíčků
Níže jsou uvedeny kroky, které provedeme při instalaci Cassandry
- Ujistěte se, že je náš systém aktuální
- Nainstalujte do systému Javu
- Nainstalujte do systému Apache Cassandra
- Nainstalujte a nakonfigurujte klienta Apache Cassandra (cqlsh)
- Nakonfigurujte Apache Cassandra
Krok 1 Ujistěte se, že je náš systém aktuální
Ujistěte se, že balíčky Centos 8 nainstalované na serveru jsou aktuální. Můžete to provést spuštěním následujících příkazů:
sudo dnf -y update
Krok 2 Nainstalujte Javu do systému
Apache Cassandra vyžaduje, abyste měli ve svém systému Java 8, aby fungoval. Potvrďte, že je Java nainstalována zadáním tohoto příkazu:
java -version
Pokud vidíte tento výstup:
# java -version
-bash: java: command not found
Pak to znamená, že Java není nainstalována. Nainstalujme jej pomocí tohoto příkazu:
sudo dnf install -y java-1.8.0-openjdk
Jakmile je instalace dokončena, potvrďte ji tímto :
# 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)
Nyní, když je v našem systému nainstalována Java 8, pojďme nainstalovat Cassandru.
Krok 3. Nainstalujte Apache Cassandra do systému
Apache Cassandra není k dispozici ve výchozích úložištích Centos 8. Pojďme vytvořit repo směřující na Cassandra Repos:
Vytvořte tento /etc/yum.repos.d/cassandra.repo
soubor s obsahem požadovaným pomocí tohoto příkazu:
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
Nyní, když jsme přidali repo, umožňuje nainstalovat cassandru:
sudo dnf install -y cassandra
Potvrďte, že Cassandra byla nainstalována pomocí tohoto příkazu:
# 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.
Jakmile je tento příkaz nainstalován, binární soubor cassandra bude vytvořen v /usr/sbin/cassandra
. Protože Centos 8 spravuje služby pomocí systemd, pojďme vytvořit soubor systemd v /etc/systemd/system/cassandra.service
s obsahem potřebným ke správě služby 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
Jakmile je soubor vytvořen, můžete ke správě služby použít systemd:
Spusťte tento příkaz a ujistěte se, že je naše nová služba systemd zaregistrována:
sudo systemctl daemon-reload
Spuštění služby:
sudo systemctl start cassandra
Potvrďte, že služba běží. Ujistěte se prosím, že je Active: active (running)
v následujícím příkazu stavu:
# 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
Povolte, aby služba cassandra vždy běžela při spuštění:
sudo systemctl enable cassandra
Použijte nodetool status
příkaz pro potvrzení stavu aktuálního stavu uzlu:
# 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
Nyní, když je služba spuštěna, můžeme nainstalovat klienta:
Krok 4. Instalace a konfigurace klienta Apache Cassandra (cqlsh)
Nyní, když je služba Apache Cassandra nainstalována a nakonfigurována, musíme se k ní připojit.
Klientský nástroj používaný pro přístup ke Cassandře (cqlsh
) je klient pythonu. Před instalací tedy musíme nastavit prostředí pro python:
Nainstalujte python3 a python pip
sudo dnf install -y python39 python39-pip
Potvrďte instalaci a Python a pip:
# python3 -V
Python 3.9.2
# pip3 -V
pip 20.2.4 from /usr/lib/python3.9/site-packages/pip (python 3.9)
Pomocí pip nainstalujte cqlsh:
sudo pip3 install cqlsh
Nyní můžeme použít cqlsh pro připojení ke cassandře. Protože je Cassandra nainstalována lokálně, nemusíme zadávat žádného hostitele:
# 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>
Nyní, když je klient nastaven, pojďme nakonfigurovat Cassandru
Krok 4. Nakonfigurujte Apache Cassandra
Pojďme nakonfigurovat Apache Cassandra. Hlavní konfigurační soubor se nachází zde /etc/cassandra/default.conf/cassandra.yaml
Pozoruhodné konfigurace ke změně:
cluster_name
– název vašeho clusteruseeds
obsahuje seznam IP adres vašeho seedu clusteru oddělených čárkamilisten_address
obsahuje IP adresu vašeho uzlu, to je to, co umožňuje ostatním uzlům komunikovat s tímto uzlem
Kromě toho můžete také přidat proměnnou env JVM_OPTS
přidání jakýchkoli dalších argumentů příkazového řádku JVM. To bude při spuštění předáno službě cassandra.
Ve výchozím nastavení je název clusteru Cassandra ‚Test Cluster‘. Toto můžete změnit na preferovaný název clusteru přihlášením pomocí cqlsh
a spuštění příkazu níže.
UPDATE system.local
SET cluster_name = 'Citizix Cluster'
WHERE KEY = 'local';
Poté aktualizujte konfigurační soubor /etc/cassandra/default.conf/cassandra.yaml
s novým názvem:
sudo vim /etc/cassandra/default.conf/cassandra.yaml
Pak aktualizujte tento řádek:
cluster_name: 'Citizix Cluster'
Uložte a ukončete.
Umožňuje vymazat mezipaměť systému pomocí tohoto:
nodetool flush system
Poté restartujte službu cassandra
sudo systemctl restart cassandra
Znovu se přihlaste a potvrďte název clusteru, jak je znázorněno.
Závěr
Podařilo se nám nainstalovat a nakonfigurovat cassandu ve výše uvedené příručce. Vezměte prosím na vědomí následující:
- Cassandra ukládá svůj protokol do tohoto adresáře
/var/log/cassandra/
s hlavním souborem protokolu umístěným v/var/log/cassandra/system.log
- Protože jsme vytvořili službu systemd, můžete také zkontrolovat
stdout
astderr
protokoluje pomocí tohoto příkazu:sudo journalctl -fu cassandra
- Toto
/var/lib/cassandra
je nastaven jako výchozí datový adresář. Můžete to aktualizovat v konfiguračním souboru - Konfigurační soubory Cassandra jsou uloženy v tomto adresáři
/etc/cassandra/
včetně výchozího konfiguračního souboru/etc/cassandra/default.conf/cassandra.yaml
- Správa služby cassandra, kterou jsme vytvořili:
# 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
Další informace naleznete také na stránce dokumentace Cassandra zde.