在CentOS上配置HBase的高可用性(HA)涉及多个步骤,包括设置ZooKeeper集群、配置HBase集群以及确保故障转移机制正常工作。以下是一个基本的指南:
HBase依赖ZooKeeper来管理集群的状态和协调。
下载并解压ZooKeeper:
wget https://downloads.apache.org/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
创建ZooKeeper数据目录和日志目录:
mkdir -p /var/lib/zookeeper/data
mkdir -p /var/log/zookeeper
配置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
启动ZooKeeper: 在每个节点上启动ZooKeeper:
/opt/zookeeper/bin/zkServer.sh start
下载并解压HBase:
wget https://downloads.apache.org/hbase/2.4.9/hbase-2.4.9-bin.tar.gz
tar -xzf hbase-2.4.9-bin.tar.gz
mv hbase-2.4.9 /opt/hbase
配置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.global.memstore.size</name>
<value>0.4</value>
</property>
<property>
<name>hbase.regionserver.global.memstore.lower.limit</name>
<value>0.39</value>
</property>
<property>
<name>hbase.regionserver.global.memstore.upper.limit</name>
<value>0.41</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.count</name>
<value>1</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.checkpoint</name>
<value>1024</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.max</name>
<value>1024</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.min</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.period</name>
<value>30000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.size</name>
<value>10485760</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logsize</name>
<value>10485760</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.multiplier</name>
<value>1.5</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size</name>
<value>104857600</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter</name>
<value>0.1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max</name>
<value>10</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>1000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.min.mb</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.period.ms</name>
<value>300000</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.size.mb</name>
<value>100</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.jitter.ms</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.hlog.syncer.logroll.max.mb</name>
<value>10