HBase 高级架构解析

总体框架


使用 ZooKeeper 框架协助 RegionServer(相似于HDFS的nodemanager)用户请求从 Client 到 Zookeeper 进行判断数据属于哪个 Region 辅助 HBase 进行数据存储/检索
主节点 Master (相似HDFS的ResourceManager) 管理 RegionServer ,数据不通过 Masterjava

物理模型

  • Table中多有行按照RowKey字典顺序排列
  • Table在行的方向上分割为多个Region

  • 随着Region大小的增大,达到必定阈值的时候,会分裂成两个新的Region
  • Table在行的方向上分割为多个Region

数据写入流程:put

  • Wal(Write Ahead Log) 预写日志(HLog)文件(HDFS/Hbase/目录下):这个是修改日志,不是整个文件?就像git同样?
  • memStore
  • storeFile

完整架构图HBase Architecture

数据存储

客户端 -> Zookeeper -> 获得 hbase:meta 表的 RegionServer -> 客户端从 meta 表中查得用户所需表的 RegionServer -> put/get/scan ...node

1.nameSpace:相似于 RDBMS 中 Database 概念,用户建立的表在 default namespace 下 ,系统自带表在 hbase namespace 下

hbase:meta 表存储了 HBase 中全部(本身除外)表的元数据信息
hbase:namespace 表存储了 namespace 信息
# 显示全部 namespace
> list_namespace

# 显示 namespace 下的表
> list_namespace_tables 'hbase'

# 使用 hbase namespace 下的表 hbase:meta
> scan 'hbase:meta'

2.表数据存储位置:hdfs://HBase/data/

HFile:HBase中KeyValue数据的存储格式,是 Hadoop 的二进制文件格式,是 StoreFile 的轻量级包装
HLog File:(Write Ahead Log) 预写日志(HLog)文件,在物理上是 Hadoop 的 Sequence File

3.预写日志文件目录:hdfs://HBase/wals/

4.Zookeeper 做用:用户申请数据首先通过 Zookeeper,Zokkeeper 中存储了 mate 所在的 Region 被哪个 RegionServer 管理的信息。Hmaster 管理 RegionServer 的信息存储在 Zookeeper 中

# 查看mate-server(bin/zkCli.sh)
$ get /hbase/meta-region-server

# 查看 RegionServer 信息(分文件夹存储)
$ ls /hbase/rs

人工干预数据的读写

# 从 memStore 到 Hfile
$ flush 'tablename'

# 合并小文件
$ compact 'tablename'

各个组件的功能和做用(参考JAVA API 导包)

Client

  • 整个集群的访问入口
  • 使用 HBase RPC(Remote Procedure Call Protocol)——远程过程调用协议 与 HMAster 和 HRegionServer 进行通讯
  • 与 HMAster 进行通讯,进行管理类操做(建立表,删除表...)
  • 与 HRegionServer 进行数据读写类操做(put get ...)
  • 包含访问 HBase 的接口,并维护 cache(缓存) 来加快对 HBase 的访问

Zookeeper

  • 经过 Zookeeper 协做,容许开启/存在多个 HMaster 但 Zookeeper 经过 Master Election 保证了任什么时候候,集群中只有一个 HMaster
  • 保存了全部的 HRegion 的寻址入口(Client 访问 Zookeeper 找到 Region 的信息)
  • 实时监控 HRegionServer 的上线和下线信息,并通知给 HMaster
  • 存储了 HBase 的全部表信息的元数据信息 namespace 的信息
  • 存储了 meta 表和 HMaster 的地址

HMaster

  • HMaster 不存在单点问题,HBase 中能够启动多个 HMaster (详情请看bin/master-backup.sh)经过 Zookeeper 经过 Master Election 保证了任什么时候候,集群中只有一个 HMaster 在运行,负责 Table 和 Region 的管理工做
  • 管理用户对 Table 的增删改查操做
  • 管理 HRegionServer 的负载平衡,调整 Region 分布
  • Region Split 后,负责新 Region 的分布
  • 在 HRegionServer 停机后,负责失效 HRegionServer 的 Region 转移工做

HRegionServer

  • 维护 HRegion 处理 HRegion 的 IO 请求,向 HDFS 文件系统中读写数据
  • 负责 Region Split ,以后再交给 HMaster 调整 Region 分布
  • 负责数据的访问过程,数据不通过 HMater ,HMaster 仅仅维护 Table 和 Region 的元数据信息,负载很低<<寻址访问 Zookeeper 和 HRegionServer ,数据访问 HRegionServer >>(重点)
相关文章
相关标签/搜索