hbase体系结构

hbase是master-slave模型

一、client(客户端)

1、shell命令行接口

2、原生java api接口

3、thrift/rest api接口

4、mapreduce接口

用于批量数据导入和读取

二、zookeeper

1、实现master高可用

2、管理系统核心元数据

3、参与regionserver宕机恢复

4、实现分布式表锁

三、master

1、处理用户的各种管理请求

建表,修改表,权限操作,切分表,合并数据分片,以及compaction等

2、管理集群中所有的regionserver

regionserver负载均衡,regionserver宕机恢复,regionserver迁移

3、清理过期日志以及文件

master会每隔一段时间来检查hdfs中的hlog是否过期,hfile是否已经被删除。

四、regionserver

1、WAL(HLog)

(1)实现数据的高可靠,hbase数据随机写入时,并非直接写入hfile数据文件,而是先写入缓存,再异步刷新落盘,为了防止缓存数据丢失,数据写入缓存之前需要顺序写入HLog,当缓存数据丢失,仍然可以通过HLog日志恢复。

(2)实现Hbase集群间主从复制。通过回放主集群推送过来的HLog日志实现主从复制。

2、BlockCache

hbase系统中的读缓存,客户端从磁盘读取数据之后,通常会将数据缓存在系统的内存中,后续访问同一行数据可以直接从内存中获取而不需要再访问磁盘。BlockCache是一系列block块,一个block块默认为64k,由物理上相邻的多个KV数据组成。BlockCache同时利用了空间局部性和时间局部性。

(1)空间局部性

        最近将读取的KV数据很可能与当前读取的KV数据在地址上是邻近的

(2)时间局部性

        一个KV正在被访问,那么近期可能再次被访问

当前BlockCache主要有两个实现

(1)LRUBlockCache

(2)BucketCache(在GC上有优化)

五、region

数据表的一个分片,当数据表的大小超过一定的阈值,就会“水平切分”,分裂为两个region。region是集群负载的基本单位。通常一张表的region会分布在整个集群的多台regionserver上。一个region由一个或者多个store构成,store的个数取决于列簇的个数。多少个列簇就有多少个store。

六、store

hbase中,每个列簇的数据都集中在一起形成一个存储单元store。每个store由一个memstore和一个或者多个hfile组成,memstore称为写缓存,用户写入数据先写入memstore,当memstore写满(默认128M)后,系统会异步将数据flush成为一个hfile文件。当hfile文件超过一定的阈值后,系统将会compact操作,将这些小文件通过一定的策略合并成一个或者多个大文件。

七、HDFS

Hfile和HLog都是存储在hdfs中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值