1. Úvod
Cassandra je open-source systém pro správu distribuovaných databází se širokým úložištěm sloupců a databází NoSQL, který dokáže zpracovat obrovské množství dat na mnoha komoditních serverech bez jediného bodu selhání. Byl vytvořen Apache Software Foundation a je napsán v Javě. V tomto článku projdeme krok za krokem proces instalace Cassandry v CentOS 7 Linux.
2. Předpoklady
Všechny níže uvedené příkazy by měly být spouštěny jako root
nebo sudo
uživatel.
2.1. Nainstalujte Python 2.7
Na CentOS 7 je Python 2.7 předinstalovaný. Pokud z nějakého důvodu chybí, můžete jej nainstalovat pomocí následujícího příkazu:
# yum -y install python
# python --version Python 2.7.5
2.2. Nainstalujte Java
Pomocí níže uvedených příkazů nainstalujte nejnovější verzi Java 8 a ověřte instalaci.
# yum install java-1.8.0-openjdk-devel
# java -version
Ukázkový výstup:
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. Jak nainstalovat Cassandru
Nejprve přidejte úložiště Cassandra. Chcete-li tak učinit, vytvořte soubor s názvem cassandra.repo
pod /etc/yum.repos.d/
adresář:
# vi /etc/yum.repos.d/cassandra.repo
Přidejte do něj následující řádky:
[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
Stiskněte ESC a zadejte :wq
uložte soubor a zavřete jej.
Ověřte, zda je přidáno úložiště Cassandra. Níže uvedený příkaz zajistí nainstalované a povolené úložiště:
# yum repolist
Po přidání úložiště spusťte následující příkaz k instalaci Cassandry do vašeho systému CentOS:
# yum -y install cassandra
Povolte a spusťte službu Cassandra:
# systemctl enable cassandra
cassandra.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig cassandra on
# systemctl start Cassandra
Zkontrolujte stav Cassandry:
# systemctl status cassandra
Pomocí níže uvedeného příkazu získáte podrobnosti o clusteru, jako je jeho stav, zatížení a ID:
# nodetool status
Ukázkový výstup:
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
Ve výstupu
- OSN - Up &Normal
- Adresa - IP adresa uzlu
- Načíst - Po vyloučení veškerého obsahu v podadresáři snapshots množství dat systému souborů v datovém adresáři Cassandra. Každých 90 sekund bude jednou aktualizováno.
- Tokeny - Počet tokenů, které byly přiřazeny k uzlu.
- Vlastní - Kolik dat uzel vlastní; uzel může mít 33 % kruhu, ale zobrazí 100 %, pokud je replikační faktor 3.
- ID hostitele – ID sítě hostitele
- Skříň - Rack of the Node tam, kde existuje.
4. Cqlsh – CLI pro Cassandru
cqlsh je rozhraní příkazového řádku pro využití CQL pro spojení s Cassandrou (Cassandra Query Language). Je součástí každého balíčku Cassandra a lze jej nalézt vedle spustitelného souboru cassandra v bin/
adresář. Ovladač nativního protokolu Python se používá k implementaci cqlsh, který se připojuje k jedinému uzlu.
Chcete-li spustit Cqlsh, spusťte:
# cqlsh
Ukázkový výstup:
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>použijte HELP
5. CQL Ukázkové příkazy
5.1. Vytvořit klíčový prostor
V Cassandře klíčový prostor slouží jako datový kontejner, podobně jako databáze v systémech pro správu relačních databází (RDMBS)
cqlsh> CREATE KEYSPACE IF NOT EXISTS OsTechNix WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }; cqlsh>
Zkontrolujte klíčová místa v systému pomocí níže uvedených příkazů.
cqlsh> SELECT * FROM system_schema.keyspaces;
Chcete-li zobrazit všechny klíčové prostory, spusťte:
cqlsh> desc keyspaces;
Budou uvedeny všechny klíčové prostory v clusteru:
ostechnix system_auth system_schema system_views system system_distributed system_traces system_virtual_schema
5.2. Vytvořte tabulku a vložte ukázková data
Můžete použít CREATE TABLE
příkaz definující datové typy pro každý sloupec, jak to obvykle děláme v RDBMS. Data jsou uložena v tabulkách CQL s řádky sloupců, podobně jako definice SQL.
Pro vytvoření tabulky musíte definovat 'primární klíč' a další datová pole. Pro vytvoření tabulky postupujte podle níže uvedeného příkladu.
cqlsh> CREATE TABLE ostechnix.sample_table ( id UUID PRIMARY KEY, name text, birthday timestamp, nationality text, weight text, height text );
cqlsh>
Použijte INSERT
příkaz pro vložení jednoduchých dat do tabulky ostechnix.sample_table
které vytvoříme výše. V tomto níže uvedeném příkladu jsou do tabulky přidány dva záznamy.
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. Dotaz na tabulku
Použijte příkaz SELECT pro vrácení jednoho nebo více řádků z tabulky.
cqlsh> SELECT * FROM ostechnix.sample_table;
Zde *
vrátí všechna data z tabulky.
cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85';
Ukázkový výstup:
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 nespustí dotaz, který neurčuje hodnoty pro všechny sloupce z primárního klíče v 'where
' a vydá výše uvedené upozornění na chybu, aby bylo možné použít 'ALLOW FILTERING'
.
Důvodem této chyby je, že Cassandra nebude schopna identifikovat uzel, který obsahuje požadované výsledky, pokud v WHERE
nebude zahrnut úplný klíč oddílu. doložka. V důsledku toho bude muset Cassandra naskenovat celou datovou sadu na každém uzlu, aby se zaručila, že identifikuje relevantní data.
cqlsh> SELECT * FROM ostechnix.sample_table WHERE weight = '85' ALLOW FILTERING;
6. Shrnutí
V tomto článku jsme prošli instalačními postupy Cassandry a několika ukázkovými příkazy CQL. V nadcházejících článcích se podrobně ponoříme do operace Cassandra.