【大数据环境安装指南】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
相关推荐
翼龙云_cloud10 小时前
阿里云渠道商:阿里云自动扩缩容配置教程
运维·服务器·阿里云·云计算
做cv的小昊10 小时前
【TJU】信息检索与分析课程笔记和练习(6)英文数据库检索—web of science
大数据·数据库·笔记·学习·全文检索
五度易链-区域产业数字化管理平台10 小时前
基于产业大数据的产业园区精准招商解决方案:五度易链的全流程技术赋能逻辑
大数据
方渐鸿10 小时前
【2026】记录一次大数据请求时页面整体优化过程
大数据
别多香了10 小时前
系统批量运维管理器 paramiko
linux·运维·服务器
习惯就好zz10 小时前
在 Ubuntu 18.04 旧系统上部署新版 GitHub Actions Runner 的终极方案
linux·ubuntu·github·cicd·action
杨云龙UP10 小时前
Linux LVM 在线扩容标准操作流程_20260102
linux·运维·服务器·centos·ux
微凉的衣柜11 小时前
Windows Server 使用 Nginx 反向代理实现域名访问内网 Gradio 应用
运维·windows·nginx
warton8811 小时前
ubuntu24.04 安装mysql8.0.36
linux·运维·mysql
运维有小邓@11 小时前
如何实现基于角色的访问控制?
运维·网络