文章目录
探讨hbase的系统架构以及以及整体常用的命令和系统分析,本文主要探讨高可用版本的hbase集群,并基于日常工作中的沉淀进行思考和整理。
1. hbase的高可用系统架构和相关组件
在hbase进行分布式系统架构选型时,使用了中心型的架构模式,整体架构跟hdfs类似,通过master节点来记录整体集群的元数据。 具体这种类型的数据结构,整体上可以参考hdfs
hbase的系统架构如下
相关核心的组件和角色作用如下
组件 | 部署模式 | 组件作用 | 备注 |
---|---|---|---|
master(active) | 单机部署 | 存储集群的元数据,具体集群数据的全局视角 | 给客户端提供请求服务等,和standby节点进行形成主备 |
master(standby) | 单机部署 | 存储集群的元数据,和active节点进行形成主备 | |
zk | 多节点部署 | zk提供hbase的nn选主锁和消息通知,zkfc接受相关zk进行主从切换 | 通过Zab 协议来保证分布式事务的最终一致性 |
region-server | 单机部署 | 数据的存储节点,会定期上报心跳和当前节点的block信息给master | 保存当前节点的region信息 |
2. hbase的核心参数
2.1 常规配置
hbase-site.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed ...
-->
<configuration>
<!-- 配置HBASE临时目录 -->
<property>
<name>hbase.tmp.dir</name>
<value>/data/hbase</value>
</property>
<!-- HBase集群中所有RegionServer共享目录,用来持久化HBase的数据,一般设置的是hdfs的文件目录 -->
<!-- 将hdfs-site.xml和core-site.xml拷贝到hbase的配置文件目录,配合hdfs的hdfs-site.xml和core-site.xml一起使用 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<!-- 定义hbase集群模式,true集群模式,false,单机模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 定义hbase的HMaster RPC端口,该端口用于HBase客户端连接到HMaster,默认16000,参数同 hbase.master -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<!-- 定义hbase的HMaster HTTPS端口。该端口用于远程Web客户端连接到HMaster UI,默认 16010 -->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!-- 定义hbase的RS (RegoinServer) RPC端口,该端口用于HBase客户端连接到RegionServer,默认 16020 -->
<property>
<name>hbase.regionserver.port</name>
<value>16020</value>
</property>
<!-- 定义hbase的Region server HTTPS端口。该端口用于远程Web客户端连接到RegionServer UI,默认 16030 -->
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
<!-- 定义hbase的zk链接ip -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>Master,Slave1,Slave2</value>
</property>
<!-- 定义hbase的zk链接端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!-- 定义hbase的zk存储位置,要与上述zookeeper安装过程中在zoo.cfg中配置的dataDir保持一致 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/yourname/zoodata</value>
</property>
<!-- 定义hbase使用本地文件系统设置为false,使用hdfs设置为true -->
<property>
<name