hbase入门(一)

hbase是一种nosql数据库,主要存储非结构化和半结构化的数据,是面向列、高性能、面向列、可伸缩、实时读写的分布式数据库。数据存储采用key-value形式的存储,数据类型只有byte,利用hadoop的hdfs作为其存储系统,mapreduce处理hbase的海量数据,利用zookeeper作为分布式协同服务

 

特点:

1.海量存储-扩展性能好:

2.列式存储:存储格式是列存储,查询和存储空间性能更好

3.高并发:是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务

4.稀疏:数据为null的列不占用实际存储空间

5.无模式:不同行可以有不同的列

基础架构和

组件介绍

  1. client:用户访问的客户端,会缓存部分元数据加快对hbase的访问
  2. zookeeper:集群的管理者
    • 保证集群中只有一个或者的hmaster,解决单点故障问题
    • 存储所有的Region的寻址入口
    • 实时监控region server 的上线和下线信息,并及时通知给hmaster
    • 存储hbase的schema和table元数据,后期客户访问hbase的表必须可连接上zookeeper
  3. Hmaster:集群老大,为regionServer的分配region,仅负责维护table和region元数据,负责regionserver的负载均衡。控制客户端的访问权限,对于数据的读写不管
  4. region server :负责数据的读写,维护region,其切分过大的region
  5. region:分布四存储的最小单元,一个表默认只有一个region,达到10切分成两个

存储结构

  1. store:一个region有多个store,store是列族的划分,有几个列族;
  2. memstore:是一个缓存区域,数据是先存入memstore,再存入磁盘生成storefile。默认时间1小时或大小128M,storefile达到一定数量(默认是10)后在合并成一个文件
  3. HLog(WAL log) :用于数据的容错和恢复,memstore中数据丢失,能充log中进行恢复,每一个hregionServer中之u有一个Hlog,数据写入memstore的时先写入日志,等memstore的数据存入磁盘后在删除日志;hlog是一个write ahead log的类,;
    1. 当hrigeionserver意外终止后数据怎么恢复:hregionserver意外终止后,hmaster会通过zookeeper感知到,hmaster首先会处理遗留的hlog文件,将其中不同的region的log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到region的hregionServer在 load region的过程中会发现有历史hlog需要处理,因此会replay hlog中的数据到memstore中,然后flush到storeffile,完成数据恢复
  4. hlog文件就是一个普通的hadoop sequence file,key是hlogkey对象,hlogkey中记录了写入数据的归属信息,除了table和region名字外,同时海包括squence number和timestamp,timestamp是“写入时间”,sequence number 起始值为0,或者是最近一次存入系统中的sequence number。 value是hbase的keyValue对象,即对应hfile中的keyValue,
  5. stroefile:是只读的,一旦创建后不能更改,hbase的更新实际是不断追加的操作,storefile和memstore占用数据是按照row key排序的;

总结:

  • region是hbase存储和负载的最小单元,一张表有一个或多个region,
  • region包含一个或多个store,每一个store只有一个列簇
  • 每个region server有一个memstore和0至多个storefile组成。
  • storefile以hfile格式保存在hdfs上

寻址机制和原理

hbase的使用类似三层B+树结构来保存region位置.也就是一般需要三次跳转就能定位到访问数据对应的region位置

第一层:root region表的位置保存在zookeeper中,root region是.mata.表的第一个 region ;通过root region可以访问.mata.表

第二层:;通过root region可访问.mata.表的信息, .META.表它是一个特殊的表,保存了hbase中所有数据表的region 位置信息,并且永远不会拆分(其他表在默认达到10G会自动拆分成两个表);

第三层:.mata.表每一行保存一个region的位置信息,root key 采用表明+表的最后一行编码而成。并且mata表是会全部加载内存中,加快访问速度;

说明:client会将查询过的位置信息缓存起来,下次查询时可以直接定为到对应的region位置,不用经过三次跳转再定位。如果缓存失效或刚启动没有缓存,访问需要六次,前三次是发现缓存实现,后三次是获取位置信息,

流程:client--》zookeeper拿到root region地址-->访问root region(.mata.表)获得要访问的数据对应的region 位置-->访问region获得数据

读写过程

1.读请求过程

  1. client通过zookeeper范文root表和meta表找到目标数据所在的regionserver
  2. 联系regionserver查询目标数据
  3. regionserver定位到目标数据所在的region。发出查询请求
  4. region现在memstore中查找,命中返回,没有命中在扫描storefile

2.写请求过程

  1. client向regionserver提交写请求
  2. region server找到目标region
  3. region检查数据是否于schema一致
  4. 如果用户没有指定版本,则获取当前系统时间作为数据版本
  5. 将更新写入hlog后再写入memstore
  6. 判断memstore是否需要flush为storefile文件

memstore写入磁盘:当累积到一定阈值时,开启单独的线程flush到磁盘,成为以恶storedfile,同时会在zookeeper中记录一条redo point,表示这个时刻之前的变更已经持久化了,

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值