从离线安装到 Cassandra 与 HBase 集群
目 录
一、导读与节点规划
二、Cassandra 集群部署
2.1 依赖与解压
2.2 配置 cassandra.yaml
2.3 启动与验证
三、HBase 集群部署
3.1 依赖:HDFS + ZooKeeper
3.2 配置 hbase-site.xml
3.3 声明 RegionServer 与备 Master
3.4 启动与验证
四、一键部署脚本骨架
五、本篇小结
一、导读与节点规划
前两讲明确了架构与原理,本讲在内网环境从零落地。以 3 台虚机(cf01 / 02 / 03)为例,先部署 Cassandra 对等集群;再在同一批节点上搭 HBase(依赖 HDFS 与 ZooKeeper)。所有命令均可复制直接执行。
节点 | IP | Cassandra 角色 | HBase 角色 |
cf01 | 10.10.10.71 | 对等节点 + 种子 | HMaster + RegionServer + ZK |
cf02 | 10.10.10.72 | 对等节点 + 种子 | Backup Master + RegionServer + ZK |
cf03 | 10.10.10.73 | 对等节点 | RegionServer + ZK |
说明:Cassandra 无主节点,全部对等;HBase 需 ZooKeeper 协调,示例用 HBase 自带的 ZooKeeper 快速起步,生产建议独立 ZooKeeper 集群。示例 IP 可替换为实际内网环境。
二、Cassandra 集群部署
2.1 依赖与解压
Cassandra 由 Java 编写,需 JDK 8+。先把二进制包放入内网源,再分发到各节点解压:
yum install -y java-1.8.0-openjdk |
tar -zxvf apache-cassandra-4.1-bin.tar.gz -C /usr/local/ |
mv /usr/local/apache-cassandra-4.1 /usr/local/cassandra |
mkdir -p /var/lib/cassandra && useradd -r -M cassandra |
chown -R cassandra:cassandra /usr/local/cassandra /var/lib/cassandra |
2.2 配置 cassandra.yaml
编辑 conf/cassandra.yaml,三个节点统一 cluster_name,seeds 指向种子节点,listen_address / rpc_address 填本机 IP:
cluster_name: "cf-cluster" |
seed_provider: |
- class_name: org.apache.cassandra.locator.SimpleSeedProvider |
parameters: |
- seeds: "10.10.10.71,10.10.10.72" |
listen_address: 10.10.10.71 # 每节点填各自 IP |
rpc_address: 10.10.10.71 |
endpoint_snitch: GossipingPropertyFileSnitch |
native_transport_port: 9042 |
2.3 启动与验证
cd /usr/local/cassandra && bin/cassandra -f & |
# 或 bin/cassandra 后台运行;观察 logs/system.log |
bin/nodetool status |
# 期望输出三行均为 UN(Up + Normal),数据中心 / 机架正确 |
nodetool status 中 UN 表示节点正常;任一节点显示 DN 说明该节点不可达。此时集群已具备写入能力。
三、HBase 集群部署
3.1 依赖:HDFS + ZooKeeper
HBase 数据存于 HDFS、协调依赖 ZooKeeper。内网环境需先就绪 HDFS(可伪分布式或独立集群)与 ZooKeeper,再部署 HBase:
tar -zxvf hbase-2.6-bin.tar.gz -C /usr/local/ |
mv /usr/local/hbase-2.6 /usr/local/hbase |
echo "export JAVA_HOME=/usr/local/java" >> /usr/local/hbase/conf/hbase-env.sh |
3.2 配置 hbase-site.xml
核心配置 hbase.rootdir 指向 HDFS、hbase.zookeeper.quorum 指向 ZooKeeper:
<property><name>hbase.rootdir</name> |
<value>hdfs://cf01:9000/hbase</value></property> |
<property><name>hbase.cluster.distributed</name><value>true</value></property> |
<property><name>hbase.zookeeper.quorum</name> |
<value>cf01,cf02,cf03</value></property> |
<property><name>zookeeper.session.timeout</name><value>60000</value></property> |
3.3 声明 RegionServer 与备 Master
conf/regionservers 列出所有 RegionServer;conf/backup-masters 声明备用 HMaster 实现高可用:
# conf/regionservers |
cf01 |
cf02 |
cf03 |
# conf/backup-masters |
cf02 |
3.4 启动与验证
bin/start-hbase.sh |
jps # 主节点应有 HMaster,各节点有 HRegionServer |
bin/hbase shell |
> status # 确认 1 个 active master、3 个 regionserver |
> create "test", "cf" # 建表验证读写 |
四、一键部署脚本骨架
以下脚本按主机名自动识别角色:cf01 / cf02 兼作 Cassandra 种子,cf01 为主 HMaster,cf02 为备 HMaster,三节点均作 RegionServer。生产可据此扩展为无交互一键部署。
#!/bin/bash |
# cf-deploy.sh —— 按 hostname 识别 Cassandra 种子与 HBase 角色 |
SELF=$(hostname) |
SEEDS="10.10.10.71,10.10.10.72" |
IP=$(grep -F "$SELF" /etc/hosts | awk "{print $1}") |
# Cassandra:写统一集群名与种子 |
sed -i "s/^cluster_name:.*/cluster_name: \"cf-cluster\"/" \ |
/usr/local/cassandra/conf/cassandra.yaml |
sed -i "s/seeds:.*/seeds: \"$SEEDS\"/" \ |
/usr/local/cassandra/conf/cassandra.yaml |
sed -i "s/^listen_address:.*/listen_address: $IP/" \ |
/usr/local/cassandra/conf/cassandra.yaml |
su -s /bin/bash cassandra -c "/usr/local/cassandra/bin/cassandra" |
# HBase:cf01 主,cf02 备,其余 RegionServer |
echo "cf01" > /usr/local/hbase/conf/backup-masters || true |
echo -e "cf01\ncf02\ncf03" > /usr/local/hbase/conf/regionservers |
case "$SELF" in |
cf01) /usr/local/hbase/bin/start-hbase.sh ;; |
*) /usr/local/hbase/bin/hbase-daemon.sh start regionserver ;; |
esac |
脚本仅演示核心逻辑,生产环境还需补充 systemd 托管、日志轮转、防火墙、数据目录授权与 Cassandra 认证配置。
五、本篇小结
本讲完成了列族数据库两大代表的内网落地:Cassandra 通过 seeds + 统一集群名构建无中心集群,nodetool status 验证;HBase 依赖 HDFS 与 ZooKeeper,通过 hbase-site.xml、regionservers、backup-masters 搭建主从集群。