温馨提示×

HBase在Ubuntu下如何实现高可用

小樊
44
2025-12-28 11:35:01
栏目: 智能运维

在 Ubuntu 上实现 HBase 高可用的关键思路

  • 使用外部 ZooKeeper 集群(≥3 台,奇数) 管理集群元数据与会话,避免单点。
  • 部署 多个 HMaster(Active/Standby),通过 ZooKeeper 自动选主,避免 HMaster 单点。
  • 将 HBase 表数据落在 HDFS 上,并保证 HDFS NameNode 高可用(如 QJM/HA),否则 HBase 仍会受 HDFS 单点影响。
  • 规划开放端口并保障节点间网络互通,便于故障转移与运维监控。

架构与端口规划

  • 建议组件与节点分布:
    • ZooKeeper:3 台(如 zk1/zk2/zk3,端口 2181
    • HMaster:2 台(如 master1/master2,端口 16000 RPC、16010 Web UI)
    • RegionServer:≥2 台(端口 16020
    • HDFS NameNode:2 台(HA),DataNode:≥2 台
  • 网络与防火墙:开放 22/2181/16000/16010/16020 等必要端口,或临时关闭防火墙用于测试。

部署步骤

  1. 前置准备

    • 安装 JDK 1.8+,配置 JAVA_HOME;所有节点配置 SSH 免密登录(主节点可免密登录各节点)。
    • 部署并验证 HDFS HA(fs.defaultFS、JournalNode/ZKFC 等已正确配置并能正常启动)。
    • 部署并验证 ZooKeeper 集群(奇数台,myid 与 server.x 一致,集群状态正常)。
  2. 安装与分发 HBase

    • 下载解压 HBase(如 2.4.x/2.5.x)至 /usr/local/hbase,配置环境变量:
      • export HBASE_HOME=/usr/local/hbase
      • export PATH=$PATH:$HBASE_HOME/bin
    • 将 HBase 目录与环境变量分发到所有节点。
  3. 关键配置($HBASE_HOME/conf)

    • hbase-env.sh
      • 设置 JAVA_HOME
      • 设置 HBASE_MANAGES_ZK=false(使用外部 ZK)
      • 可选:调整 HBASE_HEAPSIZE、GC 参数、日志/PID 目录
    • hbase-site.xml(示例)
      • 启用分布式:hbase.cluster.distributed=true
      • 指定 HDFS:hbase.rootdir=hdfs://<nameservice_or_nn_host>:8020/hbase(与 Hadoop core-site.xml 的 fs.defaultFS 一致)
      • 指定 ZK:hbase.zookeeper.quorum=zk1,zk2,zk3
      • 指定 ZK 数据目录:hbase.zookeeper.property.dataDir=/var/lib/zookeeper
    • 集群清单
      • regionservers:列出所有 RegionServer 主机名
      • backup-masters(新建):列出 备用 Master 主机名(如 master2)
  4. 启动与验证

    • 启动顺序:HDFS → ZooKeeper → HBase
      • start-dfs.sh(确保 NameNode/DataNode、ZKFC 正常)
      • 每台 ZK 节点:zkServer.sh start
      • 在 HBase Master 节点:start-hbase.sh
    • 验证
      • jps:Master 节点可见 HMaster(备用节点也会出现 HMaster),RegionServer 节点可见 HRegionServer
      • Web UI:访问 http://:16010,查看 Master/RegionServer 列表与集群健康
      • HBase Shell:status ‘simple’ 或 status 查看集群状态

验证高可用与常见故障排查

  • 自动故障转移验证
    • Active Master 上 kill HMaster 进程,观察 Standby Master 是否在 数秒至数十秒 内自动切换为 Active(Web UI 与 Shell 状态同步变化)。
  • 常见问题
    • 节点间无法互通或端口未放行:检查 /etc/hosts、DNS、UFW/iptables,确保 2181/16000/16010/16020 可达。
    • HBase 无法连接 HDFS:确认 hbase.rootdir 与 Hadoop fs.defaultFS 一致,HDFS 处于 安全模式 之外,NameNode HA 已生效。
    • ZK 不一致:核对 zoo.cfg 的 server.x 与每台 myid,确保 Quorum 多数派存活(Leader/Follower 正常)。
    • 权限问题:HBase 目录与数据目录(如 /usr/local/hbase、HDFS /hbase、ZK 数据目录)属主/权限正确,建议使用 统一专用用户 部署。

0