5、HBase原理

简述HBase的架构原理

 

1. HBase的模块

  • Master

    HBase Master用于协调多个Region Server,侦测各个Region Server之间的状态,并平衡Region Server之间的负载。HBase Master还有一个职责就是负责分配Region给Region Server。HBase允许多个Master 节点共存,但是这需要Zookeeper的帮助。不过当多个Master节点共存时,只有一个Master是提供服务的,其他的Master节点处于待命的状态。当正在工作的Master节点宕机时,其他的Master则会接管 HBase 的集群,其次它管理namespace和table的元数据(实际上存储在HDFS上)以及权限控制(ACL)。

简单理解:

1.管理HRegionServer,实现其负载均衡。

2.管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上。

3.实现DDL操作(Data Definition Language,namespace和table的增删改,column familiy的增删改等)。

4.管理namespace和table的元数据(实际存储在HDFS上)。

5.权限控制(ACL)

  • Region Server

    对于一个Region Server而言,其包括了多个Region。Region Server的作用只是管理表格,以及实现读写操作。Client 直接连接Region Server,并通信获取HBase中的数据。对于Region而言,则是真实存放HBase数据的地方,也就说Region是HBase可用性和分布式的基本单位。如果当一个表格很大,并由多个CF组成时,那么表的数据将存放在多个Region之间,并且在每个Region中会关联多个存储的单元(Store)。

简单理解:

1.存放和管理本地HRegion。

2.读写HDFS,管理Table中的数据。

3.Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)

  • Zookeeper

    对于HBase而言,Zookeeper的作用是至关重要的。首先Zookeeper是作为HBase Master的HA解决方案。也就是说,是Zookeeper保证了至少有一个HBase Master处于运行状态。并且Zookeeper负责Region和Region Server的注册。其实Zookeeper发展到目前为止,已经成为了分布式大数据框架中容错性的标准框架。不光是HBase,几乎所有的分布式大数据相关的开源框架,都依赖于Zookeeper实现HA(High Available)。

简单理解:

1.存放整个 HBase集群的元数据以及集群的状态信息。

2.实现HMaster主从节点的failover。

 

2. HBase的原理

    首先我们需要知道HBase的集群是通过Zookeeper来进行机器之前的协调,也就是说HBase Master与Region Server之间的关系是依赖Zookeeper来维护。当一个Client需要访问HBase集群时,Client需要先和Zookeeper来通信,然后才会找到对应的Region Server。每一个 Region Server管理着很多个Region。对于HBase来说,Region是HBase并行化的基本单元。因此,数据也都存储在Region中。

    这里我们需要特别注意,每一个Region都只存储一个Column Family的数据(可能有问题,其他资料显示是存储多行上的多个CF--ColumnFamily),并且是该CF中的一段(按Row 的区间分成多个Region)。Region所能存储的数据大小是有上限的,当达到该上限时(Threshold),Region会进行分裂,数据也会分裂到多个Region中,这样便可以提高数据的并行化,以及提高数据的容量。

    每个Region包含着多个Store对象。每个Store包含一个MemStore,和一个或多个HFile。MemStore便是数据在内存中的实体,并且一般都是有序的。当数据向Region写入的时候,会先写入MemStore。当MemStore中的数据需要向底层文件系统倾倒(Dump)时(例如MemStore中的数据体积到达MemStore配置的最大值),Store便会创建StoreFile,而StoreFile就是对HFile一层封装。所以MemStore中的数据会最终写入到HFile中,也就是磁盘IO。由于HBase底层依靠HDFS,因此HFile都存储在HDFS之中。这便是整个HBase工作的原理简述。

 

使用HBase时应注意的问题

    基于Hbase的系统设计与开发中,需要考虑的因素不同于关系型数据库,Hbase模式本身很简单,但赋予你更多调整的空间,有一些模式写性能很好,但读取数据时表现不好,或者正好相反,类似传统数据库基于范式的OR建模,在实际项目中考虑Hbase设计模式是,我们需要从以下几方面内容着手:

  • 这个表应该有多少个列簇

  • 列簇使用什么数据

  • 每个列簇应有多少个列

  • 列名应该是什么,尽管列名不必在建表时定义,但是读写数据时是需要的

  • 单元应该存放什么数据

  • 每个单元存储什么时间版本

  • 行健结构是什么,应该包括什么信息

 

快来成为我的朋友或合作伙伴,一起交流,一起进步!
QQ群:961179337
微信:lixiang6153
邮箱:lixx2048@163.com
公众号:IT技术快餐
更多资料等你来拿!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝壳里的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值