在 FreeBSD 中安装和配置 Cassandra

本文的目的是介绍如何在 FreeBSD 系统上安装和配置 Cassandra,以及如何使用基本的命令操作 Cassandra 数据库。

发布于

Cassandra 是一个分布式的、高可用的、可扩展的、无共享的数据库系统,它可以存储和处理大量的结构化、半结构化或非结构化的数据。Cassandra 的设计参考了 Google 的 Bigtable 和 Amazon 的 Dynamo,它使用了一致性哈希、列族模型、悲观复制、最终一致性等技术,使得它能够在多个数据中心或云平台上运行,提供高性能、高可靠性和容错性。

本文的目的是介绍如何在 FreeBSD 系统上安装和配置 Cassandra,以及如何使用基本的命令操作 Cassandra 数据库。本文假设您已经有了一台运行 FreeBSD 的服务器,且已经安装了 Java 环境。

先决条件

在开始安装和配置 Cassandra 之前,您需要确保您的系统满足以下条件:

  • 您的 FreeBSD 系统版本是 12.2 或更高
  • 您已经安装了 Java 8 或更高的版本,且已经设置了 JAVA_HOME 环境变量
  • 您已经安装了 pkg 包管理工具,且已经更新了软件仓库
  • 您已经拥有了 root 权限或 sudo 权限

安装 Cassandra

要在 FreeBSD 上安装 Cassandra,您可以使用 pkg 命令从官方仓库中获取最新的 Cassandra 包。在终端中输入以下命令:

sudo pkg install cassandra

输入 y 确认安装,等待安装过程完成。安装完成后,您可以使用以下命令查看 Cassandra 的版本:

cassandra -v

您应该看到类似于以下的输出:

3.11.10

这表示您已经成功地安装了 Cassandra 3.11.10 版本。

配置 Cassandra

在开始配置 Cassandra 之前,您需要先停止 Cassandra 服务,以避免配置文件被覆盖。您可以使用以下命令停止 Cassandra 服务:

sudo service cassandra stop

接下来,您需要编辑 Cassandra 的配置文件,该文件位于 /usr/local/etc/cassandra/cassandra.yaml。您可以使用您喜欢的文本编辑器打开该文件,比如 vinano。在本文中,我们使用 vi 作为示例:

sudo vi /usr/local/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 service cassandra start

您可以使用以下命令检查 Cassandra 服务的状态:

sudo service cassandra status

您应该看到类似于以下的输出:

cassandra is running as pid 1234.

这表示您已经成功地启动了 Cassandra 服务。

设置初始密码

如果您将 authenticator 参数的值改为了 PasswordAuthenticator,那么您需要设置初始密码,以便您能够使用 Cassandra 的命令行工具 cqlsh 登录 Cassandra 节点。默认情况下,Cassandra 提供了一个超级用户 cassandra,其初始密码是 cassandra。您需要使用以下命令登录 Cassandra 节点,并修改该超级用户的密码:

cqlsh -u cassandra -p 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>

这表示您已经成功地登录了 Cassandra 节点。接下来,您可以使用以下命令修改超级用户 cassandra 的密码,比如将其改为 mypassword

ALTER USER cassandra WITH PASSWORD 'mypassword';

您应该看到类似于以下的输出:

cassandra@cqlsh> ALTER USER cassandra WITH PASSWORD 'mypassword';
cassandra@cqlsh>

这表示您已经成功地修改了超级用户 cassandra 的密码。您可以使用以下命令退出 Cassandra 节点:

exit

操作 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 工具。

结论

本文介绍了如何在 FreeBSD 系统上安装和配置 Cassandra,以及如何使用 cqlsh 工具操作 Cassandra 数据库。您可以根据本文的内容,尝试在您的服务器上部署和使用 Cassandra,体验其强大的功能和性能。如果您想了解更多关于 Cassandra 的信息,您可以访问其官方网站文档