本文是大数据系列第 34 篇,记录在已有 Hadoop + ZooKeeper 集群基础上,完成 HBase 单节点安装与配置的完整步骤。
前置条件
本文基于以下已就绪的环境进行配置:
- 三台 2C4G 云服务器:
h121、h122、h123 - Hadoop 2.9.2 集群已正常运行(HDFS、YARN)
- ZooKeeper 3.x 三节点集群已运行
- 节点间 SSH 免密登录已配置
- JDK 8 已安装
下载与解压
在 h121 节点执行:
# 下载 HBase 1.3.1
wget https://archive.apache.org/dist/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
# 解压到统一安装目录
tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/servers
关联 Hadoop 配置
HBase 需要感知 HDFS 的配置,通过软链接或复制的方式引入 Hadoop 的配置文件:
# 软链接 core-site.xml(推荐,保持同步)
ln -s /opt/servers/hadoop-2.9.2/etc/hadoop/core-site.xml \
/opt/servers/hbase-1.3.1/conf/core-site.xml
# 复制 hdfs-site.xml
cp /opt/servers/hadoop-2.9.2/etc/hadoop/hdfs-site.xml \
/opt/servers/hbase-1.3.1/conf/hdfs-site.xml
核心配置文件
hbase-env.sh
# 指定 JDK 路径
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# 禁用 HBase 内置 ZooKeeper,使用外部独立 ZooKeeper 集群
export HBASE_MANAGES_ZK=FALSE
HBASE_MANAGES_ZK=FALSE 是关键配置:生产环境应始终使用独立的 ZooKeeper 集群,而非 HBase 自带的内置 ZooKeeper,以便统一管理和避免资源竞争。
hbase-site.xml
<configuration>
<!-- HBase 数据在 HDFS 上的存储路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://h121.wzk.icu:9000/hbase</value>
</property>
<!-- 启用分布式模式(区别于本地单机伪分布式) -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- ZooKeeper 集群地址,逗号分隔 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>h121.wzk.icu:2181,h122.wzk.icu:2181,h123.wzk.icu:2181</value>
</property>
</configuration>
参数说明:
| 参数 | 说明 |
|---|---|
hbase.rootdir | HBase 数据根目录,必须指向 HDFS 路径(不能是本地 file://) |
hbase.cluster.distributed | 设为 true 启用真正的分布式模式,false 为单机模式 |
hbase.zookeeper.quorum | ZooKeeper 集群地址,与 ZooKeeper 实际部署的节点保持一致 |
regionservers 文件
列出所有 HRegionServer 节点,每行一个主机名:
h121.wzk.icu
h122.wzk.icu
h123.wzk.icu
配置环境变量
在 /etc/profile 或 ~/.bashrc 中追加:
export HBASE_HOME=/opt/servers/hbase-1.3.1
export PATH=$PATH:$HBASE_HOME/bin
执行 source /etc/profile 使配置生效。
验证安装
# 检查 HBase 版本
hbase version
预期输出包含 HBase 1.3.1 字样即表示安装正确。
常见问题
HDFS 路径写入失败:检查 hbase.rootdir 的 HDFS NameNode 地址和端口与 core-site.xml 中的 fs.defaultFS 一致。
ZooKeeper 连接超时:确认 ZooKeeper 集群正在运行,且 hbase.zookeeper.quorum 中的主机名在各节点 /etc/hosts 中均有正确解析。
Java 版本不匹配:HBase 1.3.x 要求 JDK 7 或 8,JAVA_HOME 配置必须指向 JDK 8 路径。
小结
本节完成了 HBase 单节点配置:通过 hbase-env.sh 关联 JDK 并对接外部 ZooKeeper,通过 hbase-site.xml 指定 HDFS 存储路径和分布式模式。这是搭建 HBase 集群的基础,下一篇将介绍如何将此配置分发到多节点并启动完整集群。