HBase简介

23 篇文章 0 订阅
5 篇文章 0 订阅

1. HBase简介

HBase是什么

建立在Hadoop HDFS之上的分布式面向列的数据库

HBase特点

高可靠,高性能,面向列,可伸缩的分布式存储系统,可横向扩展

优点
  1. 一致性强,一次写入, 多次读取
  2. 可自动扩展, 数据过多自动分割
  3. 高可用, 通过HDFS分布式存储并备份数据, 通过WAL进行数据恢复
  4. 与MapReduce结合
缺点
  1. WAL数据恢复速度慢
  2. 异常恢复效率低
  3. Major compaction时, I/O操作多,占用资源大,
HBase与HDFS的区别
HDFSHBase
存储大容量文件的分布式文件系统建立在HDFS上的数据库
不支持快速单独记录查询支持在较大表中快速查询
高延迟批量处理随机存取,低延迟单行记录访问
只能顺序访问存储索引,使用哈希表,快速查找HDFS数据
HBase与关系型数据库的区别
HBaseRDBMS
无模式,仅定义列族有模式,描述表结构的约束
横向扩展小表,规模小
无事务有事务
非结构化或结构化数据结构化数据
数据反规范化数据有规范化
存储机制

HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。
1. 表是行的集合
2. 行是列族的集合
3. 列族是列的集合
4. 列是键值对的集合

2. HBase组件

  1. ZooKeeper用来协调分布式系统的成员之间共享的状态信息
  2. Region Server及HMaster也与ZooKeeper连接
  3. ZooKeeper通过心跳信息为活跃的连接维持相应的ephemeral node
    HBase组件
Region server
  1. 负责数据的读写服务
    1. 每一个Region server大约可以管理1000个region
    2. 一个region包含表中所有row key位于region的起始键值和结束键值之间的行
  2. 组成
组件含义功能
WALWrite Ahead Log预写式日志,HDFS中存储的文件存储尚未写入永久性存储区中的新数据,数据恢复
Block Cache读缓存将经常被读的数据存储在内存中,达到阈值溢出被读频率最低的数据
MemStore写缓存存储从WAL中写入但尚未写入HDFS的数据,写入前排序,每一个region中的每一个column family对应一个MemStore
HfilesHBase文件根据排序号的键存储数据行,位于HDFS上的实际存储文件
HBase HMaster
  1. 负责Region的分配及数据库的创建和删除等操作
  2. 在集群启动的时候分配region, 根据恢复服务或者负载均衡的需要重新分配region
  3. 监听zookeeper对于ephemeral node(备份节点)状态的通知
  4. 提供创建,删除或者更新表格的接口
ZooKeeper
  1. 负责维护集群的状态, 通过datanode向zookeeper定时发送心跳信息
  2. 维护服务器是否存活,是否可访问的状态并提供服务器故障/宕机的通知
  3. 保证良好的一致性及顺利的Master选举
HDFS
  1. DataNode负责存储所有Region Server所管理的数据
  2. NameNode负责维护构成文件的所有物理数据块的元数据(metadata)

3. HBase的首次读写

首次读写

meta table
  1. 在HBase的default命名空间中默认存在的表,保存集群region的地址信息
  2. ZooKeeper中会保存META table的位置
  3. 结构类似于B+树(根节点下左小右大,包含多个叶子节点)
  4. 键: region的起始键, region id
  5. 值: Region server
首次读写流程
  1. 通过zookeeper获得meta table地址
  2. 通过meta table获得Region server地址
  3. 通过Region server获得目标row key所在region的Region server地址
  4. 缓存操作信息
  5. 与目标Region server通讯, 实现读写
写的一般流程
  1. 发送put请求
  2. 顺序写入WAL
  3. 存入MemStore, 通知客户put完成

4. HBase内置的优化

Read Merge读合并
  1. HBase中要读取的数据可能会存在于多处
    1. 已写入的数据位于HDFS上的HFile
    2. 最近读取的数据位于内存中的Block cache
    3. 最新的数据位于内存中的MemStore
  2. HBase遇到这种情况时会自动进行读合并操作,并非真的将数据合并,只是按照顺序寻找数据
  3. 顺序为: MemStore->Block cache->HFile
Read amplification读放大
  1. HBase中一个MemStore对应的数据可能会存储于多个HFile中
  2. 读放大会读取多个HFile影响性能
Minor Compaction小合并
  1. HBase会自动将多个较小的HFile合并为几个较大的HFile中, 合并过程会经过Merge sort排序
  2. 目的是提升性能
Major Compaction主合并,Write amplification写放大
  1. HBase会在规定自动将对应一个列族的所有HFile重新整理合并为一个HFile
  2. 删除已删除或过期的cell
  3. 提升读的效率
  4. 包含大量I/O操作和网络数据通信, 因此也称作写放大
  5. 该操作会将所需的远程数据下载到本地的Region server上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值