好程序员大数据学习路线Hbase 总结 , 为什么有 hbase
随着数据的逐渐增大,传统的关系型数据库无法满足 对数据的查询和存储,而 hive 不是数据库,只是数据仓库,虽然能够满足简单的存储要求,但是 始终无法满足对非结构化和半结构化的数据的存储和查询
2hbase 是什么
Hbase 是阿帕奇旗下的一款开源的,多版本的,可扩展的非关系型数据库。
他是基于谷歌的 bigtable 的基础上,建立在 hdfs 上的一款提供高 可靠性的,高性能的列式存储,可伸缩,实时读写的nosql的数据库系统
3 适用场景
海量数据存储
随机实时读写和管理数据
4 特点
列式存储
模式:无模式(不需要 use gp1808, 就可以直接创建表了 , 所以导致 hbase 中的表是不可以重名的)
数据类型:单一的 byte[]
多版本( version ):每个值都可以有多个版本
稀疏存储:如果 kv 为 null ,则不占用存储空间
5 结构框架
Client :
hbase 的客户端,包含访问的 hbase 的接口( linux shell ,java api )
维护一些 cache( 缓存 ) 来加速 hbase 的速度,比如 region 的位置信息
Zookeeper:

监控 hmaster 的状态,保证有且只有一个 active 的 hmaster ,达到高可用
存储所有的 region的寻址入口,
实时监控 hregionserver 的状态,将 regionserrver 的上下线信息实时通知给 hmaster
存储 hbase 的所有表的信息 ( hbase 的元数据)
Hmster(hbase 的老大 )
为 regionserver 分配 region(新建表)
负责 regionserver 的 负载均衡
负责 region 的重新分配(处理 hregionserver 异常, hregion 裂变)
Hdfs 上的垃圾文件回收
处理 schema 的更新请求
Hregionserver ( hbase 的小弟)
维护老大给他的 region( 管理本机上的 region)
处理 client 对 region 的 IO 请求,并和 hdfs 交互
Regionserver 负责切分在运行过程中变大的 region
Hregion:
Hbase 中分布式的存储和负载的最小单元,表或者是表的一部分
( 在 HBase 中数据按主键排序,同时表按主键划分为多个 Region
Region 按大小分割的,随着数据增多, Region 不断增大,当增大到一个阀值的 Region 就会分成两个新的 Region )
Region 虽然是分布式存储的最小单元,但并不是存储的最小单元。每个 Region 包含着多个 Store 对象。每个 Store 包含一个 MemStore 或若干 StoreFile , StoreFile 包含一个或多个 HFile 。 MemStore 存放在内存中, StoreFile 存储在 HDFS 上。
Hlog ;
对 hbase 的操作进行记录,使用 wal ( Write-Ahead-Log )写数据,优先写入 log, 然后再写入 memstore, 以防数据丢失时可以进行日志回滚回复数据
Store :
相当于一个列簇。
Memstore:128M
内存缓冲区,用于将数据批量刷新到 hdfs 上
Hstorefile(hfile)
Hbase 中的数据是以 hfile 的形式存储到 hdfs 上

写流程:
1client 通过 zookeeper 的调度,向 regionserver 发出写数据请求,在 region 中写数据
2 数据被写入 region 的 memstore ,直达 memstore 达到预设的阈值( 128M )
3memstore 中的数据被 flush 成一个 storefile
4 随着 storefile 文件的不断增多,当其数量增长到一定阈值的时候,触发了 compact 合并操作,将多个 storefile 合并成一个 storefile, 同时进行版本合并和数据删除
5storefiles 通过不断的 compact 合并操作,逐渐形成越来越大的 storefile
6 单个 storefile 大小超过一定阈值之后,触发 spilt 操作,把当前的 region 切分成 2 个新的 region ,父 region 会下线,新切出的 2 个字 region 会被 hmaster 分配到相应的 regionserver 上,使得原先的一个 region 的压力的以分配到 2 个 region 上
读流程:
1client 访问 zookeeper ,查找 root 表,获取 meta 表的信息
2 从 meta 表中查找,获取存放的目标的 region 信息,从而找到对应的 regionserver
3 通过 regionserver 获取需要查询的数据
4regionserver 的内存分为 memstore 和 blockcache 两部分, memstore 主要用于写数据, blockcache 主要用于读数据,请求先到 memstore 中查数据,查不到就在 blockcache 在查,再查不到就会到 storefile 上读,并把读的结果放入 blockcache
寻址过程: client-->Zookeeper-->-ROOT- 表 -->.META. 表 -->RegionServer-->Region-->client

Rowkey :行键,和 mysql 的主键一样,不允许重复,按照字典顺序排列
Columnfamily :列簇
Column :列
Timestamp: 时间戳,默认显示最新的时间戳
Version :版本号,记录数据的版本
Cell: 单元格,一个 key 一个 value
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913892/viewspace-2653561/,如需转载,请注明出处,否则将追究法律责任。