【大数据环境安装指南】HBase单机环境搭建教程

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、前置条件(必做)
    • [1.1 安装 JDK 8](#1.1 安装 JDK 8)
    • [1.2 创建普通用户SSH配置免密登录](#1.2 创建普通用户SSH配置免密登录)
    • [1.3 关闭防火墙和 SELinux](#1.3 关闭防火墙和 SELinux)
  • [二、 安装并启动 Hadoop 单机版(核心!)](#二、 安装并启动 Hadoop 单机版(核心!))
  • [三、 安装并启动 ZooKeeper(单机模式需先启动 ZK)](#三、 安装并启动 ZooKeeper(单机模式需先启动 ZK))
  • 四、安装部署HBase
    • [4.1 下载并解压 HBase](#4.1 下载并解压 HBase)
    • [4.2 配置 HBase 核心文件](#4.2 配置 HBase 核心文件)
  • [五、启动并验证 HBase 单机环境](#五、启动并验证 HBase 单机环境)
    • [5.1 启动 HBase](#5.1 启动 HBase)
    • [5.2 进入 HBase Shell 验证](#5.2 进入 HBase Shell 验证)
    • [5.3 验证数据存储在 HDFS](#5.3 验证数据存储在 HDFS)
  • [六、停止 HBase 及相关服务](#六、停止 HBase 及相关服务)

前言

操作系统环境 :Centos 7、Rocky 9 、Kylin V11
hadoop版本 :3.3.6
JDK版本 :8
Hbase版本 :2.5.13
Zookeeper版本:3.8.4

  • Apache HBase 是一款分布式、可扩展、面向列存储的 NoSQL 数据库,构建在 Hadoop HDFS 之上,专为海量结构化 / 半结构化数据的随机、实时读写场景设计(比如 PB 级数据的毫秒级查询)。它的核心设计目标是 "大数据量 + 高并发 + 实时性",常被用于日志存储、用户画像、时序数据、物联网数据等场景。
  • Apache HBase 深度依赖 Hadoop 生态,其中核心依赖的是 HDFS 和 YARN(可选),同时需要 ZooKeeper 协同工作(ZooKeeper 属于 Hadoop 生态组件但独立部署)。

1. 核心依赖:HDFS(必须)

HBase 本身不提供底层数据存储能力,所有的持久化数据(HFile、WAL 预写日志)都存储在 HDFS 上,依赖 HDFS 实现以下核心能力:

  • 分布式存储:HBase 的 Region 数据分散存储在 HDFS 的多个 DataNode 上,实现 PB 级数据的横向扩展;
  • 数据容错:HDFS 自带多副本机制(默认 3 副本),HBase 无需额外处理数据备份,节点故障时自动从副本恢复;
  • 高吞吐量:HDFS 针对大文件的顺序读写优化,匹配 HBase 的 LSM-Tree 存储模型,提升数据刷盘和合并效率。
  • ❌ 没有 HDFS,HBase 无法独立运行(早期有单机模式基于本地文件系统,但仅用于开发测试,不支持生产环境)。

2.协同依赖:ZooKeeper(必须,属于 Hadoop 生态)

ZooKeeper 虽不是 Hadoop 核心子项目,但属于 Hadoop 生态的标配组件,HBase 依赖它实现:

  • 集群元数据管理:存储 HMaster 地址、Region 位置信息、表结构元数据;
  • 主备选举:实现 HMaster 的高可用(Active/Standby 切换);
  • 节点状态监控:监控 RegionServer 的心跳,检测节点故障并触发容错机制。

3.核心版本兼容性

HBase 版本 兼容的 Hadoop 版本 兼容的 ZooKeeper 版本 兼容的 JDK 版本
HBase 2.4.x(稳定版) Hadoop 2.7.x ~ 3.3.x ZooKeeper 3.4.x ~ 3.8.x JDK 8(推荐)、JDK 11(实验性)
HBase 2.5.x Hadoop 3.1.x ~ 3.4.x ZooKeeper 3.5.x ~ 3.9.x JDK 8、JDK 11(正式支持)
HBase 3.0.x(预览版) Hadoop 3.3.x+ ZooKeeper 3.7.x+ JDK 11(推荐)、JDK 17(实验性)
HBase 1.7.x(旧版) Hadoop 2.6.x ~ 3.1.x ZooKeeper 3.4.x ~ 3.6.x JDK 8(仅支持)

一、前置条件(必做)

1.1 安装 JDK 8

HBase 2.x 推荐 JDK 8,JDK 11 需额外适配

bash 复制代码
# 验证 JDK 版本
java -version
# 输出 1.8.x 即为符合要求

JDK详细安装教程可以参考:【大数据环境安装指南】 JDK安装

1.2 创建普通用户SSH配置免密登录

Hadoop 组件之间需要基于 SSH 进行通讯。

  1. 创建普通用户
    Hadoop 官方不建议用 root 运行集群(安全风险 + 权限混乱),核心思路是创建专属普通用户(如 hadoop),并赋予相关目录权限,全程以该用户操作。
bash 复制代码
useradd -m hadoop
passwd hadoop  # 设置密码
  1. 赋予hadoop用户sudo权限(可选,方便后续操作)
bash 复制代码
echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
  1. 配置映射
    通过root账号配置 ip 地址和主机名映射:
bash 复制代码
vim /etc/hosts
# 文件末尾增加
192.168.3.127  node1
  1. SSH配置免密登录
bash 复制代码
# 生成 RSA 密钥(一路回车,不设置密码)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

# 将公钥添加到本地授权列表(核心!)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 设置权限(SSH 对权限要求严格,必须改)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown $USER:$USER ~/.ssh -R  # 确保所属用户正确
  1. 验证登录
bash 复制代码
# 测试本地 SSH 登录
ssh localhost

# 若提示输入密码,输入当前用户密码即可登录(成功则无报错)

1.3 关闭防火墙和 SELinux

bash 复制代码
# 临时关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 关闭SELinux
sudo setenforce 0  # 临时
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 永久

二、 安装并启动 Hadoop 单机版(核心!)

HBase 依赖 HDFS 存储数据,需先搭建 Hadoop 单机环境:

  1. 下载 Hadoop 3.3.6(与 HBase 2.5.x 兼容)
bash 复制代码
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
  1. 解压hadoop
bash 复制代码
tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/app/
ln -s /usr/local/app/hadoop-3.3.6 /usr/local/app/hadoop
  1. 配置 Hadoop 环境变量
bash 复制代码
echo "export HADOOP_HOME=/usr/local/app/hadoop" >> /etc/profile
echo "export PATH=\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin:\$PATH" >> /etc/profile
source /etc/profile
  1. 配置 Hadoop 专属 JAVA_HOME(核心!)
bash 复制代码
# 进入 Hadoop 配置目录(替换为你的 Hadoop 安装路径)
cd /usr/local/app/hadoop/etc/hadoop

# 编辑 hadoop-env.sh 文件
sudo vim hadoop-env.sh

# 找到以下注释行,删除注释并修改为你的 JDK 路径(重点!):
export JAVA_HOME=/usr/local/jdk1.8.0_471/

# (可选)如果是集群环境,确保所有节点的 hadoop-env.sh 都配置了相同的 JAVA_HOME
  1. 修改 Hadoop 核心配置(单机模式),编辑 core-site.xml
bash 复制代码
vim /usr/local/app/hadoop/etc/hadoop/core-site.xml

添加以下配置:

yaml 复制代码
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/app/hadoop/tmp</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
  1. 格式化 HDFS(仅首次执行)
bash 复制代码
hdfs namenode -format
  1. 启动 HDFS
bash 复制代码
cd /usr/local/app/hadoop/sbin
./start-dfs.sh
  1. 验证 HDFS 启动(jps 看到 NameNode、DataNode、SecondaryNameNode)

三、 安装并启动 ZooKeeper(单机模式需先启动 ZK)

  1. 下载并解压 ZK(若未安装)
bash 复制代码
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/local/app/
ln -s /usr/local/app/apache-zookeeper-3.8.4-bin /usr/local/app/zookeeper
  1. 配置 ZK
bash 复制代码
cp /usr/local/app/zookeeper/conf/zoo_sample.cfg /usr/local/app/zookeeper/conf/zoo.cfg
  1. 启动 ZK
bash 复制代码
/usr/local/app/zookeeper/bin/zkServer.sh start
  1. 验证 ZK 启动(jps 看到 QuorumPeerMain)
bash 复制代码
jps

四、安装部署HBase

HBase官网地址https://hbase.apache.org/

4.1 下载并解压 HBase

  • 下载 HBase 2.5.13(与 Hadoop 3.3.x 兼容)
bash 复制代码
wget https://dlcdn.apache.org/hbase/2.5.13/hbase-2.5.13-hadoop3-bin.tar.gz
  • 解压到统一目录
bash 复制代码
tar -zxvf hbase-2.5.13-hadoop3-bin.tar.gz -C /usr/local/app/
  • 进行软链接
bash 复制代码
ln -s /usr/local/app/hbase-2.5.13-hadoop3 /usr/local/app/hbase
  • 创建数据临时目录
bash 复制代码
mkdir -p /usr/local/app/hbase/tmp

4.2 配置 HBase 核心文件

HBase 单机模式的核心配置文件为 hbase-env.sh 和 hbase-site.xml,均位于 $HBASE_HOME/conf 目录。

1、配置 hbase-env.sh(指定 JDK 和禁用内置 ZK)

bash 复制代码
vim /usr/local/app/hbase/conf/hbase-env.sh

添加 / 修改以下内容:

bash 复制代码
# 1. 指定 JDK 路径(替换为你的实际 JDK 路径)
export JAVA_HOME=/usr/local/jdk1.8.0_471/
# 2. 禁用 HBase 内置的 ZooKeeper(单机模式也可启用,这里用外置更贴近生产)
export HBASE_MANAGES_ZK=false
# 3. 指定 Hadoop 配置目录(避免依赖冲突)
export HBASE_CLASSPATH=/usr/local/app/hadoop/etc/hadoop

2、配置 hbase-site.xml(核心!指定 HDFS 存储和 ZK 地址)

bash 复制代码
vim /usr/local/app/hbase/conf/hbase-site.xml

添加以下配置(单机模式核心配置):

yaml 复制代码
<configuration>
    <!-- 1. 指定 ZK 端口(若独立 ZK 用 2181,填 2181;若被迫用 2182,填 2182) -->
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>  <!-- 与独立 ZK 的端口一致! -->
    </property>
    <!-- 2. HBase 根目录(存储在 HDFS 上) -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
    </property>
    <!-- 3. 运行模式:单机模式(true 为分布式,false 为单机) -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- 4. 临时文件目录 -->
    <property>
        <name>hbase.tmp.dir</name>
        <value>/usr/local/app/hbase/tmp</value>
    </property>
    <!-- 5. ZooKeeper 地址(单机模式用本地 ZK,需先启动) -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
    </property>
    <!-- 6. ZooKeeper 数据目录 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/usr/local/app/hbase/tmp/zookeeper</value>
    </property>
    <!-- 7. 关闭 HBase 权限检查(单机测试用) -->
    <property>
        <name>hbase.security.authorization</name>
        <value>false</value>
    </property>
</configuration>

3、配置环境变量(可选,方便操作)

bash 复制代码
echo "export HBASE_HOME=/usr/local/app/hbase" >> /etc/profile
echo "export PATH=\$HBASE_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile

五、启动并验证 HBase 单机环境

5.1 启动 HBase

bash 复制代码
# 启动 HBase(单机模式仅启动 HMaster 进程)
/usr/local/app/hbase/bin/start-hbase.sh
# 验证启动(jps 看到 HMaster 进程)
jps
# 正常输出:NameNode、DataNode、SecondaryNameNode、QuorumPeerMain、HMaster

5.2 进入 HBase Shell 验证

bash 复制代码
# 进入 HBase 命令行
hbase shell
# 1. 查看集群状态
status
# 正常输出:1 active master, 0 backup masters, 0 servers, 0 dead servers, 0.0000 average load
# 2. 创建测试表(列族为 info)
create 'user_table', 'info'
# 3. 插入数据(RowKey=1001,列 info:name=张三,info:age=25)
put 'user_table', '1001', 'info:name', '张三'
put 'user_table', '1001', 'info:age', '25'
# 4. 查询数据
get 'user_table', '1001'
# 正常输出:
# COLUMN      CELL
# info:age    timestamp=xxxx, value=25
# info:name   timestamp=xxxx, value=张三
# 5. 查看所有表
list
# 6. 退出 Shell
quit

5.3 验证数据存储在 HDFS

bash 复制代码
# 查看 HDFS 上的 HBase 目录
hdfs dfs -ls /hbase
# 正常输出:drwxr-xr-x   - root supergroup          0 2025-12-31 15:00 /hbase/data

六、停止 HBase 及相关服务

bash 复制代码
# 1. 停止 HBase
/usr/local/app/hbase/bin/stop-hbase.sh
# 2. 停止 ZK
/usr/local/app/zookeeper/bin/zkServer.sh stop
# 3. 停止 HDFS
stop-dfs.sh
相关推荐
oradh18 分钟前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
生活爱好者!1 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
品牌全球行1 小时前
共商共建共享 链接数字未来——“一带一路数字新城(深圳)会客厅筹备办”揭牌仪式在深圳隆重举行
大数据·人工智能
z123456789861 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD1 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
groundhappy2 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
尽兴-2 小时前
企业业务系统架构选型与渐进式演进
运维·系统架构·devops
TlSfoward2 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记2 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
通信小小昕3 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu