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