HBase集群管理 #

一、集群规划 #

1.1 集群架构规划 #

text
┌─────────────────────────────────────────────────────────────────────┐
│                    HBase 集群架构规划                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                    ZooKeeper 集群                            │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐                     │   │
│  │  │  ZK 1   │  │  ZK 2   │  │  ZK 3   │                     │   │
│  │  └─────────┘  └─────────┘  └─────────┘                     │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                              │                                      │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                    HBase Master                              │   │
│  │  ┌─────────────┐  ┌─────────────┐                          │   │
│  │  │   Master    │  │   Backup    │                          │   │
│  │  │   (Active)  │  │   Master    │                          │   │
│  │  └─────────────┘  └─────────────┘                          │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                              │                                      │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                  RegionServer 集群                           │   │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐    │   │
│  │  │   RS 1   │  │   RS 2   │  │   RS 3   │  │   RS 4   │    │   │
│  │  └──────────┘  └──────────┘  └──────────┘  └──────────┘    │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                              │                                      │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                    HDFS 集群                                 │   │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐                  │   │
│  │  │   DN 1   │  │   DN 2   │  │   DN 3   │                  │   │
│  │  └──────────┘  └──────────┘  └──────────┘                  │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

1.2 节点规划 #

节点类型 数量 配置建议
ZooKeeper 3+ (奇数) 4核8GB
Master 2 8核16GB
RegionServer 3+ 16核64GB+
HDFS NameNode 2 8核16GB
HDFS DataNode 3+ 与RegionServer同节点

1.3 硬件配置建议 #

text
RegionServer配置建议
├── CPU
│   └── 16-32核
│
├── 内存
│   ├── 64-128GB
│   ├── MemStore: 40%
│   ├── BlockCache: 40%
│   └── 其他: 20%
│
├── 磁盘
│   ├── 12-24块磁盘
│   ├── 单盘1-4TB
│   └── JBOD模式
│
└── 网络
    └── 万兆网卡

二、容量规划 #

2.1 数据量估算 #

text
数据量估算公式
├── 原始数据量
│   └── 原始数据大小
│
├── HBase存储
│   └── 原始数据 × 1.5(索引、元数据开销)
│
├── 压缩后
│   └── HBase存储 / 压缩比
│
├── HDFS副本
│   └── 压缩后 × 3(默认3副本)
│
└── 总存储需求
    └── HDFS副本 × 1.2(预留20%)

2.2 RegionServer数量估算 #

text
RegionServer数量估算
├── 基于数据量
│   └── RS数量 = 总数据量 / 单RS存储量
│
├── 基于吞吐量
│   └── RS数量 = 总吞吐量 / 单RS吞吐量
│
└── 建议值
    └── 单RS存储10-20TB

2.3 Region数量估算 #

text
Region数量估算
├── 单个Region大小
│   └── 建议10-20GB
│
├── Region数量
│   └── 总数据量 / 单Region大小
│
└── 单RS Region数
    └── 建议100-200个

三、部署配置 #

3.1 核心配置 #

xml
<!-- hbase-site.xml -->

<!-- 基础配置 -->
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://mycluster/hbase</value>
</property>

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>zk1,zk2,zk3</value>
</property>

<!-- RegionServer配置 -->
<property>
    <name>hbase.regionserver.handler.count</name>
    <value>50</value>
</property>

<property>
    <name>hbase.regionserver.global.memstore.size</name>
    <value>0.4</value>
</property>

<property>
    <name>hfile.block.cache.size</name>
    <value>0.4</value>
</property>

<!-- Region配置 -->
<property>
    <name>hbase.hregion.max.filesize</name>
    <value>10737418240</value>  <!-- 10GB -->
</property>

<property>
    <name>hbase.hregion.memstore.flush.size</name>
    <value>134217728</value>  <!-- 128MB -->
</property>

3.2 内存配置 #

bash
# hbase-env.sh

# RegionServer内存
export HBASE_REGIONSERVER_OPTS="-Xmx32g -Xms32g -XX:NewSize=8g -XX:MaxNewSize=8g"

# Master内存
export HBASE_MASTER_OPTS="-Xmx4g -Xms4g"

# GC配置
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=50"

3.3 文件句柄配置 #

bash
# /etc/security/limits.conf
hdfs - nofile 65536
hbase - nofile 65536

# 验证
ulimit -n

四、集群部署 #

4.1 部署步骤 #

bash
# 1. 安装依赖
# - JDK 8/11
# - Hadoop
# - ZooKeeper

# 2. 解压安装
tar -zxvf hbase-2.4.11-bin.tar.gz -C /opt/

# 3. 配置环境变量
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin

# 4. 修改配置
vi $HBASE_HOME/conf/hbase-site.xml
vi $HBASE_HOME/conf/hbase-env.sh
vi $HBASE_HOME/conf/regionservers

# 5. 同步配置
scp -r $HBASE_HOME/conf/* node2:$HBASE_HOME/conf/
scp -r $HBASE_HOME/conf/* node3:$HBASE_HOME/conf/

# 6. 启动集群
start-hbase.sh

# 7. 验证
jps
# 应看到 HMaster, HRegionServer

4.2 regionservers配置 #

text
# conf/regionservers
node2
node3
node4
node5

4.3 backup-masters配置 #

text
# conf/backup-masters
node2

五、集群运维 #

5.1 启动停止 #

bash
# 启动集群
start-hbase.sh

# 停止集群
stop-hbase.sh

# 滚动重启
graceful_stop.sh --restart --reload node3

5.2 服务管理 #

bash
# 启动Master
hbase-daemon.sh start master

# 停止Master
hbase-daemon.sh stop master

# 启动RegionServer
hbase-daemon.sh start regionserver

# 停止RegionServer
hbase-daemon.sh stop regionserver

5.3 RegionServer上下线 #

ruby
# 下线RegionServer(优雅停止)
# 1. 停止负载均衡
balance_switch false

# 2. 移动Region
move 'region_encoded', 'target_server'

# 3. 停止RegionServer
hbase-daemon.sh stop regionserver

# 上线RegionServer
hbase-daemon.sh start regionserver

# 恢复负载均衡
balance_switch true

5.4 Region管理 #

ruby
# 查看Region分布
status 'detailed'

# 移动Region
move 'region_encoded', 'server_name'

# 切分Region
split 'table_name', 'split_key'

# 合并Region
merge_region 'region1', 'region2'

# 触发负载均衡
balancer

六、集群扩容 #

6.1 添加RegionServer #

bash
# 1. 安装HBase(新节点)
# 2. 配置环境
# 3. 更新regionservers文件
echo "new_node" >> $HBASE_HOME/conf/regionservers

# 4. 同步配置
scp -r $HBASE_HOME/conf/* new_node:$HBASE_HOME/conf/

# 5. 启动RegionServer
hbase-daemon.sh start regionserver

# 6. 验证
hbase shell
status 'simple'

6.2 添加Master #

bash
# 1. 安装HBase
# 2. 配置backup-masters
echo "new_master" >> $HBASE_HOME/conf/backup-masters

# 3. 启动Master
hbase-daemon.sh start master

# 4. 验证
jps

七、集群缩容 #

7.1 移除RegionServer #

bash
# 1. 停止负载均衡
echo "balance_switch false" | hbase shell

# 2. 优雅停止RegionServer
graceful_stop.sh node_to_remove

# 3. 从regionservers移除
vi $HBASE_HOME/conf/regionservers

# 4. 同步配置
# 5. 恢复负载均衡
echo "balance_switch true" | hbase shell

八、集群监控 #

8.1 Web UI #

text
Web UI地址
├── Master UI
│   └── http://master:16010
│
└── RegionServer UI
    └── http://regionserver:16030

8.2 关键指标 #

text
关键监控指标
├── Master
│   ├── Region分配状态
│   ├── 负载均衡状态
│   └── 请求队列长度
│
├── RegionServer
│   ├── 请求数/秒
│   ├── 内存使用率
│   ├── Compaction队列长度
│   ├── Flush队列长度
│   └── Region数量
│
└── HDFS
    ├── 磁盘使用率
    └── 数据块健康状态

8.3 JMX监控 #

bash
# 启用JMX
export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102"

九、故障处理 #

9.1 Master故障 #

bash
# Master故障恢复
# 1. Backup Master自动接管
# 2. 检查ZooKeeper状态
zkCli.sh
ls /hbase/master

# 3. 手动启动Master
hbase-daemon.sh start master

9.2 RegionServer故障 #

bash
# RegionServer故障恢复
# 1. Master检测到故障
# 2. Region重新分配
# 3. WAL重放恢复数据

# 检查日志
tail -f /opt/hbase/logs/hbase-hbase-regionserver-*.log

9.3 ZooKeeper故障 #

bash
# ZooKeeper故障
# 1. 检查ZooKeeper状态
zkServer.sh status

# 2. 重启ZooKeeper
zkServer.sh restart

十、总结 #

本节介绍了HBase集群管理:

内容 要点
集群规划 节点规划、硬件配置
容量规划 数据量、RegionServer数量
部署配置 核心配置、内存配置
集群运维 启动停止、Region管理
扩容缩容 添加/移除节点
监控 Web UI、JMX

下一步,让我们学习备份与恢复!

最后更新:2026-03-27