在 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。您可以使用您喜欢的文本编辑器打开该文件,比如 vinano。在本文中,我们使用 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 的表,包含 idnameageemail 四个字段,其中 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 的信息,您可以访问其官方网站文档