自学大数据第十天~Hbase

在这里插入图片描述

随着数据量的增多,数据的类型也不像原来那样都是结构化数据,还有非结构化数据;

Hbase时google 的bigtable的开源实现,

BigtableHbase
文件存储系统GFSHDFS
海量数据处理MRMR
协同管理服务chubbyzookeeper

虽然有了HDFS和MR,但是对于数据的实时处理是比较困难的,没有办法应对数据的爆炸式增长;

Hbase和传统的数据库之间的联系与区别:

  • 1,数据类型方面:Hbase数据库没有复杂的数据类型,只是单纯将数据作为字符串存储在表中;
  • 2,数据操作方面:Hbase没有复杂的联结查询;
  • 3,数据存储方面:Hbase是列存数据库,可以存储海量数据;
  • 4,数据索引方面:Hbase也是支持索引的;
  • 5,数据维护方面:Hbase在更新/修改时会保留原来版本,为新版本加一个时间戳作为新版本或者删除时也并不会直接删除,而是做一个标志表示其被删除了;

Hbase的访问API

在这里插入图片描述

Hbase数据模型

在这里插入图片描述
一个列族可以理解为原来我们习惯上理解的一个对象;
info 对象,其下属性 name major email,这里弱化了之前我们设计关系型数据库设计时考虑的范式,

Hbase对数据的定位:

同时每个单元格里可以有多个数据,每个数据会有一个时间戳,当我们查找数据时,(即我们定位一个数据时),需要列族,行键,列限定符以及时间戳才能唯一确定一条数据;

虽然我们在画数据存储的时候使用的时上表那样,但是实际上列数据库的存储像是下面这样:
在这里插入图片描述
行键,时间戳,列族 的形式进行存储;

行式数据库适合事务性处理比较多的情况下;
列式数据库适合数据分析,为什么这么说呢?因为相较于行式数据库,我们在分析部分数据(比如说某个产品哪个年龄段喜欢买时,我们只需要提取列数据库的年龄列就可以);

Hbase功能组件

库函数,master服务器以及region服务器;

库函数

主要负责Hbase的链接

master服务器

  • 分区信息维护和管理
  • 维护region服务器列表
  • 整个集群中region服务器的工作状态
  • 对region进行分配
  • 负载均衡

region服务器

数据的存取

数据的存储一开始只有一个region,随着数据量的增多,region会进行分裂
在这里插入图片描述
一个region的大小取决于单台服务器的有效处理能力,

对于同一个region绝对不会拆分到不同的region服务器上;
每个region服务器会有10-1000个region
在这里插入图片描述
表被划分成一个一个region,region中数据量增加后会分裂, 我们在找数据时需要从region服务器上找,我们怎么找region服务器呢?这就需要一个region服务器的映射,这个映射表称为META表, META表是用于存储元数据的,当元数据量增多时,又会出现一个问题,我们怎么找META,又得构建一个新的映射表 root表,到这层就不再分裂了, root表只存在一份,他的地址已经写死在zookeeper中了;

在这里插入图片描述
当我们第一次去查数据时是从ROOT表中拿Meta,meta表中拿数据位置,客户端中会存放 一份Meta缓存,下次直接去找数据,如果找不到,则在去从root表中开始,然后更新客户端中meta缓存;

三层架构可以定位的数据地址 大家可以算一下 ;

Hbase的运行机制

在这里插入图片描述

Hbase数据的写入

首先写入缓存–memestore
然后在写入region服务器,
为了保证数据的安全和可恢复,还需要写日志文件 hlog

系统会周期性将memstore中的数据刷写道磁盘的storefile文件中,并在hlog里面写入一个标记,**每次刷新都会新生成一个storefile文件,**一次每个store都会包含多个storefile文件

好玩的是:

当storefile文件数量达到一定数量后,会进行合并,合并后storefile文件大小会变大,达到一定大小后,又会进行分裂;

为了保证数据的最终一致性:
每个region服务器都有自己的一个hlog文件,每次启动会检查最近一次缓存刷新之后是否发生新的写入操作,如果发现更新,则先写入memstore,在刷写到storefile,最后删除旧的hlog文件,最后在开始为用户提供服务;

Hbase数据的读取

读取数据的时候 从缓存 memstore中寻找,
没找到则从磁盘storefile中寻找

Hbase的数据恢复机制

在这里插入图片描述
一个region服务器上有一个所有region公用的hlog文件,每次写入数据时会先写hlog文件,然后再写入memstore

当region发生故障时,找到region所在然后提供hlog来恢复数据

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodeMartain

祝:生活蒸蒸日上!

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

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

打赏作者

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

抵扣说明:

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

余额充值