在 openSUSE 中安装和配置 Cassandra
本文的目的是介绍如何在 openSUSE 系统上安装和配置 Cassandra,以及如何使用基本的命令操作 Cassandra 数据库。
Cassandra 是一个分布式的、高可用的、可扩展的、无共享的数据库系统,它可以存储和处理大量的结构化、半结构化或非结构化的数据。Cassandra 的设计参考了 Google 的 Bigtable 和 Amazon 的 Dynamo,它使用了一致性哈希、列族模型、悲观复制、最终一致性等技术,使得它能够在多个数据中心或云平台上运行,提供高性能、高可靠性和容错性。
本文的目的是介绍如何在 openSUSE 系统上安装和配置 Cassandra,以及如何使用基本的命令操作 Cassandra 数据库。本文假设您已经有了一台运行 openSUSE 的服务器,且已经安装了 Java 环境。
先决条件
在开始安装和配置 Cassandra 之前,您需要确保您的系统满足以下条件:
- 您的 openSUSE 系统版本是 15.3 或更高
- 您已经安装了 Java 8 或更高的版本,且已经设置了
JAVA_HOME
环境变量 - 您已经安装了
zypper
包管理工具,且已经更新了软件仓库 - 您已经拥有了
root
权限或sudo
权限
安装 Cassandra
要在 openSUSE 上安装 Cassandra,您可以使用 zypper
命令从官方仓库中获取最新的 Cassandra 包。在终端中输入以下命令:
sudo zypper install cassandra
输入 y
确认安装,等待安装过程完成。安装完成后,您可以使用以下命令查看 Cassandra 的版本:
cassandra -v
您应该看到类似于以下的输出:
3.11.10
这表示您已经成功地安装了 Cassandra 3.11.10 版本。
配置 Cassandra
在开始配置 Cassandra 之前,您需要先停止 Cassandra 服务,以避免配置文件被覆盖。您可以使用以下命令停止 Cassandra 服务:
sudo systemctl stop cassandra
接下来,您需要编辑 Cassandra 的配置文件,该文件位于 /etc/cassandra/cassandra.yaml
。您可以使用您喜欢的文本编辑器打开该文件,比如 vi
或 nano
。在本文中,我们使用 vi
作为示例:
sudo vi /etc/cassandra/cassandra.yaml
在配置文件中,您需要修改以下几个参数:
cluster_name
:这个参数指定了您的 Cassandra 集群的名称,您可以根据您的需要自定义该名称,比如MyCassandraCluster
。如果您有多个节点组成的集群,那么每个节点的cluster_name
必须相同。listen_address
:这个参数指定了您的 Cassandra 节点的 IP 地址,它用于与其他节点进行通信。您需要将该参数的值改为您的服务器的 IP 地址,比如192.168.1.100
。如果您只有一个节点,那么您可以将该参数的值改为localhost
。rpc_address
:这个参数指定了您的 Cassandra 节点的 IP 地址,它用于与客户端进行通信。您需要将该参数的值改为您的服务器的 IP 地址,比如192.168.1.100
。如果您只有一个节点,那么您可以将该参数的值改为localhost
。seed_provider
:这个参数指定了您的 Cassandra 集群的种子节点,它用于发现其他节点并加入集群。您需要将该参数的值改为您的种子节点的 IP 地址,比如192.168.1.100
。如果您只有一个节点,那么您可以将该参数的值改为localhost
。authenticator
:这个参数指定了您的 Cassandra 节点的认证方式,它用于控制客户端的访问权限。默认情况下,该参数的值是AllowAllAuthenticator
,这意味着任何客户端都可以访问 Cassandra 节点,不需要提供用户名和密码。为了提高安全性,您可以将该参数的值改为PasswordAuthenticator
,这意味着客户端需要提供正确的用户名和密码才能访问 Cassandra 节点。authorizer
:这个参数指定了您的 Cassandra 节点的授权方式,它用于控制客户端的操作权限。默认情况下,该参数的值是AllowAllAuthorizer
,这意味着任何客户端都可以执行任何操作,不需要检查权限。为了提高安全性,您可以将该参数的值改为CassandraAuthorizer
,这意味着客户端需要具有相应的权限才能执行操作。
修改完配置文件后,您需要保存并退出。然后,您可以使用以下命令启动 Cassandra 服务:
sudo systemctl start cassandra
您可以使用以下命令检查 Cassandra 服务的状态:
sudo systemctl status cassandra
您应该看到类似于以下的输出:
● cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/init.d/cassandra; generated)
Active: active (running) since Tue 2024-01-23 15:01:24 CST; 1min 30s ago
Docs: man:systemd-sysv-generator(8)
Process: 1234 ExecStart=/etc/init.d/cassandra start (code=exited, status=0/SUCCESS)
Tasks: 31 (limit: 4915)
Memory: 1.2G
CGroup: /system.slice/cassandra.service
└─2345 /usr/lib64/jvm/java-1.8.0-openjdk/bin/java -Xloggc:/var/log/cassandra/gc.log -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:StringTableSize=1000003 -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA -XX:+PerfDisableSharedMem -Djava.net.preferIPv4Stack=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1 -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSWaitDuration=10000 -XX:+CMSParallelInitialMarkEnabled -XX:+CMSEdenChunksRecordAlways -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Xms2G -Xmx2G -Xmn400M -XX:CompileCommandFile=/etc/cassandra/hotspot_compiler -javaagent:/usr/share/cassandra/lib/jamm-0.3.0.jar -Dcassandra.jmx.local.port=7199 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password -Djava.library.path=/usr/share/cassandra/lib/sigar-bin -Dlogback.configurationFile=logback.xml -Dcassandra.logdir=/var/log/cassandra -Dcassandra.storagedir=/var/lib/cassandra -Dcassandra-pidfile=/var/run/cassandra/cassandra.pid -cp /etc/cassandra:/usr/share/cassandra/lib
...
操作 Cassandra
在本节中,我们将介绍如何使用 cqlsh
工具操作 Cassandra 数据库,包括启动、停止、重启、加载配置、登录、退出等。您可以使用以下命令启动 cqlsh
工具,并连接到 Cassandra 节点:
cqlsh -u cassandra -p mypassword
您需要提供正确的用户名和密码,否则您将无法连接到 Cassandra 节点。如果您成功地连接到 Cassandra 节点,您将看到类似于以下的输出:
Connected to MyCassandraCluster at 192.168.1.100:9042.
[cqlsh 5.0.1 | Cassandra 3.11.10 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cassandra@cqlsh>
在 cqlsh
工具中,您可以使用 Cassandra 查询语言(CQL)来执行各种操作,比如创建、修改、删除、查询数据。CQL 的语法类似于 SQL,但有一些不同之处。您可以使用 HELP
命令来查看 CQL 的语法和用法,比如:
cassandra@cqlsh> HELP CREATE KEYSPACE
您应该看到类似于以下的输出:
CREATE KEYSPACE <identifier>
WITH <properties>
[AND DURABLE_WRITES = <boolean>];
<properties> ::= REPLICATION = {'class':<string>, <property>:<value> (, <property>:<value>)*}
| REPLICATION = {'class':<string>}
| REPLICATION = <map>
<property> ::= 'replication_factor' | 'datacenters'
<value> ::= <string> | <integer>
Examples:
CREATE KEYSPACE Excelsior
WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3};
CREATE KEYSPACE Excalibur
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 2};
这表示您已经成功地查看了 CREATE KEYSPACE
命令的语法和用法。您可以使用类似的方式查看其他命令的语法和用法。
接下来,我们将演示如何使用 cqlsh
工具创建一个名为 test
的键空间(类似于 SQL 中的数据库),并在其中创建一个名为 users
的表(类似于 SQL 中的表),并插入、修改、删除、查询数据。您可以使用以下命令创建一个名为 test
的键空间,使用 SimpleStrategy
作为复制策略,设置复制因子为 1:
cassandra@cqlsh> CREATE KEYSPACE test WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1};
您应该看到类似于以下的输出:
cassandra@cqlsh> CREATE KEYSPACE test WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 1};
cassandra@cqlsh>
这表示您已经成功地创建了一个名为 test
的键空间。您可以使用以下命令切换到 test
键空间:
cassandra@cqlsh> USE test;
您应该看到类似于以下的输出:
cassandra@cqlsh> USE test;
cassandra@cqlsh:test>
这表示您已经成功地切换到 test
键空间。您可以使用以下命令创建一个名为 users
的表,包含 id
、name
、age
、email
四个字段,其中 id
是主键:
cassandra@cqlsh:test> CREATE TABLE users (id int PRIMARY KEY, name text, age int, email text);
您应该看到类似于以下的输出:
cassandra@cqlsh:test> CREATE TABLE users (id int PRIMARY KEY, name text, age int, email text);
cassandra@cqlsh:test>
这表示您已经成功地创建了一个名为 users
的表。您可以使用以下命令插入一些数据到 users
表中,比如:
cassandra@cqlsh:test> INSERT INTO users (id, name, age, email) VALUES (1, 'Alice', 25, '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, age, email) VALUES (2, 'Bob', 30, '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, age, email) VALUES (3, 'Charlie', 35, '[email protected]');
您应该看到类似于以下的输出:
cassandra@cqlsh:test> INSERT INTO users (id, name, age, email) VALUES (1, 'Alice', 25, '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, age, email) VALUES (2, 'Bob', 30, '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, age, email) VALUES (3, 'Charlie', 35, '[email protected]');
cassandra@cqlsh:test>
这表示您已经成功地插入了三条数据到 users
表中。您可以使用以下命令查询 users
表中的所有数据:
cassandra@cqlsh:test> SELECT * FROM users;
您应该看到类似于以下的输出:
cassandra@cqlsh:test> SELECT * FROM users;
id | age | email | name
----+-----+-------------------+---------
1 | 25 | [email protected] | Alice
2 | 30 | [email protected] | Bob
3 | 35 | [email protected] | Charlie
(3 rows)
这表示您已经成功地查询了 users
表中的所有数据。您可以使用以下命令修改 users
表中的某些数据,比如将 id
为 1 的用户的 age
改为 26:
cassandra@cqlsh:test> UPDATE users SET age = 26 WHERE id = 1;
您应该看到类似于以下的输出:
cassandra@cqlsh:test> UPDATE users SET age = 26 WHERE id = 1;
cassandra@cqlsh:test>
这表示您已经成功地修改了 users
表中的某些数据。您可以使用以下命令删除 users
表中的某些数据,比如将 id
为 3 的用户删除:
cassandra@cqlsh:test> DELETE FROM users WHERE id = 3;
您应该看到类似于以下的输出:
cassandra@cqlsh:test> DELETE FROM users WHERE id = 3;
cassandra@cqlsh:test>
这表示您已经成功地删除了 users
表中的某些数据。您可以使用以下命令退出 cqlsh
工具:
exit
您应该看到类似于以下的输出:
cassandra@cqlsh:test> exit
$
这表示您已经成功地退出了 cqlsh
工具。
结论
本文介绍了如何在 openSUSE 系统上安装和配置 Cassandra,以及如何使用 cqlsh
工具操作 Cassandra 数据库。您可以根据本文的内容,尝试在您的服务器上部署和使用 Cassandra,体验其强大的功能和性能。如果您想了解更多关于 Cassandra 的信息,您可以访问其官方网站或文档。