HBase学习小结

  1. 宏观架构
    HBase架构
  2. HBase角色构成
  1. Master:负责启动的时候分配Region到具体的RegionServer,执行各种管理操作,比如Region的分割和合并。HBase中的Master的角色功能比其他类型集群弱很多(更像一个打杂的),当Master挂掉后,并不影响客户端查询数据。但是比如创建表、修改列族配置,以及更重要的splite和compact。

  2. RegionServer:RegionServer上有一个或者多个Region。管理Region,但实际上我们常用的hbase都是基于HDFS。那么Region所有的数据操作都是调用HDFS客户端结构来实现的。

  3. Region:表的一部分数据(我们可以这样理解:我们假设一个Region=5G,设置两个列族ColumFamily,具体情况如下表:Region的官方解释是一张表面向横向的逻辑切面“意思就是一个Region其中包含有5G大小的N行数据”,那我们就将其理解为下图中的RK1、2、3,一个Region也包含多个列族。在实际开发中,我们不应该设置太多列族,过多列族也就是多个HFile这样会导致Region经历非常多的 磁盘沟通也就是磁盘IO)
    region

  4. HDFS:Hadoop中的文件系统,HBase并不直接和磁盘沟通所以HDFS是真正承载数据的载体。

  5. Zookeeper:Zookeeper虽然是自成一家的第三方组建,不属于HBase体系。但是Zookeeper在HBase中的重要性超过了Master,因为hbase:meta表的存放在Zookeeper中

  1. WAL:预写日志—预先写入日志。当我们插入表到达Region的操作,HBase回西安把操作写道WAL里面去。HBase会先把数据放到基于内存实现的memstore里,等数据达到Region大小刷写(flush)到HFile内。如果服务器断电或者宕机,那么数据就丢失了。WAL机制,就是数据在写道memstore之前,先被写到WAL。这样即使机器出现问题当重启时HBase就可以从WAL中回复数据。
  2. WAL滚动
    WAL是一个环状的滚动日志结构,因为这种结构写入的效果比较好,而且可以保证空间不会持续变大。
    WAL的检查间隔由hbase.regionserver.logroll.period定义,默认值为1小时。检查操作为当前WAL中的操作跟实际持久化到HDFS上的操作对比,若是被持久化的操作将会被移动到.oldlogs(/hbase/.oldlogs)中。
    一个WAL实例包含有多个WAL文件。WAL文件的做大数量通过hbase.regionserver.maxlogs(默认为32)来定义
    滚动触发条件:
    1、 当WAL文件所在的块即将满的时候
    2、 当WAL所占的空间大于或者等于某个阈值,该阈值计算公式
    Hbase.regionserver.hlog.blocksize * hbase.regionserver.logroll.multiplier
  3. WAL文件归档后去向
    a) WAL被创建后测会存在/hbase/.log中,一旦WAL文件被判定为被归档是则被移动到.oldlogs中
    b) 删除工作:Master会定期去.oldlogs中删除无用的日志文件,触发条件如下:
    i. 当这个WAL文件不需要作为被恢复数据的备份,判断条件为:没有任何引用指向这个WAL文件,引用WAL文件的服务为:
  4. TTL进程:该进程会保证WAL一直存活知道hbase.master.logcleaner.ttl定义的超时时间(默认10分钟)为止
  5. 备份机制:如果开启了HBase的备份机制,那么HBase要保证备份集群已经完全不需要这个WAL文件了,才会将其删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值