HBase 部署全指南:单机测试 vs 集群生产,照着配就能跑
使用的版本为2.2.7
HBase 的部署分两种模式:
- 单机模式:一台机器,用来学习、测试、验证功能
- 集群模式:多台机器,生产环境跑数据
两种模式的配置文件几乎一样,区别只在几个关键参数——hbase.cluster.distributed 设 true 还是 false、hbase.rootdir 指本地还是 HDFS、ZK 用内置还是外置。
单机模式:一台机器跑起来
适合开发测试,配置最简单。
前提条件:
- JDK 8+,
JAVA_HOME配好 - 如果用 HDFS 存数据,Hadoop 要先启动(也可以用本地文件系统,不用 Hadoop)
配置文件(conf/hbase-env.sh):
1 | export JAVA_HOME=/usr/lib/jvm/java-8-openjdk |
配置文件(conf/hbase-site.xml):
1 | <configuration> |
启动顺序:
1 | 如果用 HDFS,先起 Hadoop |
验证:
- Web UI:
http://localhost:16010 - Shell:
bin/hbase shell,执行status看集群状态
集群模式:多台机器,生产环境
服务器规划示例(3 台):
| 节点 | HBase 角色 | ZK 角色 | HDFS 角色 |
|---|---|---|---|
| node1 | HMaster | ZK | NameNode |
| node2 | RegionServer | ZK | DataNode |
| node3 | RegionServer | ZK | DataNode |
前提条件:
- 所有节点 JDK 版本一致
- ZooKeeper 集群已部署(3 或 5 台)
- HDFS 集群已部署
配置文件(conf/hbase-env.sh):
1 | export JAVA_HOME=/usr/lib/jvm/java-8-openjdk |
配置文件(conf/hbase-site.xml):
1 | <configuration> |
conf/regionservers 文件: 列出所有 RegionServer 节点
1 | node2 |
分发配置:
1 | scp -r /opt/hbase node2:/opt/ |
启动顺序:
1 | 1. 起 ZK(所有 ZK 节点) |
验证:
- Web UI:
http://node1:16010 - Shell:
bin/hbase shell,status看 RegionServer 数量
tips: ZooKeeper 用内置还是外置?
1 | 内置 ZK:设成 true |
生产环境用外置 ZK 集群,不要用内置。
关闭集群
关闭顺序跟启动反过来:
1 | 1. 停 HBase |
常见问题
1. HBase 起不来,端口被占用
默认端口:16000(Master RPC)、16010(Master Web)、16020(RegionServer RPC)、16030(RegionServer Web)
改端口:
1 | <property> |
2. RegionServer 连不上 Master
检查:
- 防火墙是否开放端口(16000-16030)
/etc/hosts主机名解析是否正确hbase.rootdir指向的 HDFS 是否可访问
3. ZK 连接失败
1 | 2024-xx-xx xx:xx:xx,xxx WARN [main] zookeeper.ZooKeeper: Session 0x0 for server null, unexpected error |
确认 ZK 集群是否启动、hbase.zookeeper.quorum 配置是否正确、ZK 端口是否开放。
4. HBase 起不来,日志里有 NoClassDefFoundError
检查 HBASE_CLASSPATH 是否指向了 Hadoop 配置目录,HBase 需要 Hadoop 的配置文件来定位 HDFS。