本文是大数据系列第 34 篇,记录在已有 Hadoop + ZooKeeper 集群基础上,完成 HBase 单节点安装与配置的完整步骤。

完整图文版(含截图):CSDN 原文 | 掘金

前置条件

本文基于以下已就绪的环境进行配置:

  • 三台 2C4G 云服务器:h121h122h123
  • 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.rootdirHBase 数据根目录,必须指向 HDFS 路径(不能是本地 file://
hbase.cluster.distributed设为 true 启用真正的分布式模式,false 为单机模式
hbase.zookeeper.quorumZooKeeper 集群地址,与 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 集群的基础,下一篇将介绍如何将此配置分发到多节点并启动完整集群。