HBase入门(一)

1.HBase是依赖HDFS的,HBase的数据是存在RegionServer上的,然后RegionServer数据又存在于datanode.
2. HBase有两个节点Master(主)和RegionServer(从)
3. HBase操作表的时候需要元数据,元数据存在zooKeeper上面.
4. 之前学习中,有一条数据,这条信息的所有数据都先进到内存中,然后再把内存中的数据溢写到磁盘里面,但是HBase不是.这样不安全,内存数据会丢失.

一. HBase存储数据一个过程
HBase不支持事务的回滚和撤销,所以
HBase会先把数据写到本地Hlog中
然后把Hlog的数据存储到HDFS中
用到的技术WAL(预写式日志).write-Ahead-log
如果写入Hlog成功后,才会把数据放到内存中.
如果Hlog写入失败,不会把数据放到内存中.
内存中的阈值为64M,如果达到会把数据写到region
( 一个RegionServer里面存在多个region)
如果当前内存存储的数据达到当前当前虚拟机堆内存总大小40%,也会开始写入.
如果最后regin存在要写入的数据,整个过程才成功,否则,这个数据是写入不成功的.
6.好处
HBase这样存储数据的好处是,当内存向region传输数据的时候,突然中断,那么region中就会存在脏数据,也就是读取一半数据,并没有意义,但是虽然中断,但是Hlog中的数据依旧存在,当恢复以后,内存从Hlog重新读取数据传入到region中.并删除掉之前的脏数据.
但是如果是数据向Hlog写入过程突然中断的话,依旧会造成数据丢失.
尚硅谷大数据
二.HBase的参考系统时Zookeeper
zookeeper
hbase的元数据存储在Zookeeper中的
当用户启动HBase时候,启动了HMaster,RegionServer
当HMaster启动成功的时候,会从Zookeeper中拿RegionServer的region所有数据信息.
当HMaster启动成功的时候,会向Zookeeper写入当前自己运行的状态,为了高可用以及HMaster和RegionServer之间的通信.
当HMaster初始化的时候,会从Zookeeper将所有信息一次性加载到自己这里.,当客户端有对数据操作请求的时候,会先访问HMaster,然后HMaster会把客户端要访问的RegionServer中的region的位置返回给客户端,也就是元数据给客户端.
客户端拿到元数据后直接去操作region,读和写的过程都是直接操作region.
如果HMaster挂掉后,客户端仍然可以操作region,但是由于HMaster挂掉了,可能会造成数据不一致的情况,造成数据损失,所以要及时监控HMaster的状态.

三.HBase和RDBMS对比
RDBMS
结构:
数据库以表的形式存在
支持FAT,NTFS,EXT文件系统
使用Commit log存储日志
参考系统是坐标系统
使用主键(PK)
支持分区
使用行,列单元格

功能:
支持向上扩展
使用SQL查询
面向行,即每一行都是一个连续单元
数据总量依赖于服务器配置
适合结构话数据(也就是有固定数据类型的数据)
传统关系型数据库一般都是中心化的
支持事务,支持Join,ACID

HBase
结构:
数据库以region的形式存在
支持HDFS文件系统
使用WAL存储日志
参考系统时Zookeeper
使用行键(row key)
支持分片
使用行、列、列族和单元格

功能:
支持向外扩展
使用API和MapReduce来访问HBase表数据
面向列,即每一列都是一个连续的单元
数据总量不依赖具体某台机器,而取决于机器数量
HBase不支持ACID(Atomicity,Consistency,Isolation,Durability)
适合 结构化数据和非结构化数据
一般都是分布的
HBase不支持事务
不支持Join
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值