系列文章目录
- 第一章 【大数据环境安装指南】 JDK安装
- 第二章 【大数据环境安装指南】 Python安装
- 第三章 【大数据环境安装指南】VMware虚拟机静态IP及多IP配置
- 第四章 【大数据环境安装指南】zookeeper单机版环境搭建教程
- 第五章 【大数据环境安装指南】Hadoop单机版环境搭建教程
文章目录
- 系列文章目录
- 前言
- 一、前置条件(必做)
-
- [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 进行通讯。
- 创建普通用户
Hadoop 官方不建议用 root 运行集群(安全风险 + 权限混乱),核心思路是创建专属普通用户(如 hadoop),并赋予相关目录权限,全程以该用户操作。
bash
useradd -m hadoop
passwd hadoop # 设置密码
- 赋予hadoop用户sudo权限(可选,方便后续操作)
bash
echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
- 配置映射
通过root账号配置 ip 地址和主机名映射:
bash
vim /etc/hosts
# 文件末尾增加
192.168.3.127 node1
- 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 # 确保所属用户正确
- 验证登录
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 单机环境:
- 下载 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
- 解压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
- 配置 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
- 配置 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

- 修改 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>

- 格式化 HDFS(仅首次执行)
bash
hdfs namenode -format

- 启动 HDFS
bash
cd /usr/local/app/hadoop/sbin
./start-dfs.sh
- 验证 HDFS 启动(jps 看到 NameNode、DataNode、SecondaryNameNode)

三、 安装并启动 ZooKeeper(单机模式需先启动 ZK)
- 下载并解压 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
- 配置 ZK
bash
cp /usr/local/app/zookeeper/conf/zoo_sample.cfg /usr/local/app/zookeeper/conf/zoo.cfg
- 启动 ZK
bash
/usr/local/app/zookeeper/bin/zkServer.sh start
- 验证 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