提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
—HBase学习笔记
前言
本文是学习hbase,对大佬的文章进行摘抄笔记,大佬的原文链接在此处》》》原文链接
提示:以下是本篇文章正文内容,下面案例可供参考
一、HBase是什么?
HBase是列式NoSql数据库。Hbase中仅支持的数据类型为byte[];它主要用来存储结构化和半结构化的松散数据。可以理解为一个非常大的分布式HashMap,在hadoop集群的各个节点中以行主键+列族(包含列)+时间戳为键,以储存的值为值。其与hadoop一样通过不断增加廉价的商用服务器,来增加计算和存储能力。
二、HBase 架构
HBase采用Master/Slave架构,属于Hadoop生态圈,依附于ZooKeeper集群的协调一致性服务,由HMaster节点和HRegionServer节点组成;它将数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode。
主要结构
Client:客户端
ZooKeeper:集群协调一致性服务
HMaster:
HRegionServer:
1.Client客户端
META:记录了用户表的Region信息,.META.可以有多个regoin
ROOT:记录了.META.表的Region信息,-ROOT-只有一个region
注:region是HBase的数据管理的基本单位,这里可以简单理解成存储位置。Zookeeper中记录了-ROOT-表的location
Client 客户端访问HBase 方式 :
Client 访问用户数据前需要首先访问 ZooKeeper,找到ROOT表的 Region 所在的服务器位置,然后访问ROOT表,接着HRegionServer中根据请求的Root表和RowKey读取META表位置,最后才能找到用户数据的服务器位置,并访问META表的内容。在这期间会有多次网络操作,不过 Client 端会做 cache 缓存。
2.ZooKeeper
ZooKeeper集群协调一致性服务可以分为如下三种功能:
- 协调监督保障 HMaster 高可用:只有一个HMaster,如果HMaster异常或死亡,则通过Failover竞·争机制产生新的HMaster。选举HMaster,类似 ZooKeeper的选举机制
- 监控HRegionServer的状态:当HRegionServer异常时,HMaster会通过Zookeeper收到HRegionServer上下线状态
- 元数据入口地址:ROOT表在哪台服务器上,ROOT这张表的位置信息;存储 HBase 的 Schema,包括有哪些 Table,每个 Table 有哪些 Column Family
3.HMaster
HMaster节点的功能如下:
- 故障转移:监控HRegionServer,当某HRegionServer异常或死亡,将HRegion转移到其他HRegionServer上执行(通过与zookeeper的Heartbeat和监听ZooKeeper中的状态,并不直接和slave相连)
- 新HRegion分配:HRegion分裂后的重新分配
- 元数据变更(Admin职能):增删改 Table 操作
- 数据负载均衡:空闲时在HRegionServer之间迁移HRegion
- 发送自己位置给Client:借Zookeeper实现
4.HRegionServer
HRegionServer节点的功能总结如下:
- 处理分配的HRegion
- 刷新Cache(读写缓存)到HDFS
- 维护WAL(Write Ahead Log, HLog)(高容错)
- 处理来之用户Clinet的读写请求
- 处理HRegion变大后的拆分
- 负责StoreFile的合并工作
总结
Client客户端沟通HBase,ZooKeeper协调一致性,HMaster管理元数据和region,HRegionServer数据管理和读写。