下面按 master 运行 HMaster、两个 worker 运行 HRegionServer,使用现有 ZooKeeper 集群和 HDFS 来安装。
选择 HBase 2.5.16 的 Hadoop 3 二进制包:官网将其标为稳定版,支持 Java 11;官方兼容表列出了该版本系列对 Hadoop 3.4 的支持。下载页面、兼容要求
| 机器 | HBase 服务 |
|---|---|
| master | HMaster,管理集群 |
| worker1 | HRegionServer,提供数据读写 |
| worker2 | HRegionServer,提供数据读写 |
全部使用普通用户 dyl 操作。
1. 确认 HDFS、ZooKeeper 已启动
在 master 执行:
hdfs dfsadmin -report
应显示 2 个 Live DataNode。如果 HDFS 尚未启动:
start-dfs.sh
在三台机器分别执行:
zkServer.sh status
应合计看到 1 个 leader、2 个 follower。未启动时,在对应机器执行:
zkServer.sh start
HBase 基本读写不需要启动 YARN。 如果当前没有计算任务,可以在 master 执行下面的命令节省内存:
stop-yarn.sh
2. 下载 HBase:只在 master 执行
mkdir -p ~/software
cd ~/software
wget -c https://downloads.apache.org/hbase/2.5.16/hbase-2.5.16-hadoop3-bin.tar.gz
wget https://downloads.apache.org/hbase/2.5.16/hbase-2.5.16-hadoop3-bin.tar.gz.sha512
注意必须是 hadoop3-bin,不要下载普通 bin 包或源码包。
检查校验值:
sha512sum hbase-2.5.16-hadoop3-bin.tar.gz
cat hbase-2.5.16-hadoop3-bin.tar.gz.sha512
两条输出的 SHA-512 值一致后继续。
使用 /home/dyl/hbase 作为安装目录,以下假设该目录尚未安装其他版本:
mkdir -p /home/dyl/hbase
tar -xzf hbase-2.5.16-hadoop3-bin.tar.gz \
-C /home/dyl/hbase --strip-components=1
确认目录结构:
ls /home/dyl/hbase
应包含 bin、conf、lib 等目录。
3. 配置运行环境:只在 master 执行
打开:
nano /home/dyl/hbase/conf/hbase-env.sh
在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HBASE_MANAGES_ZK=false
export HBASE_HEAPSIZE=1024
含义:
- 使用已经安装的 Java 11。
- 使用你现有的 ZooKeeper,不让 HBase 另外启动 ZooKeeper。
- 每个 HBase 服务的 Java 堆上限为 1 GB,用于小型学习实验,进程总内存会略高。
保存方式:Ctrl+O → 回车 → Ctrl+X。
4. 配置集群:只在 master 执行
打开:
nano /home/dyl/hbase/conf/hbase-site.xml
将文件内容替换为:
<?xml version="1.0"?>
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,worker1,worker2</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/dyl/hbase-tmp</value>
</property>
</configuration>
其中 hdfs://master:9000 对应你之前配置的 HDFS 地址;如果实际修改过端口,需要同步调整。
打开 RegionServer 列表:
nano /home/dyl/hbase/conf/regionservers
删除原来的 localhost,只保留:
worker1
worker2
将 Hadoop 的客户端配置复制给 HBase:
cp /home/dyl/hadoop-3.4.3/etc/hadoop/core-site.xml /home/dyl/hbase/conf/
cp /home/dyl/hadoop-3.4.3/etc/hadoop/hdfs-site.xml /home/dyl/hbase/conf/
不用把 Hadoop 的全部 JAR 复制到 HBase 的 lib 中;这里已经使用 Hadoop 3 专用安装包。
5. 分发到两个 worker:只在 master 执行
scp -r /home/dyl/hbase dyl@worker1:/home/dyl/
scp -r /home/dyl/hbase dyl@worker2:/home/dyl/
创建本地临时目录:
mkdir -p /home/dyl/hbase-tmp
ssh worker1 'mkdir -p /home/dyl/hbase-tmp'
ssh worker2 'mkdir -p /home/dyl/hbase-tmp'
三台的 HBase 配置相同,不需要像 ZooKeeper 那样创建 myid。
6. 配置快捷命令:三台分别执行
nano ~/.bashrc
末尾添加一次:
export HBASE_HOME=/home/dyl/hbase
export PATH=$HBASE_HOME/bin:$PATH
保存后执行:
source ~/.bashrc
hbase version
应显示 HBase 2.5.16。
7. 启动 HBase:只在 master 执行
确认 HDFS 和 ZooKeeper 正常后:
start-hbase.sh
它会在 master 启动 HMaster,并通过 SSH 在两个 worker 启动 HRegionServer。HBase 不需要执行格式化命令。
等待约半分钟,在 master 检查:
jps
ssh worker1 jps
ssh worker2 jps
应新增:
| 机器 | 新增进程 |
|---|---|
| master | HMaster |
| worker1 | HRegionServer |
| worker2 | HRegionServer |
进程存在只是初步检查,还要验证节点是否成功注册。
8. 查看集群状态
在电脑浏览器打开:
应看到 2 个在线 RegionServer。
或者在 master 执行:
hbase shell
进入后输入:
status 'simple'
应看到 2 个 live servers,0 个 dead servers。首次启动可能需要稍等片刻。
9. 创建表并测试读写
继续在 HBase Shell 中逐条执行:
create 'student', 'info'
put 'student', '1001', 'info:name', 'Alice'
put 'student', '1001', 'info:age', '20'
get 'student', '1001'
scan 'student'
能读到 Alice 和 20,就说明基本读写正常。
退出:
exit
在 Linux 命令行查看 HDFS 中的 HBase 数据目录:
hdfs dfs -ls /hbase
10. 以后启动和停止的顺序
启动顺序:
- 三台虚拟机开机。
- master 执行
start-dfs.sh。 - 三台分别执行
zkServer.sh start。 - 确认服务正常后,master 执行
start-hbase.sh。
停止时先在 master 执行:
stop-hbase.sh
等 HBase 停止后,再根据需要停止 HDFS 和 ZooKeeper。如果其他组件正在使用它们,就保持运行。
如果出现 RegionServer 缺失、Shell 长时间等待,先查看对应机器的日志:
ls -lt /home/dyl/hbase/logs/
打开最新的 .log 文件查看末尾报错:
tail -n 100 /home/dyl/hbase/logs/具体日志文件名
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_43592674/article/details/170146631



