温馨提示×

HBase的高可用性在CentOS上如何实现

小樊
44
2025-11-16 04:44:59
栏目: 智能运维

在 CentOS 上实现 HBase 高可用

一 架构要点

  • 使用外部独立 ZooKeeper 集群(建议 3 或 5 节点) 管理集群元数据与会话,避免单点故障。
  • 部署 多个 HMaster(Active/Standby),通过 HBase 内置的 Master 自动故障转移 实现无感切换。
  • 数据面由 多个 RegionServer 横向扩展承载表数据,Region 在节点故障时可自动迁移与恢复。
  • 底层存储使用 HDFS(建议 NameNode HA),确保 HBase 根目录数据持久可靠。
  • 管理与观测通过 HBase Web UI(16010)HBase Shell 完成日常巡检与验证。

二 前置条件

  • 安装 Java 8+(OpenJDK 或 Oracle JDK),在所有节点配置 JAVA_HOME
  • 部署并验证 HDFS HA(或至少稳定的单 NameNode),HBase 根目录指向 HDFS。
  • 部署 ZooKeeper 集群(3/5 节点),各节点 myid 唯一,集群通信正常。
  • 主机名可解析(/etc/hosts 或 DNS),SSH 免密互通,时间同步(NTP/chrony)。
  • 防火墙/SELinux 放通端口:2181(ZK)16000/16010(HMaster RPC/UI)16020/16030(RegionServer RPC/UI)50010/50020/50070(HDFS DataNode/NameNode) 等。

三 关键配置步骤

  • 配置 ZooKeeper(示例为 3 节点)

    • zoo.cfg:
      • tickTime=2000
      • dataDir=/var/lib/zookeeper
      • clientPort=2181
      • initLimit=5;syncLimit=2
      • server.1=zk1:2888:3888;server.2=zk2:2888:3888;server.3=zk3:2888:3888
    • 各节点在 dataDir 下创建 myid 文件,内容分别为 1/2/3
    • 启动:在各节点执行 bin/zkServer.sh start
  • 配置 HBase(使用外部 ZK 与多 Master)

    • hbase-env.sh:
      • export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
      • export HBASE_MANAGES_ZK=false(使用外部 ZK)
    • hbase-site.xml(示例关键项):
      • hbase.rootdir:hdfs://namenode:8020/hbase
      • hbase.cluster.distributed:true
      • hbase.zookeeper.quorum:zk1,zk2,zk3
      • hbase.zookeeper.property.clientPort:2181
      • hbase.master.info.port:16010
      • hbase.master.info.bindAddress:0.0.0.0
    • 启用多 Master:在 conf/backup-masters 中写入备用 Master 主机名(每行一个)。
    • regionservers:写入所有 RegionServer 主机名(每行一个)。
  • 启动与验证

    • 启动顺序:先 ZooKeeper → 再 HDFS → 最后 HBase
    • 启动命令:在 HBase 安装目录执行 bin/start-hbase.sh
    • 验证:
      • Web:http://<任一Master>:16010,应能看到 Active MasterBackup Masters
      • Shell:执行 hbase shellstatus ‘simple’,确认 1 active master、N backup masters、N servers

四 高可用验证与运维要点

  • 故障演练:
    • 停止当前 Active HMaster,观察 backup-masters 中节点是否在约数十秒内切换为 Active;HBase Shell 的 status 同步更新。
    • 停止某台 RegionServer,观察 Region 是否在其他节点恢复;必要时手动触发 balancer
  • 日常巡检:
    • 使用 HBase Shell:status ‘detailed’ 查看负载与健康;
    • 关注 HMaster/RegionServer 日志GC 日志,及时扩容或调优。
  • 监控与告警:
    • 建议接入 Prometheus + Grafana(通过 JMX Exporter 暴露指标),对 HMaster/RegionServer 存活、请求延迟、Region 分布与负载 设置告警。

五 常见问题与优化建议

  • 外部 ZK 与内置 ZK 二选一:生产环境建议使用外部 ZooKeeper 集群 并设 HBASE_MANAGES_ZK=false,便于统一运维与高可用。
  • 时间与网络:节点时间漂移会导致 ZK 会话异常 与 Region 分布异常,务必启用 NTP/chrony 与稳定网络。
  • 端口与防火墙:确认 2181/16000/16010/16020/16030 等端口在主机与安全组层面均已放通。
  • 目录与权限:为 ZooKeeper dataDirHBase 数据目录 配置专属目录与权限,避免与其他服务冲突。
  • 负载均衡:Region 分布不均时执行 balancer,并结合 StochasticLoadBalancer 等策略优化热点。

0