温馨提示×

CentOS HBase与Zookeeper集成步骤

小樊
41
2025-10-28 13:39:12
栏目: 智能运维

CentOS环境下HBase与ZooKeeper集成步骤

1. 准备基础环境

在开始集成前,需确保CentOS系统已安装Java(建议JDK 1.8及以上)Hadoop(若需分布式存储),因为HBase依赖Java运行,分布式模式下需Hadoop支持。

  • 安装Java:使用YUM安装OpenJDK,命令:sudo yum install java-1.8.0-openjdk-devel -y,安装完成后通过java -version验证。
  • 安装Hadoop(可选):若需分布式存储,参考Hadoop官方文档安装并配置HDFS,确保hdfs://namenode:9000(或自定义NameNode地址)可正常访问。

2. 安装ZooKeeper集群

ZooKeeper是HBase的核心协调组件,需先部署ZooKeeper集群(建议奇数节点,如3节点)。

  • 下载并解压ZooKeeper:选择稳定版本(如3.7.0),命令:
    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
    tar -xzf apache-zookeeper-3.7.0-bin.tar.gz -C /opt
    mv /opt/apache-zookeeper-3.7.0-bin /opt/zookeeper
    
  • 配置环境变量:编辑/etc/profile,添加:
    export ZOOKEEPER_HOME=/opt/zookeeper
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    
    执行source /etc/profile使变量生效。
  • 配置ZooKeeper集群
    • 复制配置模板:cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
    • 修改zoo.cfg,添加以下关键配置(以3节点为例):
      tickTime=2000
      dataDir=/var/lib/zookeeper
      clientPort=2181
      initLimit=5
      syncLimit=2
      server.1=zookeeper1:2888:3888
      server.2=zookeeper2:2888:3888
      server.3=zookeeper3:2888:3888
      
      • dataDir:ZooKeeper数据存储目录,需提前创建(mkdir -p /var/lib/zookeeper)。
      • server.X:集群节点列表,X为节点ID(1、2、3…)。
  • 创建myid文件:在每个节点的dataDir目录下创建myid文件,内容为对应节点ID(如zookeeper1节点写入1zookeeper2节点写入2)。
  • 启动ZooKeeper集群:在每个节点上执行:
    zkServer.sh start
    
    使用zkServer.sh status检查状态,确保至少1个Leader、2个Follower。

3. 安装HBase

下载并解压HBase(建议2.4及以上版本),命令:

wget https://archive.apache.org/dist/hbase/hbase-2.4.9/hbase-2.4.9-bin.tar.gz
tar -xzf hbase-2.4.9-bin.tar.gz -C /opt
mv /opt/hbase-2.4.9 /opt/hbase

配置环境变量:编辑/etc/profile,添加:

export HBASE_HOME=/opt/hbase
export PATH=$HBASE_HOME/bin:$PATH

执行source /etc/profile使变量生效。

4. 配置HBase使用ZooKeeper

编辑HBase配置文件$HBASE_HOME/conf/hbase-site.xml,添加以下关键配置(以外部ZooKeeper集群为例):

<configuration>
  <!-- 指定ZooKeeper集群地址 -->
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>zookeeper1,zookeeper2,zookeeper3</value>
  </property>
  <!-- 指定ZooKeeper客户端端口(默认2181) -->
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <!-- 指定ZooKeeper数据存储目录(需与zoo.cfg中的dataDir一致) -->
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/var/lib/zookeeper</value>
  </property>
  <!-- 分布式模式(必须设为true) -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <!-- HBase根目录(HDFS路径,若未启用HDFS可设为本地路径) -->
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://namenode:9000/hbase</value>
  </property>
</configuration>
  • 禁用内置ZooKeeper:编辑$HBASE_HOME/conf/hbase-env.sh,添加:
    export HBASE_MANAGES_ZK=false
    
    此配置告诉HBase不启动内置的ZooKeeper,使用外部集群。

5. 配置HBase集群节点

  • 配置regionservers:编辑$HBASE_HOME/conf/regionservers,删除默认的localhost,添加所有RegionServer节点主机名(如hadoop1 hadoop2 hadoop3)。
  • 分发HBase到所有节点:使用scp将HBase目录复制到其他节点,命令:
    scp -rp /opt/hbase root@hadoop2:/opt/
    scp -rp /opt/hbase root@hadoop3:/opt/
    
  • 配置各节点环境变量:确保所有RegionServer节点都配置了HBASE_HOMEPATH环境变量(同主节点)。

6. 启动HBase集群

  • 启动ZooKeeper集群:确保所有ZooKeeper节点已启动(zkServer.sh status显示Leader/Follower状态正常)。
  • 启动HBase集群:在主节点(HMaster节点)上执行:
    start-hbase.sh
    
    启动后,使用hbase shell status 'simple'检查HBase状态,显示“Cluster is ONLINE”表示集成成功。

7. 验证集成

  • 进入HBase Shell:执行hbase shell进入交互式命令行。
  • 创建表并插入数据
    create 'test_table', 'cf'
    put 'test_table', 'row1', 'cf:name', 'John'
    get 'test_table', 'row1'
    
    若能正常创建表、插入和查询数据,说明HBase与ZooKeeper集成正常。

通过以上步骤,即可在CentOS环境下完成HBase与ZooKeeper的集成。集成后,ZooKeeper将负责HBase集群的协调管理(如RegionServer发现、Master选举、元数据存储等),确保集群的高可用性和一致性。

0