HBase 2.4.18 分布式集群搭建教程(适配 Hadoop 3.3.4 + ZooKeeper 3.5.6)
一、环境说明1. 版本兼容性本教程基于以下稳定版本组合严格遵循 Apache 官方兼容性要求避免版本不兼容导致的启动失败组件版本说明Hadoop3.3.4已完成分布式集群搭建HDFS 正常运行HBase2.4.182.4 系列最新稳定版完美兼容 Hadoop 3.3.xZooKeeper3.5.6已完成分布式集群搭建3 节点正常运行JDK1.8.0_461HBase 2.x 官方推荐 JDK 版本不支持 JDK 11 生产环境操作系统CentOS 73 台虚拟机root 用户操作2. 集群节点规划主机名IP 地址角色hadoop1192.168.121.11HMaster主、RegionServer、NameNode、ResourceManager、ZooKeeperhadoop2192.168.121.12BackupMaster备、RegionServer、DataNode、NodeManager、ZooKeeperhadoop3192.168.121.13RegionServer、DataNode、NodeManager、ZooKeeper3. 前置准备必须完成Hadoop 3.3.4 集群正常运行start-dfs.sh、start-yarn.sh启动成功jps可看到 NameNode、DataNode 等进程ZooKeeper 3.5.6 集群正常运行3 节点zkServer.sh start启动成功zkServer.sh status显示 leader/follower节点免密登录hadoop1 可免密登录 hadoop2、hadoop3主机名映射3 台节点/etc/hosts已配置主机名与 IP 对应防火墙与 SELinux 关闭避免端口拦截导致集群通信失败# 3 台节点均执行 systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config二、HBase 安装部署1. 下载与解压仅在 hadoop1 操作1.1 上传安装包将hbase-2.4.18-bin.tar.gz上传至 hadoop1 的/root目录移动到统一安装目录# 移动安装包到 /export/servers自定义安装目录可根据实际修改 mv /root/hbase-2.4.18-bin.tar.gz /export/servers/ # 进入安装目录 cd /export/servers/ # 解压安装包 tar -zxvf hbase-2.4.18-bin.tar.gz # 重命名为 hbase方便后续操作 mv hbase-2.4.18 hbase1.2 配置环境变量3 台节点均执行编辑/etc/profile添加 HBase 环境变量vi /etc/profile在文件末尾添加以下内容# HBase 环境变量 export HBASE_HOME/export/servers/hbase export PATH$PATH:$HBASE_HOME/bin使环境变量生效source /etc/profile2. 核心配置文件修改仅在 hadoop1 操作2.1 配置hbase-env.sh编辑/export/servers/hbase/conf/hbase-env.sh在文件末尾添加以下配置# 配置 JDK 路径必须修改为自己实际的 JAVA_HOME export JAVA_HOME/export/servers/jdk1.8.0_461 # 禁用 HBase 内置 ZooKeeper使用外部独立 ZooKeeper 集群核心配置 export HBASE_MANAGES_ZKfalse # 禁用 Hadoop 类路径自动查找避免版本冲突 export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUPtrue2.2 配置hbase-site.xml最核心配置编辑/export/servers/hbase/conf/hbase-site.xml完全替换原有内容为以下配置configuration !-- HBase 数据在 HDFS 上的存储路径与 Hadoop core-site.xml 中 fs.defaultFS 保持一致 -- property namehbase.rootdir/name valuehdfs://hadoop1:9000/hbase/value /property !-- 启用分布式模式单机模式为 false -- property namehbase.cluster.distributed/name valuetrue/value /property !-- ZooKeeper 集群地址填写 3 台节点主机名 -- property namehbase.zookeeper.quorum/name valuehadoop1,hadoop2,hadoop3/value /property !-- ZooKeeper 客户端端口默认 2181无需修改 -- property namehbase.zookeeper.property.clientPort/name value2181/value /property !-- 解决 Hadoop 3.x 与 HBase WAL 兼容性问题必加 -- property namehbase.unsafe.stream.capability.enforce/name valuefalse/value /property /configuration2.3 配置regionservers编辑/export/servers/hbase/conf/regionservers删除默认内容填写所有 RegionServer 节点主机名hadoop1 hadoop2 hadoop33. 同步配置到其他节点仅在 hadoop1 操作将配置好的 HBase 安装目录同步到 hadoop2、hadoop3cd /export/servers scp -r hbase hadoop2:$PWD scp -r hbase hadoop3:$PWD三、集群启动与验证1. 启动顺序严格遵循避免启动失败必须先启动 Hadoop 和 ZooKeeper再启动 HBase启动 Hadoop 集群仅在 hadoop1 操作start-dfs.sh start-yarn.sh启动 ZooKeeper 集群3 台节点均执行zkServer.sh start启动 HBase 集群仅在 hadoop1 操作start-hbase.sh2. 启动验证2.1 进程检查3 台节点分别执行jpshadoop1 正常进程NameNode、ResourceManager、QuorumPeerMain、HMaster、HRegionServerhadoop2 正常进程DataNode、NodeManager、QuorumPeerMain、HMaster、HRegionServerhadoop3 正常进程DataNode、NodeManager、QuorumPeerMain、HRegionServer2.2 Web UI 验证浏览器访问 HMaster Web 界面http://hadoop1:16010可看到 3 台 RegionServer 全部在线Backup Masters 显示 hadoop2 正常运行集群状态正常无异常告警2.3 命令行测试进入 HBase Shell 测试基本操作hbase shell # 创建表 create test, cf # 查看表 list # 插入数据 put test, row1, cf:name, zhangsan # 查询数据 scan test # 退出 exit四、常见问题与解决方案1. 启动报错/xxx/jdk1.8.0_xxx/bin/java: 没有那个文件或目录原因hbase-env.sh中JAVA_HOME路径配置错误解决方案执行echo $JAVA_HOME查看真实 JDK 路径修改hbase-env.sh中的JAVA_HOME为真实路径同步修改后的文件到 hadoop2、hadoop3重启 HBase 集群2. HBase 无法连接 ZooKeeper原因ZooKeeper 未启动、端口被占用、hbase.zookeeper.quorum配置错误解决方案检查 3 台节点 ZooKeeper 状态zkServer.sh status确认hbase-site.xml中 ZooKeeper 地址与端口正确关闭防火墙确保 2181 端口开放3. RegionServer 启动失败原因Hadoop 未启动、hbase.rootdir权限不足解决方案确认 HDFS 正常运行创建 HBase 存储目录并授权hdfs dfs -mkdir /hbase hdfs dfs -chown root:root /hbase重启 HBase 集群五、集群停止与维护1. 停止顺序严格遵循# 1. 停止 HBase 集群仅在 hadoop1 操作 stop-hbase.sh # 2. 停止 ZooKeeper 集群3 台节点均执行 zkServer.sh stop # 3. 停止 Hadoop 集群仅在 hadoop1 操作 stop-yarn.sh stop-dfs.sh2. 开机自启配置将启动命令写入/etc/rc.local实现集群开机自动启动3 台节点均配置vi /etc/rc.d/rc.local添加以下内容# hadoop1 节点添加 su root -c /export/servers/hadoop-3.3.4/sbin/start-dfs.sh su root -c /export/servers/hadoop-3.3.4/sbin/start-yarn.sh su root -c /export/servers/zookeeper-3.5.6/bin/zkServer.sh start su root -c /export/servers/hbase/bin/start-hbase.sh # hadoop2、hadoop3 节点添加 su root -c /export/servers/zookeeper-3.5.6/bin/zkServer.sh start赋予执行权限chmod x /etc/rc.d/rc.local六、版本与路径说明版本兼容性本教程仅适用于 HBase 2.4.18 Hadoop 3.3.4 ZooKeeper 3.5.6 组合其他版本需调整配置路径说明安装目录/export/servers/为自定义目录可根据实际环境修改JDK 路径/export/servers/jdk1.8.0_461需替换为自己的 JDK 安装路径HDFS 路径hdfs://hadoop1:9000/hbase需与 Hadoopcore-site.xml中fs.defaultFS保持一致注意事项所有配置修改后必须同步到所有节点启动/停止必须严格遵循顺序避免数据损坏生产环境建议使用普通用户操作避免 root 权限风险