在开始集成前,需确保CentOS系统已安装Java(建议JDK 1.8及以上)和Hadoop(若需分布式存储),因为HBase依赖Java运行,分布式模式下需Hadoop支持。
sudo yum install java-1.8.0-openjdk-devel -y,安装完成后通过java -version验证。hdfs://namenode:9000(或自定义NameNode地址)可正常访问。ZooKeeper是HBase的核心协调组件,需先部署ZooKeeper集群(建议奇数节点,如3节点)。
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使变量生效。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…)。dataDir目录下创建myid文件,内容为对应节点ID(如zookeeper1节点写入1,zookeeper2节点写入2)。zkServer.sh start
使用zkServer.sh status检查状态,确保至少1个Leader、2个Follower。下载并解压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使变量生效。
编辑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>
$HBASE_HOME/conf/hbase-env.sh,添加:export HBASE_MANAGES_ZK=false
此配置告诉HBase不启动内置的ZooKeeper,使用外部集群。$HBASE_HOME/conf/regionservers,删除默认的localhost,添加所有RegionServer节点主机名(如hadoop1 hadoop2 hadoop3)。scp将HBase目录复制到其他节点,命令:scp -rp /opt/hbase root@hadoop2:/opt/
scp -rp /opt/hbase root@hadoop3:/opt/
HBASE_HOME和PATH环境变量(同主节点)。zkServer.sh status显示Leader/Follower状态正常)。start-hbase.sh
启动后,使用hbase shell status 'simple'检查HBase状态,显示“Cluster is ONLINE”表示集成成功。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选举、元数据存储等),确保集群的高可用性和一致性。