Apache HBase环境搭建

Docker

docker pull harisekhon/hbase
docker run -d --name hbase-master -h hbase-master -p 16010:16010 -p 2181:2181 -p 8080:8080 -p 9090:9090 harisekhon/hbase

hbase-site.xml

docker run -d \
  --name hbase \
  --restart always \
  --net host \
  -v /opt/hbase/conf:/hbase/conf \
  -v /opt/hbase/data:/hbase/data \
  -v /opt/hbase/zk:/hbase/zk \
  harisekhon/hbase:2.5

指定外部Zookeeper

hbase.zookeeper.quorum 填 ZK 服务器 IP / 主机名,多个 ZK 用英文逗号分隔。
必须关闭内置 ZK
设置 hbase.cluster.distributed=true,同时在 hbase-env.sh 里设置:export HBASE_MANAGES_ZK=false,这样 HBase 就不会自己启动 ZK,而是连接你指定的外部 ZK。

<configuration>
  <!-- 1. ZK 地址,ZK 服务器 IP / 主机名(多个用逗号分隔) -->
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>192.168.1.100,192.168.1.101,192.168.1.102</value>
  </property>
  <!-- 2. ZK 客户端端口(默认 2181) -->
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <!-- 3. 关闭 HBase 自带 ZK(关键!) -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
</configuration>

如果你用 Docker 运行 HBase,不需要挂载配置文件,直接用环境变量指定 ZK:

docker run -d \
  --name hbase \
  --restart always \
  --net host \
  -e HBASE_ZOOKEEPER_QUORUM=192.168.1.100 \  # ZK地址
  -e HBASE_MANAGES_ZK=false \                # 关闭内置ZK
  harisekhon/hbase:2.5

使用docker-compose.yml

version: '3'
services:
  hbase:
    image: harisekhon/hbase:2.5
    network_mode: host
    restart: always
    environment:
      - HBASE_ZOOKEEPER_QUORUM=192.168.1.100  # 外部ZK地址
      - HBASE_MANAGES_ZK=false

验证是否连接到指定 ZK

1 active master, 1 backup masters, 1 servers, 0 dead, 2.0000 average load

且没有启动自带 ZK 进程,就说明配置成功!
hbase.unsafe.stream.capability.enforce

posted @ 2026-04-26 23:10  vonlinee  阅读(6)  评论(0)    收藏  举报