大数据技术之HBase原理与实战归纳分享-中

@
目录

  • 底层原理
    • Master架构
    • RegionServer架构
    • Region/Store/StoreFile/Hfile之间的关系
    • 写流程
    • 写缓存刷写
    • 读流程
    • 文件合并
    • 分区
  • JAVA API编程
    • 准备
    • 示例
底层原理Master架构
大数据技术之HBase原理与实战归纳分享-中

文章插图
  • Meta 表格介绍:全称 hbase:meta,只是在 list 命令中被过滤掉了,本质上和 HBase 的其他表格一样,不要去改这个表 。
  • RowKey:([table],[region start key],[region id]) 即 表名,region 起始位置和 regionID 。
  • 列:
    • info:regioninfo 为 region 信息,存储一个 HRegionInfo 对象 。
    • info:server 当前 region 所处的 RegionServer 信息,包含端口号 。
    • info:serverstartcode 当前 region 被分到 RegionServer 的起始时间 。
    • 如果一个表处于切分的过程中,即 region 切分,还会多出两列 info:splitA 和 info:splitB,存储值也是 HRegionInfo 对象,拆分结束后,删除这两列 。
  • 注意:在客户端对元数据进行操作的时候才会连接 master,如果对数据进行读写,直接连接zookeeper 读取目录/hbase/meta-region-server 节点信息,会记录 meta 表格的位置 。直接读取即可,不需要访问 master,这样可以减轻 master 的压力,相当于 master 专注 meta 表的写操作,客户端可直接读取 meta 表 。
  • 在 HBase 的 2.3 版本更新了一种新模式:Master Registry 。客户端可以访问 master 来读取meta 表信息 。加大了 master 的压力,减轻了 zookeeper 的压力 。
  • HMaster通常部署在NameNode上,HMaster中主要有负载均衡器,元数据表管理器,预写日志管理器(MasterProcWAL) 。
RegionServer架构
大数据技术之HBase原理与实战归纳分享-中

文章插图
  • MemStore:写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile,写入到对应的文件夹 store 中 。
  • WAL:由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据保存在内存中会有很高的概率导致数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中,然后再写入 MemStore 中 。所以在系统出现故障的时候,数据可以通过这个日志文件重建 。
  • BlockCache:读缓存,每次查询出的数据会缓存在 BlockCache 中,方便下次查询 。
Region/Store/StoreFile/Hfile之间的关系
大数据技术之HBase原理与实战归纳分享-中

文章插图