在 CentOS 8 上安装 Apache Cassandra |洛基 Linux 8 |
如何在 CentOS 8 上安装 Apache Cassandra | Rocky Linux 8 机器? Apache Cassandra 是一个免费开源的 NoSQL 数据库管理系统,旨在实现分布式和高可用性。 Cassandra 可以跨许多商用服务器处理大量数据,而不会出现任何单点故障。
本指南将引导您完成在 CentOS 8 上安装 Cassandra | Rocky Linux 8。安装完成后,我们将继续对 Cassandra 进行配置和调整,以便与可用资源最少的机器一起使用。
卡桑德拉的特点
Cassandra 提供 Cassandra 查询语言 (CQL),一种类似 SQL 的语言,
- Keyspace:定义数据集的复制方式,例如
- 表:定义分区集合的类型化架构。卡桑德拉
- 分区:定义主键中所有行的强制部分
- 行:包含由唯一主键标识的列的集合
- 列:具有属于行的类型的单个数据。
Cassandra 支持以下客户端驱动程序:
- 爪哇
- Python
- 红宝石
- C#/.NET
- Nodejs
- PHP
- C++
- 斯卡拉
- 克洛尤尔
- 埃尔兰
- 去
- 哈斯克尔
- 锈
- 珀尔
- 灵丹妙药
- 镖
在 CentOS 8 上安装 Apache Cassandra |洛基 Linux 8
在 CentOS 8 上运行 Cassandra 需要 Java | Rocky Linux 8。但是我们首先更新并重新启动系统。
sudo dnf -y update
升级后执行系统重启。
sudo reboot
第 1 步:安装 Java 和 Python 以及 cqlsh
在 CentOS/Rocky Linux 8 上安装 Python3 Pip 和 OpenJDK 8:
sudo dnf -y install python3 python3-pip java-11-openjdk java-11-openjdk-devel
使用 pip3 Python 包管理器安装 cqsh:
sudo pip3 install cqlsh tox
确保安装成功:
.....
Collecting py>=1.4.17 (from tox)
Downloading https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl (98kB)
100% |████████████████████████████████| 102kB 9.5MB/s
Collecting toml>=0.10.2; python_version <= "3.6" (from tox)
Downloading https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
Collecting filelock>=3.0.0 (from tox)
Downloading https://files.pythonhosted.org/packages/84/ce/8916d10ef537f3f3b046843255f9799504aa41862bfa87844b9bdc5361cd/filelock-3.4.1-py3-none-any.whl
Collecting geomet<0.3,>=0.1 (from cassandra-driver->cqlsh)
Downloading https://files.pythonhosted.org/packages/c9/81/156ca48f950f833ddc392f8e3677ca50a18cb9d5db38ccb4ecea55a9303f/geomet-0.2.1.post1-py3-none-any.whl
Collecting distlib<1,>=0.3.6 (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
Downloading https://files.pythonhosted.org/packages/43/a0/9ba967fdbd55293bacfc1507f58e316f740a3b231fc00e3d86dc39bc185a/distlib-0.3.7-py2.py3-none-any.whl (468kB)
100% |████████████████████████████████| 471kB 2.2MB/s
Collecting platformdirs<3,>=2.4 (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
Downloading https://files.pythonhosted.org/packages/b1/78/dcfd84d3aabd46a9c77260fb47ea5d244806e4daef83aa6fe5d83adb182c/platformdirs-2.4.0-py3-none-any.whl
Collecting importlib-resources>=5.4; python_version < "3.7" (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
Downloading https://files.pythonhosted.org/packages/24/1b/33e489669a94da3ef4562938cd306e8fa915e13939d7b8277cb5569cb405/importlib_resources-5.4.0-py3-none-any.whl
Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata>=0.12; python_version < "3.8"->tox)
Downloading https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
Collecting zipp>=0.5 (from importlib-metadata>=0.12; python_version < "3.8"->tox)
Downloading https://files.pythonhosted.org/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
Collecting pyparsing!=3.0.5,>=2.0.2 (from packaging>=14->tox)
Downloading https://files.pythonhosted.org/packages/39/92/8486ede85fcc088f1b3dba4ce92dd29d126fd96b0008ea213167940a2475/pyparsing-3.1.1-py3-none-any.whl (103kB)
100% |████████████████████████████████| 112kB 10.0MB/s
Collecting click (from geomet<0.3,>=0.1->cassandra-driver->cqlsh)
Downloading https://files.pythonhosted.org/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
100% |████████████████████████████████| 102kB 8.5MB/s
Installing collected packages: typing-extensions, zipp, importlib-metadata, click, geomet, cassandra-driver, cqlsh, distlib, filelock, platformdirs, importlib-resources, virtualenv, pluggy, pyparsing, packaging, py, toml, tox
Running setup.py install for cassandra-driver ... done
Successfully installed cassandra-driver-3.28.0 click-8.0.4 cqlsh-6.1.2 distlib-0.3.7 filelock-3.4.1 geomet-0.2.1.post1 importlib-metadata-4.8.3 importlib-resources-5.4.0 packaging-21.3 platformdirs-2.4.0 pluggy-1.0.0 py-1.11.0 pyparsing-3.1.1 toml-0.10.2 tox-3.28.0 typing-extensions-4.1.1 virtualenv-20.17.1 zipp-3.6.0
确认 Java 和 cqlsh 的安装。
$ java -version
openjdk version "11.0.18-ea" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS, mixed mode, sharing)
$ cqlsh --version
cqlsh 6.1.0
步骤 2:在 CentOS 8 上安装 Apache Cassandra |洛基 Linux 8
现在 Java 和 Python 已安装。现在让我们将 Cassandra 存储库添加到我们的 CentOS/Rocky 系统中。有关配置存储库的更多详细信息,请参阅官方文档页面。
sudo tee /etc/yum.repos.d/cassandra.repo<<EOF
[cassandra]
name=Apache Cassandra
baseurl=https://redhat.cassandra.apache.org/41x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF
使用以下命令安装 Apache Cassandra。
sudo yum -y install cassandra
要确认已安装的 cassandra 软件包的版本,请使用:
$ rpm -qi cassandra
Name : cassandra
Version : 4.1.3
Release : 1
Architecture: noarch
Install Date: Wed 16 Aug 2023 02:16:33 AM UTC
Group : Development/Libraries
Size : 58896904
License : Apache Software License 2.0
Signature : RSA/SHA512, Tue 18 Jul 2023 08:18:51 PM UTC, Key ID 32f35cb2f546d93e
Source RPM : cassandra-4.1.3-1.src.rpm
Build Date : Tue 18 Jul 2023 08:18:30 PM UTC
Build Host : 9bc3d3817a9e
Relocations : (not relocatable)
URL : http://cassandra.apache.org/
....
创建 Cassandra 服务。
sudo tee /etc/systemd/system/cassandra.service<<EOF
[Unit]
Description=Apache Cassandra
After=network.target
[Service]
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
Restart=always
[Install]
WantedBy=multi-user.target
EOF
启动并启用服务以在引导时启动。
sudo systemctl daemon-reload
sudo systemctl start cassandra.service
sudo systemctl enable cassandra
检查服务状态:
$ systemctl status cassandra.service
● cassandra.service - Apache Cassandra
Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-08-16 01:48:30 UTC; 30s ago
Main PID: 6371 (java)
Tasks: 16 (limit: 10843)
Memory: 1.0G
CGroup: /system.slice/cassandra.service
└─6371 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+>
Aug 16 01:48:45 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:45,049 YamlConfigurationLoader.java:102 - Configuration location: file:/etc/cassandra/default.conf/cassandra.yaml
Aug 16 01:48:49 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:49,810 YamlConfigurationLoader.java:422 - [key_cache_save_period, counter_cache_save_period, row_cache_save_period] par>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:49,986 Config.java:1163 - Node configuration:[allocate_tokens_for_keyspace=null; allocate_tokens_for_local_replication_>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,015 DatabaseDescriptor.java:467 - DiskAccessMode 'auto' determined to be mmap, indexAccessMode is mmap
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,017 DatabaseDescriptor.java:521 - Global memtable on-heap threshold is enabled at 214MiB
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,018 DatabaseDescriptor.java:525 - Global memtable off-heap threshold is enabled at 214MiB
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,044 DatabaseDescriptor.java:592 - Native transport rate-limiting disabled.
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:50,294 DatabaseDescriptor.java:990 - Small commitlog volume detected at '/var/lib/cassandra/commitlog'; setting commitl>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:50,315 DatabaseDescriptor.java:657 - Only 15.499GiB free across all data volumes. Consider adding more capacity to your>
Aug 16 01:48:57 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:57,981 YamlConfigurationLoader.java:422 - [key_cache_save_period, counter_cache_save_period, row_cache_save_period] par>
...
您还可以在几分钟后使用以下命令验证 Cassandra 是否正在运行。
$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 70 KiB 256 100.0% 0daf41fa-22e5-4471-bc00-9aed6f566235 rack1
要针对 Cassandra 运行查询,请使用以下命令调用 CQL shell。
$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.1.0 | Cassandra 4.1.3 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
- 配置文件的默认位置是/etc/cassandra。
- 日志和数据目录的默认位置是 /var/log/cassandra/ 和 /var/lib/cassandra。
步骤 3:在 CentOS 8 上配置 Cassandra |洛基 Linux 8
对于在单个节点上运行 Cassandra,默认配置文件位于 /etc/cassandra/conf/cassandra.yaml。对于节点集群设置,您可能需要修改此文件以确保正确调整集群。
至少你
- cluster_name:集群的名称。
- 种子:集群种子的 IP 地址的逗号分隔列表。
- storage_port:您不一定需要更改此端口,但请确保没有防火墙阻止此端口。
- listen_address:您节点的 IP 地址,这是允许其他节点与该节点通信的地址,因此更改它很重要。
- native_transport_port:对于 storage_port,请确保此端口未被防火墙阻止,因为客户端将在此端口上与 Cassandra 通信。
更改目录的位置
配置yaml文件控制以下数据目录。
- data_file_directories:数据文件所在的一个或多个目录。
- commitlog_directory:提交日志文件所在的目录。
- saved_caches_directory:已保存缓存所在的目录。
- hints_directory:提示所在目录。
出于性能原因,如果您有多个磁盘,请考虑将提交日志和数据文件放在不同的磁盘上。
设置环境变量
JVM 级别设置(例如堆大小)在 cassandra-env.sh 中设置。考虑将任何其他 JVM 命令行参数添加到 JVM_OPTS 环境变量中。这些参数在 Cassandra 服务启动时传递给它。
卡桑德拉日志记录
使用的记录器是logback。您可以通过编辑 logback.xml 来更改日志记录属性。默认情况下,它将在 INFO 级别记录到名为 system.log 的文件中,并在调试级别记录到名为 debug.log 的文件中。当在前台运行时,它也会以 INFO 级别记录到控制台。
客户端配置请参考官方指南。