ITPub博客

首页 > 大数据 > > 好程序员大数据学习路线Hbase总结

好程序员大数据学习路线Hbase总结

作者:浪花小雨滴 时间:2020-05-18 17:47:55 0 删除 编辑

好程序员大数据学习路线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/,如需转载,请注明出处,否则将追究法律责任。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3159410/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40093