HBase安装与配置 #

一、环境准备 #

1.1 系统要求 #

组件 版本要求
Java JDK 8 或 JDK 11
Hadoop 2.7.x 或 3.x
ZooKeeper 3.4.x 或 3.5.x
操作系统 Linux (推荐CentOS/Ubuntu)

1.2 环境检查 #

bash
# 检查Java版本
java -version

# 检查Hadoop
hadoop version

# 检查SSH(伪分布式需要)
ssh localhost

1.3 环境变量配置 #

bash
# 编辑 ~/.bashrc 或 /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
export HADOOP_HOME=/opt/hadoop
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HADOOP_HOME/bin:$HBASE_HOME/bin

# 生效配置
source ~/.bashrc

二、单机模式安装 #

单机模式适合学习和开发测试,不依赖Hadoop集群。

2.1 下载解压 #

bash
# 下载HBase
wget https://archive.apache.org/dist/hbase/2.4.11/hbase-2.4.11-bin.tar.gz

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

# 创建软链接
ln -s /opt/hbase-2.4.11 /opt/hbase

2.2 配置文件 #

编辑 conf/hbase-site.xml

xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>file:///opt/hbase/data</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/hbase/zookeeper</value>
    </property>
</configuration>

2.3 配置Java环境 #

编辑 conf/hbase-env.sh

bash
# 设置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk

# 使用内置ZooKeeper
export HBASE_MANAGES_ZK=true

2.4 启动与验证 #

bash
# 启动HBase
start-hbase.sh

# 验证进程
jps
# 应该看到: HMaster

# 进入Shell
hbase shell

# 停止HBase
stop-hbase.sh

三、伪分布式模式 #

伪分布式模式下,所有进程运行在单台机器上,但模拟分布式环境。

3.1 前置条件 #

bash
# 确保HDFS已启动
start-dfs.sh

# 验证HDFS
hdfs dfs -ls /

3.2 配置文件 #

编辑 conf/hbase-site.xml

xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/hbase/zookeeper</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3.3 配置regionservers #

编辑 conf/regionservers

text
localhost

3.4 启动与验证 #

bash
# 启动HBase
start-hbase.sh

# 验证进程
jps
# 应该看到: HMaster, HRegionServer, HQuorumPeer

# 访问Web UI
# http://localhost:16010

四、完全分布式模式 #

完全分布式模式用于生产环境,需要多台机器。

4.1 集群规划 #

text
┌─────────────────────────────────────────────────────────┐
│                    集群规划示例                          │
├─────────────┬─────────────┬─────────────┬───────────────┤
│   节点      │   Master    │RegionServer │  ZooKeeper    │
├─────────────┼─────────────┼─────────────┼───────────────┤
│  node1      │     ✓       │             │      ✓        │
│  node2      │   backup    │      ✓      │      ✓        │
│  node3      │             │      ✓      │      ✓        │
│  node4      │             │      ✓      │               │
│  node5      │             │      ✓      │               │
└─────────────┴─────────────┴─────────────┴───────────────┘

4.2 配置文件 #

编辑 conf/hbase-site.xml

xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <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>node1,node2,node3</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/data/zookeeper</value>
    </property>
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>
    <property>
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
    <property>
        <name>hbase.regionserver.port</name>
        <value>16020</value>
    </property>
    <property>
        <name>hbase.regionserver.info.port</name>
        <value>16030</value>
    </property>
</configuration>

4.3 配置regionservers #

编辑 conf/regionservers

text
node2
node3
node4
node5

4.4 配置backup-masters #

编辑 conf/backup-masters

text
node2

4.5 配置hbase-env.sh #

bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk

# 使用外部ZooKeeper
export HBASE_MANAGES_ZK=false

# 内存配置
export HBASE_MASTER_OPTS="-Xmx4g"
export HBASE_REGIONSERVER_OPTS="-Xmx8g"

4.6 分发配置 #

bash
# 同步到所有节点
scp -r /opt/hbase/conf/* node2:/opt/hbase/conf/
scp -r /opt/hbase/conf/* node3:/opt/hbase/conf/
scp -r /opt/hbase/conf/* node4:/opt/hbase/conf/
scp -r /opt/hbase/conf/* node5:/opt/hbase/conf/

4.7 启动集群 #

bash
# 在Master节点启动
start-hbase.sh

# 验证集群状态
hbase shell
hbase(main):001:0> status

五、Docker部署 #

5.1 单节点Docker部署 #

bash
# 拉取镜像
docker pull harisekhon/hbase

# 启动容器
docker run -d -h hbase \
    -p 16010:16010 \
    -p 16020:16020 \
    -p 16030:16030 \
    --name hbase \
    harisekhon/hbase

# 进入容器
docker exec -it hbase bash

5.2 Docker Compose部署 #

创建 docker-compose.yml

yaml
version: '3'
services:
  hbase:
    image: harisekhon/hbase
    container_name: hbase
    hostname: hbase
    ports:
      - "16010:16010"
      - "16020:16020"
      - "16030:16030"
      - "2888:2888"
      - "3888:3888"
    environment:
      - HBASE_CONF_hbase_rootdir=hdfs://namenode:8020/hbase
    volumes:
      - ./data:/data
bash
# 启动
docker-compose up -d

# 停止
docker-compose down

六、配置参数详解 #

6.1 核心配置 #

参数 默认值 说明
hbase.rootdir /tmp/hbase-$ 数据存储目录
hbase.cluster.distributed false 是否分布式模式
hbase.zookeeper.quorum localhost ZooKeeper集群地址
hbase.zookeeper.property.clientPort 2181 ZooKeeper端口
hbase.master.port 16000 Master RPC端口
hbase.regionserver.port 16020 RegionServer RPC端口

6.2 性能配置 #

参数 默认值 说明
hbase.regionserver.handler.count 30 RPC处理线程数
hbase.hregion.memstore.flush.size 128MB MemStore刷新阈值
hbase.regionserver.global.memstore.size 0.4 MemStore占用堆内存比例
hfile.block.cache.size 0.4 读缓存占用堆内存比例
hbase.hstore.blockingStoreFiles 16 StoreFile数量阈值

6.3 安全配置 #

xml
<!-- 启用Kerberos认证 -->
<property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value>
</property>
<property>
    <name>hbase.security.authorization</name>
    <value>true</value>
</property>
<property>
    <name>hbase.master.kerberos.principal</name>
    <value>hbase/_HOST@YOUR.REALM</value>
</property>

七、验证安装 #

7.1 进程检查 #

bash
# 检查进程
jps

# 期望输出
HMaster          # Master进程
HRegionServer    # RegionServer进程
HQuorumPeer      # 内置ZooKeeper(如果使用)

7.2 Web UI检查 #

组件 地址
Master UI http://master:16010
RegionServer UI http://regionserver:16030

7.3 Shell测试 #

bash
# 进入Shell
hbase shell

# 创建测试表
create 'test', 'cf'

# 插入数据
put 'test', 'row1', 'cf:a', 'value1'

# 扫描表
scan 'test'

# 查看表结构
describe 'test'

# 删除表
disable 'test'
drop 'test'

八、常见问题 #

8.1 启动失败 #

bash
# 查看日志
tail -f /opt/hbase/logs/hbase-master.log
tail -f /opt/hbase/logs/hbase-regionserver.log

# 常见原因
1. Java环境未配置
2. HDFS未启动或不可访问
3. ZooKeeper连接失败
4. 端口被占用
5. 主机名解析问题

8.2 主机名问题 #

bash
# 编辑/etc/hosts
192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3

# 确保主机名解析正确
ping node1

8.3 时间同步 #

bash
# 安装NTP
yum install ntp -y

# 同步时间
ntpdate pool.ntp.org

# 或使用chrony
systemctl start chronyd

九、总结 #

本节介绍了HBase的三种部署模式:

模式 适用场景 特点
单机模式 学习开发 简单快速,不依赖Hadoop
伪分布式 测试验证 模拟分布式环境
完全分布式 生产环境 高可用、高性能

下一步,让我们学习HBase的基础语法!

最后更新:2026-03-27