HBase 高可用集群配置
Posted 车斗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase 高可用集群配置相关的知识,希望对你有一定的参考价值。
HBase 高可用集群配置
基于最新的 hbase-2.4.2 版本。3台机器组成 HBase HA 集群,运行的进程如下:
flink01 HMaster
flink02 HMaster, HRegionServer
flink03 HRegionServer
环境变量(/etc/profile.d/hacl-hbase-env.sh):
export HBASE_HOME=/opt/hacl/hbase-2.4.2
export HBASE_CONF_DIR=$HBASE_HOME/conf
export PATH=$PATH:$HBASE_HOME/bin
配置文件 $HBASE_CONF_DIR/hbase-site.xml 中,下面的项一定要配置:
hbase.wal.provider: filesystem
这里 hbase.rootdir 的配置要与 $HADOOP_CONF_DIR/hdfs-site.xml 中的 dfs.nameservices(=hacl) 一致:
hbase.rootdir: hdfs://hacl/hbase
使用了外部 zookeeper, 下面的项一定要配置 $HBASE_CONF_DIR/hbase-env.sh :
export HBASE_MANAGES_ZK=false
export HBASE_CLASSPATH=/opt/hacl/hadoop-3.3.0/etc/hadoop
配置文件 $HBASE_CONF_DIR/masters:
flink01
配置文件 $HBASE_CONF_DIR/backup-masters:
flink02
配置文件 $HBASE_CONF_DIR/regionservers:
flink02
flink03
必须将 hadoop-ha 的 $HADOOP_CONF_DIR 目录里的配置文件 hdfs-site.xml 和 core-site.xml 复制到 $HBASE_CONF_DIR 目录下:
# cd $HBASE_CONF_DIR
# ln -s $HADOOP_CONF_DIR/hdfs-site.xml hdfs-site.xml
# ln -s $HADOOP_CONF_DIR/core-site.xml core-site.xml
完整的 hbase-site.xml 内容如下(hbase.zookeeper.quorum必须指定host列表,不要加端口号,不然与phoenix整合会出现错误。端口就2181吧,没办法,谁让开源的东西写的那么不负责任呢!):
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hacl/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/hacl/hbase/tmp</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>flink01,flink02,flink03</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>30</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.namenode.avoid.read.stale.datanode</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.avoid.write.stale.datanode</name>
<value>true</value>
</property>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
</configuration>
hadoop-ha 的 hdfs-site.xml 有关的配置如下:
<property>
<name>dfs.nameservices</name>
<value>hacl</value>
</property>
hadoop-ha 的 core-site.xml 配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hacl</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hacl/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>30</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>flink01:2181,flink02:2181,flink03:2181</value>
</property>
</configuration>
启动 HBase 集群,运行命令 (如果不能正常启动,则配置存在错误):
start-hbase.sh
查看 jps 进程:
flink01 HMaster
flink02 HMaster, HRegionServer
flink03 HRegionServer
关闭 HBase 集群,运行命令,(如果不能正常关闭进程,则配置存在错误):
stop-hbase.sh
清空 hbase 的数据
通常在安装过程中发现错误,需要初始化 HBase 数据才这样做。
首先关闭 hbase 集群:
stop-hbase.sh
如果运行上面的命令,某个 HMaster 无法中止,在该机器上执行:
# hbase-daemon.sh stop master
同样的,如果 HRegionServer 无法中止,执行:
# hbase-daemon.sh stop regionserver
确保所有节点的 HMaster, HRegionServer 进程都已经中止退出。执行下面的命令将删除全部 HDFS 和 ZK 上的 HBase 内容:
# hbase clean --cleanAll
警告:相当于删除 hdfs 上的 /hbase 目录和 zookeeper 上的 /hbase ZNode。这会删除全部 HBase 的数据,回到 HBase 刚安装的状态。
以上是关于HBase 高可用集群配置的主要内容,如果未能解决你的问题,请参考以下文章