直接用 apt 安装最省事,但必须确认是 debian/ubuntu 系统且能连外网;否则 tarball 方式更可控,适合生产环境。java 版本需 ≥ 8(推荐 11 或 17),须安装 openjdk-11-jdk 而非仅 jre,cqlsh 依赖 python 3.6+,启动前需检查 ulimit 和磁盘权限。

直接用 apt 安装最省事,但必须确认你用的是 Debian/Ubuntu 系统且能连外网;否则二进制包(tarball)方式更可控,也更适合生产环境隔离部署。
Java 版本必须 ≥ 8,且不能是 JRE
Cassandra 4.x 起已彻底放弃对 Java 7 的支持,java -version 输出里必须含 1.8.、11 或 17。常见坑:
- 系统自带的
openjdk-11-jre只含运行时,缺javac和部分 JVM 工具,cassandra启动会报NoClassDefFoundError - Ubuntu 22.04 默认装的是
openjdk-11-jre-headless,得手动补全:sudo apt install openjdk-11-jdk - CentOS/RHEL 8+ 推荐用
java-11-openjdk-devel,不是java-11-openjdk
用 apt 安装:适合开发或快速验证
只适用于 Debian/Ubuntu,且需注意仓库地址已更新。老教程里的 311x 或 40x 已失效,当前稳定版是 4.1.x:
- 先加源:
echo "deb https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list - 导入密钥:
curl -fsSL https://downloads.apache.org/cassandra/KEYS | sudo gpg --dearmor -o /usr/share/keyrings/cassandra-archive-keyring.gpg(新版 apt 要求 keyring 格式) - 更新并安装:
sudo apt update && sudo apt install cassandra - 服务默认开机自启,但首次启动后建议等 10 秒再执行
nodetool status,否则可能报Connection refused
用 tarball 安装:推荐用于测试或生产环境
绕过包管理器,路径、用户、JVM 参数完全自主控制,避免系统级冲突:
- 下载最新二进制包,例如:
wget https://downloads.apache.org/cassandra/4.1.3/apache-cassandra-4.1.3-bin.tar.gz - 解压到非 root 目录(如
/opt/cassandra),然后chown -R cassandra:cassandra /opt/cassandra - 切到
cassandra用户下运行:su - cassandra -c "/opt/cassandra/bin/cassandra -f"(前台模式便于看日志) -
cassandra.yaml中必须显式设listen_address和rpc_address,哪怕单机也别留localhost——IPv6 回环常导致cqlsh连不上 - 日志默认输出到
logs/system.log,启动卡住时优先tail -f logs/system.log,不是journalctl
cqlsh 连不上?八成是 Python 或地址配置问题
cqlsh 是 Python 脚本,依赖 Python 2.7 或 3.6+(Cassandra 4.1+ 要求 Python 3.6+):
- 检查
python3 --version,Ubuntu 22.04+ 默认是 3.10,没问题;CentOS 7 默认只有 Python 2.7,得装python3-pip并确保cqlsh脚本头行指向#!/usr/bin/env python3 -
cqlsh 127.0.0.1 9042显式指定地址端口,比不带参数更可靠 - 如果报
Connection timeout,确认cassandra.yaml中start_native_transport: true且native_transport_port: 9042没被注释
真正容易被忽略的是磁盘权限和 ulimit:Cassandra 启动时会尝试创建 data、commitlog 目录下的子目录,若父目录属主不是运行用户,或 ulimit -n 小于 32768,它会在日志里默默失败,只留一句 Failed to create directory ... Permission denied 或 Too many open files,不会中断启动流程。











