在CentOS上配置HBase的高可用性(HA)主要涉及以下几个步骤:
首先,确保你已经安装了HBase。你可以从Apache HBase官方网站下载并按照安装指南进行安装。
HBase的高可用性依赖于ZooKeeper。你需要配置多个ZooKeeper实例来提供高可用性。
你可以使用HBase自带的ZooKeeper,或者单独安装ZooKeeper。
# 下载ZooKeeper
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
# 移动到合适的位置
mv apache-zookeeper-3.7.0-bin /opt/zookeeper
# 创建数据目录
mkdir -p /var/lib/zookeeper/data
# 配置ZooKeeper
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
编辑/opt/zookeeper/conf/zoo.cfg文件,添加以下内容:
tickTime=2000
dataDir=/var/lib/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
在/var/lib/zookeeper/data目录下创建myid文件,并写入服务器ID:
echo "1" > /var/lib/zookeeper/data/myid # 在zoo1服务器上
echo "2" > /var/lib/zookeeper/data/myid # 在zoo2服务器上
echo "3" > /var/lib/zookeeper/data/myid # 在zoo3服务器上
启动ZooKeeper:
/opt/zookeeper/bin/zkServer.sh start
编辑HBase的配置文件/opt/hbase/conf/hbase-site.xml,添加以下内容:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>zoo1,zoo2,zoo3</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>16020</value>
</property>
<property>
<name>hbase.ipc.server.listen.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>hbase.regionserver.hlog.blocksize</name>
<value>64M</value>
</property>
<property>
<name>hbase.regionserver.hlog.writer.impl</name>
<value>org.apache.hadoop.hbase.regionserver.wal.HLogWriterFactory</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.count</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.impl</name>
<value>org.apache.hadoop.hbase.regionserver.wal.HLogSyncer</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxop</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minop</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.sleeptime</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.maxsize</name>
<value>1073741824</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.minsize</name>
<value>1048576</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer