在 Fedora 中安装和配置 Cassandra
本文将介绍如何在 Fedora 系统中安装和配置 Cassandra,以及如何使用 Cassandra 的基本操作。
Cassandra 是一个分布式的 NoSQL 数据库,它可以提供高可用性、高扩展性和高性能的数据存储和查询服务。Cassandra 的数据模型基于列族,它可以支持灵活的数据结构和复杂的查询。Cassandra 还提供了一致性调节、数据复制、故障恢复等高级功能,使其适用于大规模的数据处理场景。
本文将介绍如何在 Fedora 系统中安装和配置 Cassandra,以及如何使用 Cassandra 的基本操作。本文假设您已经拥有了一台 Fedora 的服务器,并且可以通过 SSH 连接到该服务器。
先决条件
在安装和配置 Cassandra 之前,您需要满足以下的先决条件:
- 您的服务器至少需要 4 GB 的内存,8 GB 以上是推荐的。
- 您的服务器需要有足够的磁盘空间,至少 50 GB,以存储 Cassandra 的数据和日志文件。
- 您的服务器需要安装 Java 8 或更高版本,Cassandra 需要 Java 环境来运行。
- 您需要使用 root 用户或具有 sudo 权限的用户来执行安装和配置的命令。
安装 Java
首先,您需要检查您的服务器是否已经安装了 Java,并且是 8 或更高的版本。您可以通过以下命令来查看 Java 的版本:
java -version
如果您的服务器没有安装 Java,或者安装的版本低于 8,您可以通过以下命令来安装 OpenJDK 11,这是一个开源的 Java 实现:
sudo dnf update
sudo dnf install java-11-openjdk
安装完成后,您可以再次使用 java -version
命令来验证 Java 的版本。
下载 Cassandra 的二进制包
接下来,您需要下载 Cassandra 的二进制包,以便从本地安装 Cassandra。您可以通过以下命令来下载 Cassandra 的二进制包:
wget https://downloads.apache.org/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz
这个命令会从 Cassandra 的官方网站下载 Cassandra 3.11.11 版本的二进制包,并且保存为 apache-cassandra-3.11.11-bin.tar.gz
文件。您也可以根据您的需要选择其他的版本,比如 4.0.1 版本,这是 Cassandra 4.0 的最新的稳定版本。
然后,您需要解压 Cassandra 的二进制包,以便获取 Cassandra 的安装文件。您可以通过以下命令来解压 Cassandra 的二进制包:
tar xzf apache-cassandra-3.11.11-bin.tar.gz
这个命令会将 Cassandra 的二进制包解压到 apache-cassandra-3.11.11
目录中,这个目录包含了 Cassandra 的所有的安装文件。
安装 Cassandra
现在,您可以开始安装 Cassandra 了。您可以通过以下命令来安装 Cassandra:
sudo mv apache-cassandra-3.11.11 /opt/cassandra
这个命令会将 Cassandra 的安装文件移动到 /opt/cassandra
目录中,这个目录是 Cassandra 的安装目录。您也可以根据您的需要选择其他的目录,但是您需要确保您有足够的权限来访问这个目录。
然后,您需要创建一个 Cassandra 的用户和组,以便运行 Cassandra 的服务。您可以通过以下命令来创建 Cassandra 的用户和组:
sudo groupadd cassandra
sudo useradd -g cassandra -d /opt/cassandra cassandra
这些命令会创建一个名为 cassandra
的用户和组,并且指定了其主目录为 /opt/cassandra
。您也可以根据您的需要选择其他的名称和目录,但是您需要确保这个用户和组有足够的权限来访问 Cassandra 的安装目录。
接下来,您需要修改 Cassandra 的安装目录的所有者和权限,以便 Cassandra 的用户和组可以正常地访问和操作 Cassandra 的安装文件。您可以通过以下命令来修改 Cassandra 的安装目录的所有者和权限:
sudo chown -R cassandra:cassandra /opt/cassandra
sudo chmod -R 755 /opt/cassandra
这些命令会将 Cassandra 的安装目录的所有者和组修改为 cassandra
,并且赋予其可读、可写、可执行的权限。
最后,您需要创建一个 Cassandra 的服务文件,以便使用 systemctl
命令来管理 Cassandra 的服务。您可以通过以下命令来创建 Cassandra 的服务文件:
sudo vim /etc/systemd/system/cassandra.service
这个命令会使用 vim
编辑器来创建一个名为 /etc/systemd/system/cassandra.service
的文件,这个文件是 Cassandra 的服务文件。您也可以使用其他的编辑器来创建这个文件,但是您需要确保这个文件的内容如下:
[Unit]
Description=Apache Cassandra
After=network.target
[Service]
Type=forking
User=cassandra
Group=cassandra
Environment="CASSANDRA_HOME=/opt/cassandra"
Environment="CASSANDRA_CONF=/opt/cassandra/conf"
Environment="CASSANDRA_PID_FILE=/var/run/cassandra/cassandra.pid"
ExecStart=/opt/cassandra/bin/cassandra -p /var/run/cassandra/cassandra.pid
ExecStop=/opt/cassandra/bin/stop-server
Restart=always
[Install]
WantedBy=multi-user.target
这个文件定义了 Cassandra 的服务的描述、依赖、类型、用户、组、环境变量、启动命令、停止命令、重启策略等信息。您需要根据您的实际情况修改这些信息,比如您的 Cassandra 的安装目录、配置目录、进程文件等。
在创建了 Cassandra 的服务文件之后,您需要重新加载 systemd
的配置,以便识别 Cassandra 的服务。您可以通过以下命令来重新加载 systemd
的配置:
sudo systemctl daemon-reload
这个命令会让 systemd
重新读取 /etc/systemd/system
目录中的所有的服务文件,包括 Cassandra 的服务文件。
配置 Cassandra
在安装 Cassandra 之后,您可能需要对 Cassandra 进行一些配置,以适应您的实际需求。Cassandra 的配置文件位于 /opt/cassandra/conf/cassandra.yaml
,您可以使用任意的文本编辑器来修改这个文件。以下是一些常见的配置选项:
cluster_name
:这个选项指定了 Cassandra 的集群的名称,您需要确保集群中的所有节点使用相同的名称,否则会导致节点之间无法通信。默认的名称是Test Cluster
,您可以根据您的需要修改为其他的名称。listen_address
:这个选项指定了 Cassandra 的监听地址,即 Cassandra 接受其他节点的连接请求的地址。默认的地址是localhost
,这意味着 Cassandra 只能在本地访问,不适合分布式的场景。您可以修改为您的服务器的实际的 IP 地址,或者使用auto
来让 Cassandra 自动检测您的服务器的 IP 地址。rpc_address
:这个选项指定了 Cassandra 的远程过程调用(RPC)的地址,即 Cassandra 接受客户端的连接请求的地址。默认的地址是localhost
,这意味着 Cassandra 只能在本地访问,不适合远程的场景。您可以修改为您的服务器的实际的 IP 地址,或者使用0.0.0.0
来让 Cassandra 接受任意的 IP 地址的连接请求。seeds
:这个选项指定了 Cassandra 的种子节点的地址,即 Cassandra 在启动时用来发现其他节点的地址。默认的地址是127.0.0.1
,这意味着 Cassandra 只能发现本地的节点,不适合分布式的场景。您可以修改为您的集群中的一个或多个节点的 IP 地址,用逗号分隔。种子节点的作用是帮助新加入的节点找到集群中的其他节点,因此您不需要将所有的节点都列为种子节点,一般来说,每个数据中心的 2-3 个节点就足够了。authenticator
:这个选项指定了 Cassandra 的认证器,即 Cassandra 用来验证用户身份的组件。默认的认证器是AllowAllAuthenticator
,这意味着 Cassandra 不需要用户提供任何的用户名和密码,不适合安全的场景。您可以修改为PasswordAuthenticator
,这意味着 Cassandra 会要求用户提供用户名和密码,以增加安全性。authorizer
:这个选项指定了 Cassandra 的授权器,即 Cassandra 用来控制用户权限的组件。默认的授权器是AllowAllAuthorizer
,这意味着 Cassandra 不会对用户的操作进行任何的限制,不适合安全的场景。您可以修改为CassandraAuthorizer
,这意味着 Cassandra 会根据用户的角色来分配不同的权限,以增加安全性。
除了以上的配置选项,Cassandra 还有很多其他的配置选项,您可以根据您的需要进行修改。您可以参考 Cassandra 的官方文档 来了解更多的配置选项的含义和用法。
在修改了 Cassandra 的配置文件之后,您需要重启 Cassandra 的服务,以使配置生效。您可以通过以下命令来重启 Cassandra 的服务:
sudo systemctl restart cassandra
设置初始密码
如果您将 Cassandra 的认证器修改为 PasswordAuthenticator
,那么您需要设置一个初始的密码,以便登录 Cassandra。Cassandra 提供了一个默认的超级用户,用户名是 cassandra
,密码也是 cassandra
。您可以使用这个用户来登录 Cassandra,并且修改其密码,以增加安全性。
您可以通过以下命令来登录 Cassandra:
cqlsh -u cassandra -p cassandra
这个命令会使用 cqlsh
工具来连接 Cassandra,并且提供默认的用户名和密码。如果连接成功,您会看到类似以下的输出:
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.11 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cassandra@cqlsh>
然后,您可以通过以下命令来修改默认用户的密码:
ALTER USER cassandra WITH PASSWORD 'new_password';
这个命令会将默认用户的密码修改为 new_password
,您可以根据您的需要选择一个强壮的密码。修改完成后,您会看到类似以下的输出:
cassandra@cqlsh> ALTER USER cassandra WITH PASSWORD 'new_password';
cassandra@cqlsh>
最后,您可以通过以下命令来退出 Cassandra:
exit
这个命令会断开 Cassandra 的连接,并且返回到命令行界面。
验证安装
在安装和配置 Cassandra 之后,您可以通过一些简单的操作来验证 Cassandra 是否正常工作。您可以通过以下命令来再次登录 Cassandra:
cqlsh -u cassandra -p new_password
这个命令会使用 cqlsh
工具来连接 Cassandra,并且提供修改后的用户名和密码。如果连接成功,您会看到类似以下的输出:
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.11 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cassandra@cqlsh>
接下来,您可以通过以下命令来创建一个测试的键空间:
CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
这个命令会创建一个名为 test
的键空间,并且指定了其复制策略为 SimpleStrategy
,复制因子为 1。这意味着这个键空间的数据只会存储在一个节点上,不会进行数据复制。这适合测试的场景,但不适合生产的场景。创建完成后,您会看到类似以下的输出:
cassandra@cqlsh> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
cassandra@cqlsh>
然后,您可以通过以下命令来切换到测试的键空间:
USE test;
这个命令会将当前的操作上下文切换到 test
键空间,这样您就可以在这个键空间中创建和操作数据表了。切换完成后,您会看到类似以下的输出:
cassandra@cqlsh> USE test;
cassandra@cqlsh:test>
接下来,您可以通过以下命令来创建一个测试的数据表:
CREATE TABLE users (
id int PRIMARY KEY,
name text,
email text
);
这个命令会创建一个名为 users
的数据表,并且指定了其列的名称和类型,以及主键的列。这个数据表用来存储用户的信息,包括用户的编号、姓名和邮箱。创建完成后,您会看到类似以下的输出:
cassandra@cqlsh:test> CREATE TABLE users (
... id int PRIMARY KEY,
... name text,
... email text
... );
cassandra@cqlsh:test>
接下来,您可以通过以下命令来向测试的数据表中插入一些数据:
INSERT INTO users (id, name, email) VALUES (1, 'Alice', '[email protected]');
INSERT INTO users (id, name, email) VALUES (2, 'Bob', '[email protected]');
INSERT INTO users (id, name, email) VALUES (3, 'Charlie', '[email protected]');
这些命令会向 users
数据表中插入三条记录,分别表示三个不同的用户。插入完成后,您会看到类似以下的输出:
cassandra@cqlsh:test> INSERT INTO users (id, name, email) VALUES (1, 'Alice', '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, email) VALUES (2, 'Bob', '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, email) VALUES (3, 'Charlie', '[email protected]');
cassandra@cqlsh:test>
最后,您可以通过以下命令来查询测试的数据表中的数据:
SELECT * FROM users;
这个命令会从 users
数据表中查询所有的数据,并且以表格的形式显示出来。查询完成后,您会看到类似以下的输出:
cassandra@cqlsh:test> SELECT * FROM users;
id | email | name
----+-------------------+---------
1 | [email protected] | Alice
2 | [email protected] | Bob
3 | [email protected] | Charlie
(3 rows)
cassandra@cqlsh:test>
这样,您就完成了对 Cassandra 的安装和验证的过程,您可以看到 Cassandra 已经可以正常地存储和查询数据了。
Cassandra 的基本操作
在使用 Cassandra 的过程中,您可能需要了解一些 Cassandra 的基本操作,比如如何启动、停止、重启、加载配置、登录、退出等。以下是一些常用的 Cassandra 的基本操作的命令:
- 启动 Cassandra 的服务:
sudo systemctl start cassandra
- 停止 Cassandra 的服务:
sudo systemctl stop cassandra
- 重启 Cassandra 的服务:
sudo systemctl restart cassandra
- 加载 Cassandra 的配置:
sudo systemctl reload cassandra
- 查看 Cassandra 的服务状态:
sudo systemctl status cassandra
- 登录 Cassandra:
cqlsh -u username -p password
- 退出 Cassandra:
exit
- 查看 Cassandra 的版本:
nodetool version
- 查看 Cassandra 的集群状态:
nodetool status
- 查看 Cassandra 的帮助信息:
cqlsh --help
或nodetool --help
结论
本文介绍了如何在 Fedora 系统中安装和配置 Cassandra,以及如何使用 Cassandra 的基本操作。您可以根据本文的内容来在您的服务器上部署和使用 Cassandra,以享受 Cassandra 的高性能和高可用性的数据服务。如果您想了解更多关于 Cassandra 的信息,您可以参考 Cassandra 的官方网站 和 Cassandra 的官方文档。